30 # The fact that you are presently reading this means that you have had |
30 # The fact that you are presently reading this means that you have had |
31 # knowledge of the CeCILL-B license and that you accept its terms. |
31 # knowledge of the CeCILL-B license and that you accept its terms. |
32 # |
32 # |
33 |
33 |
34 from rdflib.namespace import RDFS |
34 from rdflib.namespace import RDFS |
|
35 from rdflib.term import URIRef, Literal |
35 |
36 |
36 from p4l.mapping.constants import IIEP, DCT |
37 from p4l.mapping.constants import IIEP, DCT |
37 from p4l.mapping.serializers import (ModelSerializer, SimpleFieldSerializer, |
38 from p4l.mapping.serializers import (ModelSerializer, SimpleFieldSerializer, |
38 BooleanFieldSerializer, RelatedFieldSerializer) |
39 BooleanFieldSerializer, RelatedFieldSerializer) |
39 |
40 |
|
41 |
|
42 def uri_convert(s): |
|
43 try: |
|
44 return URIRef(unicode(s)) if s else None |
|
45 except: |
|
46 return Literal(unicode(s)) if s else None |
40 |
47 |
41 class ImprintSerializer(ModelSerializer): |
48 class ImprintSerializer(ModelSerializer): |
42 |
49 |
43 imprintCity = SimpleFieldSerializer(predicate=IIEP.imprintCity, lang_field='lang') |
50 imprintCity = SimpleFieldSerializer(predicate=IIEP.imprintCity, lang_field='lang') |
44 publisher = SimpleFieldSerializer(predicate=IIEP.publisher, lang_field='lang') |
51 publisher = SimpleFieldSerializer(predicate=IIEP.publisher, lang_field='lang') |
80 |
87 |
81 identifier = SimpleFieldSerializer(predicate=DCT.identifier) |
88 identifier = SimpleFieldSerializer(predicate=DCT.identifier) |
82 notes = SimpleFieldSerializer(predicate=IIEP.notes) |
89 notes = SimpleFieldSerializer(predicate=IIEP.notes) |
83 editionStatement = SimpleFieldSerializer(predicate=IIEP.editionStatement) |
90 editionStatement = SimpleFieldSerializer(predicate=IIEP.editionStatement) |
84 corporateAuthorLabel = SimpleFieldSerializer(predicate=IIEP.corporateAuthorLabel) |
91 corporateAuthorLabel = SimpleFieldSerializer(predicate=IIEP.corporateAuthorLabel) |
85 recordType = SimpleFieldSerializer(predicate=DCT.type) |
92 recordType = SimpleFieldSerializer(predicate=DCT.type, convert=uri_convert) |
86 isDocumentPart = BooleanFieldSerializer(predicate=IIEP.isDocumentPart) |
93 isDocumentPart = BooleanFieldSerializer(predicate=IIEP.isDocumentPart) |
87 hidden = BooleanFieldSerializer(predicate=IIEP.hidden) |
94 hidden = BooleanFieldSerializer(predicate=IIEP.hidden) |
88 restricted = BooleanFieldSerializer(predicate=IIEP.restricted) |
95 restricted = BooleanFieldSerializer(predicate=IIEP.restricted) |
89 |
96 |
90 language = RelatedFieldSerializer(many=False, value_field='uri', predicate=DCT.language) |
97 language = RelatedFieldSerializer(many=False, value_field='uri', predicate=DCT.language, convert=uri_convert) |
91 otherLanguages = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.otherLanguage) |
98 otherLanguages = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.otherLanguage, convert=uri_convert) |
92 subjects = RelatedFieldSerializer(many=True, value_field='uri', predicate=DCT.subject) |
99 subjects = RelatedFieldSerializer(many=True, value_field='uri', predicate=DCT.subject, convert=uri_convert) |
93 themes = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.theme) |
100 themes = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.theme, convert=uri_convert) |
94 countries = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.country) |
101 countries = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.country, convert=uri_convert) |
95 projectNames = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.projectName) |
102 projectNames = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.projectName, convert=uri_convert) |
96 subjectCorporateBodies = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.subjectCorporateBody) |
103 subjectCorporateBodies = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.subjectCorporateBody, convert=uri_convert) |
97 corporateAuthors = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.corporateAuthor) |
104 corporateAuthors = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.corporateAuthor, convert=uri_convert) |
98 audiences = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.audience) |
105 audiences = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.audience, convert=uri_convert) |
99 |
106 |
100 isbns = RelatedFieldSerializer(many=True, value_field='isbn', predicate=IIEP.isbn, lang_field='lang') |
107 isbns = RelatedFieldSerializer(many=True, value_field='isbn', predicate=IIEP.isbn, lang_field='lang') |
101 issns = RelatedFieldSerializer(many=True, value_field='issn', predicate=IIEP.issn, lang_field='lang') |
108 issns = RelatedFieldSerializer(many=True, value_field='issn', predicate=IIEP.issn, lang_field='lang') |
102 collations = RelatedFieldSerializer(many=True, value_field='collation', predicate=IIEP.collation, lang_field='lang') |
109 collations = RelatedFieldSerializer(many=True, value_field='collation', predicate=IIEP.collation, lang_field='lang') |
103 documentCodes = RelatedFieldSerializer(many=True, value_field='documentCode', predicate=IIEP.documentCode, lang_field='lang') |
110 documentCodes = RelatedFieldSerializer(many=True, value_field='documentCode', predicate=IIEP.documentCode, lang_field='lang') |