move WL-specific stuff to WLURI
[librarian.git] / librarian / dcparser.py
index 5492f7a..ae8466c 100644 (file)
@@ -141,7 +141,7 @@ class BookInfo(object):
         Field( DCNS('publisher'), 'publisher'),
         Field( DCNS('source'), 'source_name', required=False),
         Field( DCNS('source.URL'), 'source_url', required=False),
-        Field( DCNS('identifier.url'), 'url'),
+        Field( DCNS('identifier.url'), 'url', WLURI),
         Field( DCNS('relation.hasPart'), 'parts', multiple=True, required=False),
         Field( DCNS('rights.license'), 'license', required=False),
         Field( DCNS('rights'), 'license_description'),
@@ -149,10 +149,6 @@ class BookInfo(object):
         Field( DCNS('description'), 'description', required=False),
     )
 
-    @property
-    def slug(self):
-        return WLURI(self.url).slug
-
     @classmethod
     def from_string(cls, xml):
         from StringIO import StringIO
@@ -216,6 +212,11 @@ class BookInfo(object):
             self.fmap[field.name] = field
             if field.salias: self.fmap[field.salias] = field
 
+        self.validate()
+
+    def validate(self):
+        self.url.validate_language(self.language)
+
     def __getattribute__(self, name):
         try:
             field = object.__getattribute__(self, 'fmap')[name]