src/p4l/mapping/__init__.py
changeset 142 c365a6e23a56
parent 131 f1854630734f
child 143 b74f0e14d50f
equal deleted inserted replaced
141:740d595d6728 142:c365a6e23a56
    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')