annotate MetaDataFolder.py @ 6:00147a1ab4ac

division between MetaDataFolder and Metadata looks good now (to me :-)
author casties
date Wed, 27 Jul 2011 21:08:01 +0200
parents c1dbf78cc036
children 4cd862bf37a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
1 from OFS.Folder import Folder
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
2 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
3 from Globals import package_home
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
4 from AccessControl import ClassSecurityInfo
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
5 import os.path
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
6 import logging
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
7
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
8 from MetaDataMapping import MetaDataMapping
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
9 from MetaData import MetaData
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
10
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
11 def normalizeBibField(bt, underscore=True):
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
12 """returns normalised bib type for looking up mappings"""
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
13 bt = bt.strip().replace(' ', '-').lower()
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
14 if underscore:
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
15 bt = bt.replace('_', '-')
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
16
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
17 return bt
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
18
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
19 def OLDgetBibdataFromDom(dom):
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
20 """returns dict with all elements from bib-tag"""
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
21 bibinfo = {}
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
22 bib = dom.find(".//meta/bib")
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
23 if bib is not None:
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
24 # put type in @type
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
25 type = bib.get('type')
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
26 bibinfo['@type'] = normalizeBibField(type)
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
27 # put all subelements in dict
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
28 for e in bib:
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
29 bibinfo[normalizeBibField(e.tag)] = getText(e)
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
30
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
31 return bibinfo
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
32
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
33 def toString(list):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
34 ret=u""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
35
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
36 for l in list:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
37 ret+=unicode(l)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
38
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
39 return ret
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
40
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
41 def dcMetaDataToHash(mdSet):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
42 """Convenience Function for creates a hash from the DCMetadataset
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
43 @param mdSet: String containing DCMetadata informmation
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
44 currently only in the format getDCMetadata of this module"""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
45
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
46 NSS = {
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
47 'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
48 'dc': 'http://dublincore.org/documents/dcmi-namespace/',
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
49 'owl':"http://www.w3.org/2002/07/owl#",
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
50 'rdfs':"http://www.w3.org/2000/01/rdf-schema#"
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
51 }
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
52 ret={}
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
53 import StringIO
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
54 import sys
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
55 buffer= StringIO.StringIO(mdSet)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
56 try:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
57 md = amara.parse(buffer,prefixes=NSS)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
58 except:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
59 logging.error("Error: %s (%s)"%(sys.exc_info()[0],sys.exc_info()[1]))
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
60
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
61 ret["error"]=mdSet
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
62 return ret
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
63
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
64 ret["title"] = toString(md.xml_xpath("//dc:title/text()"))
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
65 ret["creator"] =toString(md.xml_xpath("//dc:creator/text()"))
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
66 ret["date"] = toString(md.xml_xpath("//dc:date/text()"))
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
67
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
68 return ret
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
69
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
70
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
71 class MetaDataFolder(Folder):
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
72 """provides methods for managing complete metadata structures"""
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
73 meta_type='MetaDataFolder'
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
74 security=ClassSecurityInfo()
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
75 manage_options = Folder.manage_options+(
5
c1dbf78cc036 more MetaDataFolder
casties
parents: 4
diff changeset
76 {'label':'Main Config','action':'changeMetaDataFolderForm'},
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
77 )
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
78
5
c1dbf78cc036 more MetaDataFolder
casties
parents: 4
diff changeset
79 def __init__(self,id,title='',metaDataServerUrl=''):
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
80 """initialize a new instance"""
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
81 self.id = id
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
82 self.title = title
5
c1dbf78cc036 more MetaDataFolder
casties
parents: 4
diff changeset
83 self.metaDataServerUrl = metaDataServerUrl
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
84
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
85
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
86 def getMDFromPathOrUrl(self,path):
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
87 parsedurl = urlparse.urlparse(path)
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
88 if parsedurl[0] != "":
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
89 # has schema (e.g. http)
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
90 url=path
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
91 else:
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
92 # path only
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
93 if path.endswith("index.meta"):
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
94 url =self.metaDataServerUrl%path
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
95 else:
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
96 url=os.path.join(self.metaDataServerUrl%path,'index.meta')
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
97
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
98 #logging.debug("get Metadata: %s"%url)
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
99 md = getHttpData(url)
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
100 return md
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
101
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
102 def getBibdataFromDom(self, dom):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
103 """returns contents of bib tag as dict"""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
104 return self.resource.meta.bib.getDataFromDom(dom)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
105
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
106 def getBibMapping(self, bibtype):
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
107 """returns MetaDataMapping for resource/meta/bib of bibtype"""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
108 return self.resource.meta.bib.getMapping(bibtype)
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
109
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
110 def getBibFields(self, bibdata):
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
111 """returns dict with metadata description for bibdata"""
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
112 return self.resource.meta.bib.getMapFields(bibdata)
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
113
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
114 def getBibMappedData(self, bibdata, allFields=False):
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
115 """returns dict with metadata descriptions and data for bibdata"""
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
116 return self.resource.meta.bib.getMappedData(bibdata, allFields=allFields)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
117
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
118 def getDCMappedData(self, bibdata):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
119 """returns dict with DC keys and data from bibdata"""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
120 return self.resource.meta.bib.getDCMappedData(bibdata)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
121
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
122
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
123 def getBibFormattedMetaData(self, path=None, dom=None, bibdata=None):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
124 """get the metadafrom server"""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
125 logging.debug("getBibFormattedMetaData(path=%s)"%path)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
126 return self.resource.meta.bib.getFormatted('metadata_template', path=path, dom=dom, data=bibdata)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
127
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
128 def getBibFormattedMetaDataExtended(self,path=None, dom=None, bibdata=None):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
129 """get the metadafrom server"""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
130 logging.debug("getBibFormattedMetaDataExtended(path=%s)"%path)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
131 return self.resource.meta.bib.getFormatted('metadata_extended_template', path=path, dom=dom, data=bibdata, allFields=True)
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
132
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
133 def getBibFormattedLabel(self,path=None, dom=None, bibdata=None):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
134 """get the metadafrom server"""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
135 logging.debug("getBibFormattedLabel(%s)"%path)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
136 return self.resource.meta.bib.getFormatted('label_template', path=path, dom=dom, data=bibdata)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
137
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
138 getFormattedMetaData = getBibFormattedMetaData
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
139 getFormattedMetaDataShort = getBibFormattedMetaData
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
140 getFormattedMetaDataExtended = getBibFormattedMetaDataExtended
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
141 getFormattedLabel = getBibFormattedLabel
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
142
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
143 def getDCFormatted(self,path):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
144 """get the metadata as dc set"""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
145 logging.debug("getDCFormatted(path=%s)"%path)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
146 namespace={ 'mpiwg': "http://www.mpiwg-berlin.mpg.de/ns/mpiwg"}
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
147 namespaceUsed=False
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
148
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
149 md = self.getMDFromPathOrUrl(path)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
150 logging.debug("MD in XML"+md)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
151 im = amara.parse(md, prefixes=namespace)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
152
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
153 typePaths=im.xml_xpath('//bib/@type')
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
154 archimedes=False
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
155
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
156 if len(typePaths)<1:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
157 typePaths=im.xml_xpath('//meta/archimedes') # sinderfall fuer veraltete index.meta files vom typ archimedes
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
158 if len(typePaths)>0:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
159 type = "archimedes"
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
160 archimedes=True
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
161 else:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
162 typePaths=im.xml_xpath('//mpiwg:bib/@type')
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
163 if len(typePaths)<1:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
164 return ""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
165 else:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
166 namespaceUsed=True
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
167
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
168 type=unicode(typePaths[0])
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
169 else:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
170 type=unicode(typePaths[0])
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
171 logging.info("got type:"+type)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
172 try:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
173 mapping=getattr(self.main.meta.bib,type.lower(),None)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
174 except:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
175 logging.error("getMetaDataFromServer no mapping for type: %s"%type)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
176 return ""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
177
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
178 try:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
179 dcMapping=getattr(self.main.meta.bib,"dc",None)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
180 except:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
181 logging.error("getMetaDataFromServer no dc in meta/bib")
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
182 return ""
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
183
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
184 mds=mapping.generateMappingHash() # Hole das Mapping generisches Feld --> Feld im entsprechenden Typ
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
185 dcMds=dcMapping.generateMappingHash()
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
186
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
187 mdHash=[]
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
188 logging.debug("Value: %s"%repr(mds))
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
189
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
190 for key,valueTriple in mds.items():
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
191 value=valueTriple[0]
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
192 logging.debug("Value: %s"%repr(value))
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
193 logging.debug("Key: %s"%repr(key))
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
194 if value!="":
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
195 if not archimedes:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
196 if namespaceUsed:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
197 try:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
198 v = im.xml_xpath('//mpiwg:bib/mpiwg:%s/text()'%value)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
199 except:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
200 logging.error('cannot do: //mpiwg:bib/mpiwg:%s/text()'%value)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
201 else:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
202 v = im.xml_xpath('//bib/%s/text()'%value)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
203 else:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
204 v = im.xml_xpath('//archimedes/%s/text()'%value)
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
205 if len(v) > 0:
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
206 dc=dcMds[key][0]
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
207
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
208 if (dc !="") and (value !=""):
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
209 logging.debug("%s--> : %s"%(repr(value),dc))
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
210 mdHash.append([dc,unicode(v[0])])
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
211
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
212 ret="""<bib xmlns:dc="http://dublincore.org/documents/dcmi-namespace/"> """
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
213 ret+="<dc:type>%s</dc:type>"%type
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
214 for md in mdHash:
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
215
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
216 ret+="""<dc:%s>%s</dc:%s>"""%(md[0],xml.sax.saxutils.escape(md[1]),md[0])
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
217 ret+="</bib>"
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
218 return ret
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
219
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
220
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
221 changeMetaDataFolderForm = PageTemplateFile('zpt/changeMetaDataFolder',globals())
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
222
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
223 security.declarePublic('changeMetaDataFolder')
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
224 def changeMetaDataFolder(self,title,metaDataServerUrl,RESPONSE=None):
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
225 """Change MetaDataFolder"""
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
226 self.title = title
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
227 self.metaDataServerUrl=metaDataServerUrl
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
228 if RESPONSE is not None:
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
229 RESPONSE.redirect('manage_main')
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
230
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
231
6
00147a1ab4ac division between MetaDataFolder and Metadata looks good now (to me :-)
casties
parents: 5
diff changeset
232 manage_addMetaDataFolderForm = PageTemplateFile('zpt/addMetadataFolderForm',globals())
4
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
233
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
234 def manage_addMetaDataFolder(self,id,title,RESPONSE=None):
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
235 """a MetaDataFolder objekt"""
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
236 newObj=MetaDataFolder(id,title)
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
237 self.Destination()._setObject(id,newObj)
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
238 if RESPONSE is not None:
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
239 RESPONSE.redirect('manage_main')
8291255b1868 adding new base level class MetaDataFolder.
casties
parents:
diff changeset
240