diff MetaDataFolder.py @ 12:7f0e2b656e5c

more work for non-bib metadata
author casties
date Fri, 29 Jul 2011 18:28:06 +0200
parents a29665fa9c62
children 281d223aa361
line wrap: on
line diff
--- a/MetaDataFolder.py	Fri Jul 29 14:45:13 2011 +0200
+++ b/MetaDataFolder.py	Fri Jul 29 18:28:06 2011 +0200
@@ -6,8 +6,11 @@
 import urlparse
 import logging
 
+import xml.etree.ElementTree as ET
+
 from MetaDataMapping import MetaDataMapping
 from MetaData import MetaData
+from SrvTxtUtils import getHttpData, getText
 
 def normalizeBibField(bt, underscore=True):
     """returns normalised bib type for looking up mappings"""
@@ -77,18 +80,22 @@
         {'label':'Main Config','action':'changeMetaDataFolderForm'},
         )
 
-    def __init__(self,id,title='',metaDataServerUrl=''):
+    metaDataServerUrl = "http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Texter?fn=%s"
+    """URL of metadata server. %s replaced by file path."""
+
+    def __init__(self,id,title='',metaDataServerUrl=None):
         """initialize a new instance"""
         self.id = id
         self.title = title
-        self.metaDataServerUrl = metaDataServerUrl
+        if metaDataServerUrl:
+            self.metaDataServerUrl = metaDataServerUrl
 
         
     def getMDFromPathOrUrl(self,path):
         """returns contents of metadata file from server as text"""
         if not path:
             logging.error("getMDFromPathOrUrl: empty path!")
-            return ""
+            return None
         
         parsedurl = urlparse.urlparse(path)
         if parsedurl[0] != "":
@@ -106,6 +113,15 @@
         md = getHttpData(url)
         return md
 
+    def getDomFromPathOrUrl(self, path):
+        """returns DOM of metadata file at given path"""
+        dom = None
+        data = self.getMDFromPathOrUrl(path)
+        if data:
+            dom = ET.fromstring(data)
+            
+        return dom
+
     def getXmlPathData(self, xmlpath, path=None, dom=None):
         """returns contents of element at xmlpath as dict"""
         logging.error("getXmlPathData(%s)"%xmlpath)
@@ -120,10 +136,18 @@
             logging.error("getXmlPathData: MetaData element at '%s' not found!"%xmlpath)
             return None
 
+    def getResourceData(self, path=None, dom=None):
+        """returns contents of resource tag as dict"""
+        return self.getXmlPathData('resource', path=path, dom=dom)
+
     def getTexttoolData(self, path=None, dom=None):
         """returns contents of texttool tag as dict"""
         return self.getXmlPathData('resource/meta/texttool', path=path, dom=dom)
 
+    def getAccessData(self, path=None, dom=None):
+        """returns contents of access tag as dict"""
+        return self.getXmlPathData('resource/meta/access-conditions/access', path=path, dom=dom)
+    
     def getBibData(self, path=None, dom=None):
         """returns contents of bib tag as dict"""
         return self.resource.meta.bib.getData(path=path, dom=dom)