src/p4l/mapping/__init__.py
changeset 142 c365a6e23a56
parent 131 f1854630734f
child 143 b74f0e14d50f
--- a/src/p4l/mapping/__init__.py	Sat Oct 05 21:00:59 2013 +0200
+++ b/src/p4l/mapping/__init__.py	Mon Oct 07 14:28:31 2013 +0200
@@ -32,12 +32,19 @@
 #
 
 from rdflib.namespace import RDFS
+from rdflib.term import URIRef, Literal
 
 from p4l.mapping.constants import IIEP, DCT
 from p4l.mapping.serializers import (ModelSerializer, SimpleFieldSerializer, 
     BooleanFieldSerializer, RelatedFieldSerializer)
 
 
+def uri_convert(s):
+    try:
+        return URIRef(unicode(s)) if s else None
+    except:
+        return Literal(unicode(s)) if s else None
+
 class ImprintSerializer(ModelSerializer):
     
     imprintCity = SimpleFieldSerializer(predicate=IIEP.imprintCity, lang_field='lang')
@@ -82,20 +89,20 @@
     notes = SimpleFieldSerializer(predicate=IIEP.notes)
     editionStatement = SimpleFieldSerializer(predicate=IIEP.editionStatement)
     corporateAuthorLabel = SimpleFieldSerializer(predicate=IIEP.corporateAuthorLabel)
-    recordType = SimpleFieldSerializer(predicate=DCT.type)
+    recordType = SimpleFieldSerializer(predicate=DCT.type, convert=uri_convert)
     isDocumentPart = BooleanFieldSerializer(predicate=IIEP.isDocumentPart)
     hidden = BooleanFieldSerializer(predicate=IIEP.hidden)
     restricted = BooleanFieldSerializer(predicate=IIEP.restricted)    
 
-    language = RelatedFieldSerializer(many=False, value_field='uri', predicate=DCT.language) 
-    otherLanguages = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.otherLanguage)
-    subjects = RelatedFieldSerializer(many=True, value_field='uri', predicate=DCT.subject)
-    themes = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.theme)
-    countries = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.country)
-    projectNames = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.projectName)
-    subjectCorporateBodies = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.subjectCorporateBody) 
-    corporateAuthors = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.corporateAuthor)
-    audiences = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.audience)
+    language = RelatedFieldSerializer(many=False, value_field='uri', predicate=DCT.language, convert=uri_convert) 
+    otherLanguages = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.otherLanguage, convert=uri_convert)
+    subjects = RelatedFieldSerializer(many=True, value_field='uri', predicate=DCT.subject, convert=uri_convert)
+    themes = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.theme, convert=uri_convert)
+    countries = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.country, convert=uri_convert)
+    projectNames = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.projectName, convert=uri_convert)
+    subjectCorporateBodies = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.subjectCorporateBody, convert=uri_convert) 
+    corporateAuthors = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.corporateAuthor, convert=uri_convert)
+    audiences = RelatedFieldSerializer(many=True, value_field='uri', predicate=IIEP.audience, convert=uri_convert)
     
     isbns = RelatedFieldSerializer(many=True, value_field='isbn', predicate=IIEP.isbn, lang_field='lang')
     issns = RelatedFieldSerializer(many=True, value_field='issn', predicate=IIEP.issn, lang_field='lang')