|
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 |