diff --git a/app/pulp/app/serializers/__init__.py b/app/pulp/app/serializers/__init__.py index 752815a844..ee7f8638e0 100644 --- a/app/pulp/app/serializers/__init__.py +++ b/app/pulp/app/serializers/__init__.py @@ -3,10 +3,11 @@ # - all can import directly from base and fields if needed from pulp.app.serializers.base import (DetailRelatedField, GenericKeyValueRelatedField, # NOQA ModelSerializer, MasterModelSerializer, viewset_for_model) # NOQA -from pulp.app.serializers.fields import RepositoryNestedIdentityField, RepositoryRelatedField # NOQA +from pulp.app.serializers.fields import (ContentRelatedField, RepositoryNestedIdentityField, # NOQA + RepositoryRelatedField) # NOQA from pulp.app.serializers.generic import (ConfigKeyValueRelatedField, # NOQA NotesKeyValueRelatedField) # NOQA -from pulp.app.serializers.content import ContentSerializer, ContentRelatedField # NOQA from pulp.app.serializers.consumer import ConsumerSerializer # NOQA +from pulp.app.serializers.content import ContentSerializer, ArtifactSerializer # NOQA from pulp.app.serializers.repository import ImporterSerializer, RepositorySerializer # NOQA from pulp.app.serializers.task import TaskSerializer, WorkerSerializer # NOQA diff --git a/app/pulp/app/serializers/content.py b/app/pulp/app/serializers/content.py index f2cc5b913b..bee8152a01 100644 --- a/app/pulp/app/serializers/content.py +++ b/app/pulp/app/serializers/content.py @@ -1,18 +1,90 @@ +from rest_framework import serializers + from pulp.app import models -from pulp.app.serializers import base, fields +from pulp.app.serializers import base, fields, generic class ContentSerializer(base.MasterModelSerializer): _href = base.DetailIdentityField() repositories = fields.RepositoryRelatedField(many=True) + notes = generic.NotesKeyValueRelatedField() + artifacts = serializers.HyperlinkedRelatedField( + help_text="The associated files.", + many=True, + read_only=True, + view_name='artifacts-detail' + ) class Meta: model = models.Content - fields = base.MasterModelSerializer.Meta.fields + ('repositories',) + fields = base.MasterModelSerializer.Meta.fields + ('repositories', 'notes', 'artifacts') + + +class ArtifactSerializer(base.ModelSerializer): + file = serializers.FileField( + help_text="The stored file.", + read_only=True + ) + + downloaded = serializers.BooleanField( + help_text="An indication that the associated file has been downloaded.", + read_only=True + ) + + requested = serializers.BooleanField( + help_text="An indication that the associated file has been requested by a client.", + read_only=True + ) + + relative_path = serializers.CharField( + help_text="The relative path of the artifact which is incorporated into the storage and" + " published paths.", + read_only=True + ) + + size = serializers.IntegerField( + help_text="The size of the file in bytes.", + read_only=True + ) + md5 = serializers.CharField( + help_text="The MD5 checksum of the file if available.", + read_only=True, + required=False + ) -class ContentRelatedField(base.DetailRelatedField): - """ - Serializer Field for use when relating to Content Detail Models - """ - queryset = models.Content.objects.all() + sha1 = serializers.CharField( + help_text="The SHA-1 checksum of the file if available.", + read_only=True, + required=False + ) + + sha224 = serializers.CharField( + help_text="The SHA-224 checksum of the file if available.", + read_only=True, + required=False + ) + + sha256 = serializers.CharField( + help_text="The SHA-256 checksum of the file if available.", + read_only=True, + required=False + ) + + sha384 = serializers.CharField( + help_text="The SHA-384 checksum of the file if available.", + read_only=True, + required=False + ) + + sha512 = serializers.CharField( + help_text="The SHA-512 checksum of the file if available.", + read_only=True, + required=False + ) + + class Meta: + model = models.Artifact + fields = base.ModelSerializer.Meta.fields + ('file', 'downloaded', 'requested', + 'relative_path', 'size', 'md5', 'sha1', + 'sha224', 'sha256', 'sha384', 'sha512') diff --git a/app/pulp/app/serializers/fields.py b/app/pulp/app/serializers/fields.py index 80e6a02c19..ed97b7bf7d 100644 --- a/app/pulp/app/serializers/fields.py +++ b/app/pulp/app/serializers/fields.py @@ -2,6 +2,14 @@ from rest_framework.reverse import reverse from pulp.app import models +from pulp.app.serializers import DetailRelatedField + + +class ContentRelatedField(DetailRelatedField): + """ + Serializer Field for use when relating to Content Detail Models + """ + queryset = models.Content.objects.all() class RepositoryRelatedField(serializers.HyperlinkedRelatedField):