src/p4l/api/serializers.py
changeset 16 19fe06edb58d
child 47 b07f8d11f2b8
equal deleted inserted replaced
15:be595253ced5 16:19fe06edb58d
       
     1 # -*- coding: utf-8 -*-
       
     2 '''
       
     3 Created on Sep 2, 2013
       
     4 
       
     5 @author: ymh
       
     6 '''
       
     7 from p4l.models import (Record, Title, Issn, Isbn, DocumentCode, Abstract, 
       
     8     AddedTitle, TitleMainDocument, Imprint, Collation, VolumeIssue, Periodical, 
       
     9     Meeting, SubjectMeeting, Serie, Url)
       
    10 from rest_framework import serializers
       
    11 
       
    12 class BaseTitleSerializer(serializers.ModelSerializer):
       
    13     class Meta:
       
    14         fields = ('title','lang')
       
    15     
       
    16 class TitleSerializer(BaseTitleSerializer):    
       
    17     class Meta(BaseTitleSerializer.Meta):
       
    18         model = Title
       
    19 
       
    20 class AddedTitleSerializer(BaseTitleSerializer):    
       
    21     class Meta(BaseTitleSerializer.Meta):
       
    22         model = AddedTitle
       
    23 
       
    24 class TitleMainDocumentSerializer(BaseTitleSerializer):    
       
    25     class Meta(BaseTitleSerializer.Meta):
       
    26         model = TitleMainDocument
       
    27 
       
    28 class IssnSerializer(serializers.ModelSerializer):
       
    29     class Meta:
       
    30         model = Issn
       
    31         fields = ('issn','lang')
       
    32 
       
    33 class IsbnSerializer(serializers.ModelSerializer):
       
    34     class Meta:
       
    35         model = Isbn
       
    36         fields = ('isbn','lang')
       
    37 
       
    38 class DocumentCodeSerializer(serializers.ModelSerializer):
       
    39     class Meta:
       
    40         model = DocumentCode
       
    41         fields = ('documentCode','lang')
       
    42         
       
    43 class AbstractSerializer(serializers.ModelSerializer):
       
    44     class Meta:
       
    45         model = Abstract
       
    46         fields = ('abstract', 'lang')
       
    47 
       
    48 class ImprintSerializer(serializers.ModelSerializer):
       
    49     class Meta:
       
    50         model = Imprint
       
    51         fields = ('imprintCity','publisher', 'imprintDate', 'lang')
       
    52 
       
    53 class CollationSerializer(serializers.ModelSerializer):
       
    54     class Meta:
       
    55         model = Collation
       
    56         fields = ('collation', 'lang')
       
    57 
       
    58 class VolumeIssueSerializer(serializers.ModelSerializer):
       
    59     class Meta:
       
    60         model = VolumeIssue
       
    61         fields = ('volume', 'number', 'lang')
       
    62 
       
    63 class PeriodicalSerializer(serializers.ModelSerializer):
       
    64     class Meta:
       
    65         model = Periodical
       
    66         fields = ('label', 'lang')
       
    67 
       
    68 class MeetingSerializer(serializers.ModelSerializer):
       
    69     class Meta:
       
    70         model = Meeting
       
    71         fields = ('label','meetingNumber', 'meetingPlace','meetingDate', 'meetingYear', 'lang')
       
    72 
       
    73 class SubjectMeetingSerializer(serializers.ModelSerializer):
       
    74     class Meta:
       
    75         model = SubjectMeeting
       
    76         fields = ('label','meetingNumber', 'meetingPlace','meetingDate', 'meetingYear')
       
    77 
       
    78 class SerieSerializer(serializers.ModelSerializer):
       
    79     class Meta:
       
    80         model = Serie
       
    81         fields = ('title', 'volume', 'lang')
       
    82 
       
    83 class UrlSerializer(serializers.ModelSerializer):
       
    84     class Meta:
       
    85         model = Url
       
    86         fields = ('address', 'display', 'accessLevel')
       
    87 
       
    88 class RecordSerializer(serializers.ModelSerializer):
       
    89     '''
       
    90     Serializer for record
       
    91     '''
       
    92 
       
    93     language = serializers.SlugRelatedField(read_only=False, slug_field='uri') 
       
    94     other_languages = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri')
       
    95     subjects = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri')
       
    96     themes = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri')
       
    97     countries = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri')
       
    98     projectNames = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri')
       
    99     subjectCorporateBodies = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri') 
       
   100     corporateAuthors = serializers.SlugRelatedField(many=True, read_only=False, slug_field='uri')
       
   101     titles = TitleSerializer(many=True, read_only=False)
       
   102     addedTitles = AddedTitleSerializer(many=True, read_only=False)
       
   103     issns = IssnSerializer(many=True, read_only=False)
       
   104     isbns = IsbnSerializer(many=True, read_only=False)
       
   105     documentCodes = DocumentCodeSerializer(many=True, read_only=False)
       
   106     abstracts = AbstractSerializer(many=True, read_only=False)
       
   107     titlesMainDocument = TitleMainDocumentSerializer(many=True, read_only=False)
       
   108     imprints = ImprintSerializer(many=True, read_only=False)
       
   109     collations = CollationSerializer(many=True, read_only=False)    
       
   110     volumeIssues = VolumeIssueSerializer(many=True, read_only=False)
       
   111     periodicals = PeriodicalSerializer(many=True, read_only=False)
       
   112     meetings = MeetingSerializer(many=True, read_only=False)
       
   113     subjectMeetings = SubjectMeetingSerializer(many=True, read_only=False)
       
   114     series = SerieSerializer(many=True, read_only=False)
       
   115     authors = serializers.SlugRelatedField(many=True, read_only=False, slug_field="name")
       
   116     subjectPersons = serializers.SlugRelatedField(many=True, read_only=False, slug_field="name")
       
   117     urls = UrlSerializer(many=True, read_only=False)
       
   118 
       
   119     class Meta:
       
   120         model = Record
       
   121         depth = 1
       
   122         read_only_fields = ('identifier', 'uri')
       
   123         fields = ("identifier", "uri", "language", "otherLanguages", "notes",
       
   124                   "editionStatement", "recordType","isDocumentPart",
       
   125                   "isMultilingual","subjects", "themes", "countries",
       
   126                   "projectNames", "subjectCorporateBodies", "corporateAuthors",
       
   127                   "titles", "issns", "isbns", "documentCodes", "abstracts",
       
   128                   "addedTitles", "titlesMainDocument", "imprints",
       
   129                   "collations", "volumeIssues", "periodicals", "meetings",
       
   130                   "subjectMeetings", "series", "authors", "subjectPersons",
       
   131                   "urls")        
       
   132 
       
   133 
       
   134