version 1.7, 2005/04/06 09:18:41
|
version 1.18, 2010/09/01 13:26:16
|
Line 10 import sys
|
Line 10 import sys
|
import xml.dom.minidom |
import xml.dom.minidom |
import xml.dom.pulldom |
import xml.dom.pulldom |
import OSAS_helpers |
import OSAS_helpers |
import zLOG |
import logging |
|
|
|
#ersetzt logging |
|
def logger(txt,method,txt2): |
|
"""logging""" |
|
logging.info(txt+ txt2) |
|
|
|
|
import string |
import string |
import xml.xpath |
try: |
|
from xml.xpath import Evaluate |
|
except: |
|
from Ft.Xml.XPath import Evaluate |
import xmlrpclib |
import xmlrpclib |
|
|
from types import * |
from types import * |
Line 107 class OSAS_MetadataMapping(SimpleItem):
|
Line 117 class OSAS_MetadataMapping(SimpleItem):
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
|
manage_workspace=changeMetadataMappingForm |
|
|
def manage_addMetadataMappingForm(self): |
def manage_addMetadataMappingForm(self): |
"""interface for adding the OSAS_root""" |
"""interface for adding the OSAS_root""" |
Line 121 def manage_addMetadataMapping(self,idOfO
|
Line 131 def manage_addMetadataMapping(self,idOfO
|
argList={} |
argList={} |
for arg in self.fieldList: |
for arg in self.fieldList: |
if not (arg in ['idOfObject','titleOfObject']): |
if not (arg in ['idOfObject','titleOfObject']): |
argList[arg]=(self.REQUEST.form[arg],self.REQUEST.form['label_'+arg],self.REQUEST.form['explanation_'+arg],arglist['status_'+fieldName],arglist['values_'+fieldName]) |
argList[arg]=(self.REQUEST.form[arg],self.REQUEST.form['label_'+arg],self.REQUEST.form['explanation_'+arg],self.REQUEST.form['status_'+arg],self.REQUEST.form['values_'+arg]) |
|
|
newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList) |
newObj=OSAS_MetadataMapping(idOfObject,titleOfObject,argList) |
self._setObject(idOfObject,newObj) |
self._setObject(idOfObject,newObj) |
Line 131 def manage_addMetadataMapping(self,idOfO
|
Line 141 def manage_addMetadataMapping(self,idOfO
|
|
|
|
|
class OSAS_Metadata(Folder): |
class OSAS_Metadata(Folder): |
"""Foldertype enthält methoden zur Halbautomatischen Erstellung von Metadatenfiles""" |
"""Foldertype enthaelt methoden zur Halbautomatischen Erstellung von Metadatenfiles""" |
security=ClassSecurityInfo() |
security=ClassSecurityInfo() |
|
|
def __init__(self,id,shortDescription,description,fields): |
def __init__(self,id,shortDescription,description,fields): |
Line 163 class OSAS_Metadata(Folder):
|
Line 173 class OSAS_Metadata(Folder):
|
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') |
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') |
return ret |
return ret |
|
|
def showOverviewXML(self,RESPONSE): |
|
|
def showOverviewXML(self,RESPONSE=None,wrapped=False): |
"""gives an overview over the Metadata stored in this folder""" |
"""gives an overview over the Metadata stored in this folder""" |
ret="""<metadata name="%s">"""%self.getId() |
ret="" |
|
if wrapped: |
|
ret+="""<metadataExport>""" |
|
ret+="""<metadata name="%s">"""%self.getId() |
ret+=self.showGenericXML() |
ret+=self.showGenericXML() |
for entry in self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping']): |
for entry in self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping__neu']): |
ret+=entry[1].showSetXML() |
ret+=entry[1].showSetXML() |
|
|
|
for entry in self.ZopeFind(self,obj_metatypes=['OSAS_Metadata__neu']): |
|
ret+=entry[1].showOverviewXML() |
|
|
ret+="</metadata>" |
ret+="</metadata>" |
|
|
|
if wrapped: |
|
ret+="""</metadataExport>""" |
if not RESPONSE: |
if not RESPONSE: |
return ret |
return ret |
else: |
else: |
self.REQUEST.RESPONSE.setHeader('Content-Type','text/xml') |
RESPONSE.setHeader('Content-Type','text/xml') |
return ret |
return ret |
|
|
def generateMappingList(self): |
def generateMappingList(self): |
"""Erzeuge Mapping""" |
"""Erzeuge Mapping""" |
mapping={} |
mapping={} |
|
|
for dict in self.__dict__: |
for dict in self.__dict__: |
#print dict |
#print dict |
obj=getattr(self,dict) |
obj=getattr(self,dict) |
if hasattr(obj,'meta_type'): |
if hasattr(obj,'meta_type'): |
if obj.meta_type=="OSAS_MetadataMapping": |
logging.debug("generateMappungList read type:"+repr(obj.meta_type)) |
|
if ((obj.meta_type=="OSAS_MetadataMapping__neu") or (obj.meta_type=="MetadataMapping")): #metadatamapping is the newer type |
|
logging.debug("generateMappungListadded:"+repr(obj.getId())) |
mapping[obj.getId()]=obj.generateMappingHash() |
mapping[obj.getId()]=obj.generateMappingHash() |
|
|
return mapping |
return mapping |
|
|
def generateMappingForType(self,type,clean="yes"): |
def generateMappingForType(self,type,clean="yes"): |
"""erzeuge spezifisches Mapping""" |
"""erzeuge spezifisches Mapping""" |
|
|
hash=self.generateMappingList() |
hash=self.generateMappingList() |
if hash.has_key(type): |
logging.debug("generateMappingForType:"+type) |
|
for key in hash.keys(): |
|
logging.debug("generateMappingForType comparing:"+key.lower()+type.lower()) |
|
if (key.lower() == type.lower()): |
if clean=="yes": |
if clean=="yes": |
temp={} |
temp={} |
for x in hash[type].keys(): |
for x in hash[key].keys(): |
if not hash[type][x]=="": |
if not hash[key][x]=="": |
temp[x]=hash[type][x] |
temp[x]=hash[key][x] |
return temp |
return temp |
else: |
else: |
return hash[type] |
|
|
|
else: |
return hash[key] |
|
|
return {} |
return {} |
|
|
def getFieldList(self): |
def getFieldList(self): |
Line 212 class OSAS_Metadata(Folder):
|
Line 239 class OSAS_Metadata(Folder):
|
except: |
except: |
return "" |
return "" |
|
|
|
security.declarePublic('getFields') |
def getFields(self): |
def getFields(self): |
"""ausgabe der Felder""" |
"""ausgabe der Felder""" |
return self.fieldList |
return self.fieldList |
Line 235 class OSAS_Metadata(Folder):
|
Line 263 class OSAS_Metadata(Folder):
|
|
|
|
|
def getStoredTypes(self): |
def getStoredTypes(self): |
"""Gebe gespeicherte typen zurück""" |
"""Gebe gespeicherte typen zurueck""" |
|
|
types=[] |
types=[] |
|
|
for obj in self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping_neu']): |
for obj in self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping__neu']): |
if obj.title=="": |
if obj[1].title=="": |
title=obj.id |
title=obj[1].id |
else: |
else: |
title=obj.title |
title=obj[1].title |
types.append((obj.id,title,obj)) |
types.append((obj[1].id, title, obj[1])) |
|
|
return types |
return types |
|
|
Line 291 class OSAS_Metadata(Folder):
|
Line 319 class OSAS_Metadata(Folder):
|
except: |
except: |
return "" |
return "" |
def getDisplayFieldsAsStrOLD(self,indexMeta): |
def getDisplayFieldsAsStrOLD(self,indexMeta): |
"""Gebe display fields als string zurück |
"""Gebe display fields als string zurueck |
@param path: Pfad zum Object |
@param path: Pfad zum Object |
""" |
""" |
ret=[] |
ret=[] |
try: |
try: |
dom=xml.dom.minidom.parseString(indexMeta) |
dom=xml.dom.minidom.parseString(indexMeta) |
except: |
except: |
zLOG.LOG("OSAS_metadata (getDisplayFieldsAsStr)",zLOG.INFO,"Cannot parse: %s"%indexMeta) |
logger("OSAS_metadata (getDisplayFieldsAsStr)",logging.INFO,"Cannot parse: %s"%indexMeta) |
try: |
try: |
bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0] |
bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0] |
except: |
except: |
Line 429 class OSAS_Metadata(Folder):
|
Line 457 class OSAS_Metadata(Folder):
|
xpathStr=MDF_xpathStart |
xpathStr=MDF_xpathStart |
|
|
|
|
xpathNodes=xml.xpath.Evaluate(xpathStr,actualNode) |
xpathNodes=Evaluate(xpathStr,actualNode) |
|
|
|
|
if len(xpathNodes)>0: |
if len(xpathNodes)>0: |
Line 500 class OSAS_Metadata(Folder):
|
Line 528 class OSAS_Metadata(Folder):
|
xpathStr=MDF_xpathStart |
xpathStr=MDF_xpathStart |
|
|
|
|
xpathNodes=xml.xpath.Evaluate(xpathStr,actualNode) |
xpathNodes=Evaluate(xpathStr,actualNode) |
|
|
|
|
|
|
Line 511 class OSAS_Metadata(Folder):
|
Line 539 class OSAS_Metadata(Folder):
|
else: |
else: |
#existiert nicht dann neue erzeugen |
#existiert nicht dann neue erzeugen |
|
|
if len(xml.xpath.Evaluate(MDF_xpathStart,dom))>0: |
if len(Evaluate(MDF_xpathStart,dom))>0: |
|
|
create=True |
create=True |
|
|
Line 568 class OSAS_Metadata(Folder):
|
Line 596 class OSAS_Metadata(Folder):
|
actualNode.appendChild(namenode) |
actualNode.appendChild(namenode) |
|
|
ret=newdoc.toxml(encoding='utf-8') |
ret=newdoc.toxml(encoding='utf-8') |
|
zLOG.LOG("OSAS_metadata (writeMetadata)",zLOG.INFO,"write: %s"%ret) |
|
|
|
|
server.writeMetaDataFile(indexFile,ret) |
server.writeMetaDataFile(indexFile,ret) |
|
|
Line 593 class OSAS_Metadata(Folder):
|
Line 623 class OSAS_Metadata(Folder):
|
|
|
if list=="": |
if list=="": |
return None |
return None |
listsplit=list.split("\n") |
listsplit=[i.rstrip() for i in list.split("\n")] |
return listsplit |
return listsplit |
|
|
def showHelp(self,refType,genericTag): |
def showHelp(self,refType,genericTag): |
Line 624 def manage_addMetadata(self,id,shortDesc
|
Line 654 def manage_addMetadata(self,id,shortDesc
|
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
|
|
InitializeClass(OSAS_Metadata) |
|