Mercurial > hg > MetaDataProvider
comparison 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 |
comparison
equal
deleted
inserted
replaced
11:a29665fa9c62 | 12:7f0e2b656e5c |
---|---|
4 from AccessControl import ClassSecurityInfo | 4 from AccessControl import ClassSecurityInfo |
5 import os.path | 5 import os.path |
6 import urlparse | 6 import urlparse |
7 import logging | 7 import logging |
8 | 8 |
9 import xml.etree.ElementTree as ET | |
10 | |
9 from MetaDataMapping import MetaDataMapping | 11 from MetaDataMapping import MetaDataMapping |
10 from MetaData import MetaData | 12 from MetaData import MetaData |
13 from SrvTxtUtils import getHttpData, getText | |
11 | 14 |
12 def normalizeBibField(bt, underscore=True): | 15 def normalizeBibField(bt, underscore=True): |
13 """returns normalised bib type for looking up mappings""" | 16 """returns normalised bib type for looking up mappings""" |
14 bt = bt.strip().replace(' ', '-').lower() | 17 bt = bt.strip().replace(' ', '-').lower() |
15 if underscore: | 18 if underscore: |
75 security=ClassSecurityInfo() | 78 security=ClassSecurityInfo() |
76 manage_options = Folder.manage_options+( | 79 manage_options = Folder.manage_options+( |
77 {'label':'Main Config','action':'changeMetaDataFolderForm'}, | 80 {'label':'Main Config','action':'changeMetaDataFolderForm'}, |
78 ) | 81 ) |
79 | 82 |
80 def __init__(self,id,title='',metaDataServerUrl=''): | 83 metaDataServerUrl = "http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Texter?fn=%s" |
84 """URL of metadata server. %s replaced by file path.""" | |
85 | |
86 def __init__(self,id,title='',metaDataServerUrl=None): | |
81 """initialize a new instance""" | 87 """initialize a new instance""" |
82 self.id = id | 88 self.id = id |
83 self.title = title | 89 self.title = title |
84 self.metaDataServerUrl = metaDataServerUrl | 90 if metaDataServerUrl: |
91 self.metaDataServerUrl = metaDataServerUrl | |
85 | 92 |
86 | 93 |
87 def getMDFromPathOrUrl(self,path): | 94 def getMDFromPathOrUrl(self,path): |
88 """returns contents of metadata file from server as text""" | 95 """returns contents of metadata file from server as text""" |
89 if not path: | 96 if not path: |
90 logging.error("getMDFromPathOrUrl: empty path!") | 97 logging.error("getMDFromPathOrUrl: empty path!") |
91 return "" | 98 return None |
92 | 99 |
93 parsedurl = urlparse.urlparse(path) | 100 parsedurl = urlparse.urlparse(path) |
94 if parsedurl[0] != "": | 101 if parsedurl[0] != "": |
95 # has schema (e.g. http) | 102 # has schema (e.g. http) |
96 url=path | 103 url=path |
104 | 111 |
105 #logging.debug("get Metadata: %s"%url) | 112 #logging.debug("get Metadata: %s"%url) |
106 md = getHttpData(url) | 113 md = getHttpData(url) |
107 return md | 114 return md |
108 | 115 |
116 def getDomFromPathOrUrl(self, path): | |
117 """returns DOM of metadata file at given path""" | |
118 dom = None | |
119 data = self.getMDFromPathOrUrl(path) | |
120 if data: | |
121 dom = ET.fromstring(data) | |
122 | |
123 return dom | |
124 | |
109 def getXmlPathData(self, xmlpath, path=None, dom=None): | 125 def getXmlPathData(self, xmlpath, path=None, dom=None): |
110 """returns contents of element at xmlpath as dict""" | 126 """returns contents of element at xmlpath as dict""" |
111 logging.error("getXmlPathData(%s)"%xmlpath) | 127 logging.error("getXmlPathData(%s)"%xmlpath) |
112 # make xmlpath relative for Zope | 128 # make xmlpath relative for Zope |
113 if xmlpath[0] == '/': | 129 if xmlpath[0] == '/': |
118 return mdObj.getData(path=path, dom=dom) | 134 return mdObj.getData(path=path, dom=dom) |
119 else: | 135 else: |
120 logging.error("getXmlPathData: MetaData element at '%s' not found!"%xmlpath) | 136 logging.error("getXmlPathData: MetaData element at '%s' not found!"%xmlpath) |
121 return None | 137 return None |
122 | 138 |
139 def getResourceData(self, path=None, dom=None): | |
140 """returns contents of resource tag as dict""" | |
141 return self.getXmlPathData('resource', path=path, dom=dom) | |
142 | |
123 def getTexttoolData(self, path=None, dom=None): | 143 def getTexttoolData(self, path=None, dom=None): |
124 """returns contents of texttool tag as dict""" | 144 """returns contents of texttool tag as dict""" |
125 return self.getXmlPathData('resource/meta/texttool', path=path, dom=dom) | 145 return self.getXmlPathData('resource/meta/texttool', path=path, dom=dom) |
126 | 146 |
147 def getAccessData(self, path=None, dom=None): | |
148 """returns contents of access tag as dict""" | |
149 return self.getXmlPathData('resource/meta/access-conditions/access', path=path, dom=dom) | |
150 | |
127 def getBibData(self, path=None, dom=None): | 151 def getBibData(self, path=None, dom=None): |
128 """returns contents of bib tag as dict""" | 152 """returns contents of bib tag as dict""" |
129 return self.resource.meta.bib.getData(path=path, dom=dom) | 153 return self.resource.meta.bib.getData(path=path, dom=dom) |
130 | 154 |
131 def getBibMapping(self, bibtype): | 155 def getBibMapping(self, bibtype): |