diff -r b31a67614f76 -r 88d675d5e27e src/p4l/api/serializers.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/p4l/api/serializers.py Mon Sep 02 16:27:06 2013 +0200 @@ -0,0 +1,134 @@ +# -*- coding: utf-8 -*- +''' +Created on Sep 2, 2013 + +@author: ymh +''' +from p4l.models import (Record, Title, Issn, Isbn, DocumentCode, Abstract, + AddedTitle, TitleMainDocument, Imprint, Collation, VolumeIssue, Periodical, + Meeting, SubjectMeeting, Serie, Url) +from rest_framework import serializers + +class BaseTitleSerializer(serializers.ModelSerializer): + class Meta: + fields = ('title','lang') + +class TitleSerializer(BaseTitleSerializer): + class Meta(BaseTitleSerializer.Meta): + model = Title + +class AddedTitleSerializer(BaseTitleSerializer): + class Meta(BaseTitleSerializer.Meta): + model = AddedTitle + +class TitleMainDocumentSerializer(BaseTitleSerializer): + class Meta(BaseTitleSerializer.Meta): + model = TitleMainDocument + +class IssnSerializer(serializers.ModelSerializer): + class Meta: + model = Issn + fields = ('issn','lang') + +class IsbnSerializer(serializers.ModelSerializer): + class Meta: + model = Isbn + fields = ('isbn','lang') + +class DocumentCodeSerializer(serializers.ModelSerializer): + class Meta: + model = DocumentCode + fields = ('documentCode','lang') + +class AbstractSerializer(serializers.ModelSerializer): + class Meta: + model = Abstract + fields = ('abstract', 'lang') + +class ImprintSerializer(serializers.ModelSerializer): + class Meta: + model = Imprint + fields = ('imprintCity','publisher', 'imprintDate', 'lang') + +class CollationSerializer(serializers.ModelSerializer): + class Meta: + model = Collation + fields = ('collation', 'lang') + +class VolumeIssueSerializer(serializers.ModelSerializer): + class Meta: + model = VolumeIssue + fields = ('volume', 'number', 'lang') + +class PeriodicalSerializer(serializers.ModelSerializer): + class Meta: + model = Periodical + fields = ('label', 'lang') + +class MeetingSerializer(serializers.ModelSerializer): + class Meta: + model = Meeting + fields = ('label','meetingNumber', 'meetingPlace','meetingDate', 'meetingYear', 'lang') + +class SubjectMeetingSerializer(serializers.ModelSerializer): + class Meta: + model = SubjectMeeting + fields = ('label','meetingNumber', 'meetingPlace','meetingDate', 'meetingYear') + +class SerieSerializer(serializers.ModelSerializer): + class Meta: + model = Serie + fields = ('title', 'volume', 'lang') + +class UrlSerializer(serializers.ModelSerializer): + class Meta: + model = Url + fields = ('address', 'display', 'accessLevel') + +class RecordSerializer(serializers.ModelSerializer): + ''' + Serializer for record + ''' + + language = serializers.SlugRelatedField(read_only=False, slug_field='uri') + other_languages = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri') + subjects = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri') + themes = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri') + countries = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri') + projectNames = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri') + subjectCorporateBodies = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri') + corporateAuthors = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri') + titles = TitleSerializer(many=True, read_only=False) + addedTitles = AddedTitleSerializer(many=True, read_only=False) + issns = IssnSerializer(many=True, read_only=False) + isbns = IsbnSerializer(many=True, read_only=False) + documentCodes = DocumentCodeSerializer(many=True, read_only=False) + abstracts = AbstractSerializer(many=True, read_only=False) + titlesMainDocument = TitleMainDocumentSerializer(many=True, read_only=False) + imprints = ImprintSerializer(many=True, read_only=False) + collations = CollationSerializer(many=True, read_only=False) + volumeIssues = VolumeIssueSerializer(many=True, read_only=False) + periodicals = PeriodicalSerializer(many=True, read_only=False) + meetings = MeetingSerializer(many=True, read_only=False) + subjectMeetings = SubjectMeetingSerializer(many=True, read_only=False) + series = SerieSerializer(many=True, read_only=False) + authors = serializers.SlugRelatedField(many=True, read_only=False, slug_field="name") + subjectPersons = serializers.SlugRelatedField(many=True, read_only=False, slug_field="name") + urls = UrlSerializer(many=True, read_only=False) + + class Meta: + model = Record + depth = 1 + read_only_fields = ('identifier', 'uri') + fields = ("identifier", "uri", "language", "otherLanguages", "notes", + "editionStatement", "recordType","isDocumentPart", + "isMultilingual","subjects", "themes", "countries", + "projectNames", "subjectCorporateBodies", "corporateAuthors", + "titles", "issns", "isbns", "documentCodes", "abstracts", + "addedTitles", "titlesMainDocument", "imprints", + "collations", "volumeIssues", "periodicals", "meetings", + "subjectMeetings", "series", "authors", "subjectPersons", + "urls") + + + \ No newline at end of file