Skip to content
This repository has been archived by the owner on Dec 7, 2022. It is now read-only.

Commit

Permalink
Finish content serializer and add one for artifact
Browse files Browse the repository at this point in the history
  • Loading branch information
goosemania committed Oct 27, 2016
1 parent debd56c commit e1c05dd
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 9 deletions.
5 changes: 3 additions & 2 deletions app/pulp/app/serializers/__init__.py
Expand Up @@ -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
86 changes: 79 additions & 7 deletions 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')
8 changes: 8 additions & 0 deletions app/pulp/app/serializers/fields.py
Expand Up @@ -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):
Expand Down

0 comments on commit e1c05dd

Please sign in to comment.