Dodanie informacji o licencji do strony "O projekcie".
[wolnelektury.git] / lib / librarian / dcparser.py
index 871ff3a..557509c 100644 (file)
@@ -117,6 +117,8 @@ class BookInfo(object):
         DC('source.URL')     : ('source_url', str_to_unicode),
         DC('identifier.url') : ('url', str_to_unicode),
         DC('relation.hasPart') : ('parts', str_to_unicode_list),
+        DC('rights.license') : ('license', str_to_unicode),
+        DC('rights')         : ('license_description', str_to_unicode), 
     }
 
     @classmethod
@@ -134,6 +136,8 @@ class BookInfo(object):
             raise ParseError(e)
 
         description = tree.find('//' + book_info.RDF('Description'))
+        book_info.wiki_url = description.get(cls.RDF('about'), None)
+        
         if description is None:
             raise ParseError('no Description tag found in document')
         
@@ -157,6 +161,9 @@ class BookInfo(object):
         root = etree.Element(self.RDF('RDF'))
         description = etree.SubElement(root, self.RDF('Description'))
         
+        if self.wiki_url:
+            description.set(self.RDF('about'), self.wiki_url)
+        
         for tag, (attribute, converter) in self.mapping.iteritems():
             if hasattr(self, attribute):
                 e = etree.Element(tag)
@@ -165,6 +172,17 @@ class BookInfo(object):
         
         return unicode(etree.tostring(root, 'utf-8'), 'utf-8')
 
+    def to_dict(self):
+        etree._namespace_map[str(self.RDF)] = 'rdf'
+        etree._namespace_map[str(self.DC)] = 'dc'
+        
+        result = {'about': self.wiki_url}
+        for tag, (attribute, converter) in self.mapping.iteritems():
+            if hasattr(self, attribute):
+                result[attribute] = unicode(getattr(self, attribute))
+        
+        return result
+
 
 def parse(file_name):
     return BookInfo.from_file(file_name)