--- ECHO_content/ECHO_collection.py 2004/05/26 07:39:36 1.90 +++ ECHO_content/ECHO_collection.py 2004/06/18 10:17:58 1.118 @@ -46,9 +46,42 @@ import xml.dom.minidom from ECHO_graphicalOverview import javaHandler,javaScriptMain import ECHO_helpers +def getCopyrightsFromForm(self,argv): + medias={} + partners={} + copyrights={} + + copyrightsFinal=[] + for arg in argv.keys(): + + if arg[0:5]=='media': + nm=int(arg[5:]) + medias[nm]=argv[arg] + elif arg[0:5]=='partn': + nm=int(arg[5:]) + partners[nm]=argv[arg] + elif arg[0:5]=='copyr': + nm=int(arg[5:]) + copyrights[nm]=argv[arg] + + + + copyrightsList=[(medias[nm],partners[nm],copyrights[nm]) for nm in medias.keys()] + for copyright in copyrightsList: + + if copyright[2]=='institution0000': + copyrightsFinal.append((copyright[0],copyright[1],self.getPartnerCopyright(copyright[1],''))) + else: + if not copyright[0]=='': + copyrightsFinal.append(copyright) + + + return copyrightsFinal + #List of different types for the graphical linking viewer viewClassificationListMaster=['view point','area'] + def checkDiffs(self,metadict): """check differences""" @@ -75,11 +108,11 @@ def checkDiffs(self,metadict): if (NoneToEmpty(self.getFieldValue(self.getFieldTag(tags,field)))==metadict[self.getFieldTag(tags,field)]): diffs[self.getFieldTag(tags,field)]=1 else: - #print "DIFF",field,self.getFieldValue(self.getFieldTag(tags,field)),metadict[self.getFieldTag(tags,field)] + diffs[self.getFieldTag(tags,field)]=0 except: diffs[self.getFieldTag(tags,field)]=0 - #print "EX",field + return diffs def content_html(self,type): @@ -88,11 +121,11 @@ def content_html(self,type): # #if templates: # return templates[0][1]() - - try: + + if hasattr(self,type+"_template"): obj=getattr(self,type+"_template") return obj() - except: + else: pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_%s_template_standard.zpt'%type).__of__(self) pt.content_type="text/html" return pt() @@ -231,7 +264,7 @@ def readMetadata(url): if len(metanode)==0: metanode=dom.getElementsByTagName('archimedes') metadict['bib_type']='Archimedes' - #print "HELLO" + if not len(metanode)==0: metacontent=metanode[0].childNodes @@ -243,7 +276,8 @@ def readMetadata(url): for node in metacontent: try: - metadict[re.sub('-','_',node.tagName.lower())]=urllib.unquote(getText(node.childNodes)) + #print urllib.unquote(getText(node.childNodes)),getText(node.childNodes) + metadict[re.sub('-','_',node.tagName.lower())]=urllib.unquote(getText(node.childNodes)) except: """nothing""" @@ -268,66 +302,75 @@ def setECHO_collectionInformation(self,t coords=[] #coordinates of for rectangles - #print "cs", coordstrs + if coordstrs: for coordstr in coordstrs: - #print "cs", coordstr + try: temco=coordstr.split(",") except: temco=[] - #temco.append(angle) + coords.append(temco) self.coords=coords[0:] +class ECHO_copyright(Folder): + """Copyright informationen""" + meta_type="ECHO_copyright" + + + + def __init__(self,id,title,copyrights): + """init""" + self.title=title + self.id=id + self.copyrights=copyrights[0:] + + def getCopyrights(self): + """return coyprights""" + return self.copyrights + + manage_options = Folder.manage_options+( + {'label':'Main Config','action':'ECHO_copyright_configForm'}, + ) -class scientificClassification(SimpleItem,Persistent,Implicit): - """outdated will be deleeted in the next versions: subclass""" - security=ClassSecurityInfo() - - def __init__(self,context,science,practice): - self.context=context - self.science=science - self.practice=practice - self.id="scientific_Classification" - - security.declarePublic('get_context') - def get_context(self): - return self.context - - security.declarePublic('get_science') - def get_science(self): - return self.science - - security.declarePublic('get_practice') - def get_practice(self): - return self.practice - - -class scientificInformation(Folder,Persistent,Implicit): - """outdated will be deleted in the next versions: subclass scientificInformation""" - security=ClassSecurityInfo() - - - - def __init__(self,source_type,period): + def ECHO_copyright_configForm(self): + """change form""" + pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_copyright').__of__(self) + pt.content_type="text/html" + return pt() - self.id="scientific_Information" - self.source_type=source_type - self.period=period - + def ECHO_copyright_config(self,title,RESPONSE=None): + """change""" + self.title=title + self.copyrights=[] + self.copyrights=getCopyrightsFromForm(self,self.REQUEST.form)[0:] + if RESPONSE is not None: + RESPONSE.redirect('manage_main') - security.declarePublic('get_source_type') - def get_source_type(self): - return self.source_type - - security.declarePublic('get_period') - def get_period(self): - return self.period + +def manage_addECHO_copyrightForm(self): + """Form for adding""" + pt=PageTemplateFile('Products/ECHO_content/zpt/AddECHO_copyright.zpt').__of__(self) + return pt() + +def manage_addECHO_copyright(self, id,title,RESPONSE=None): + """add the copyright""" + + meta_type="ECHO_copyright" + + #first generate copyrights as list of tripels (mediaType,partner,copyrightType) + + + + self._setObject(id, ECHO_copyright(id, title,getCopyrightsFromForm(self,self.REQUEST.form))) + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + class ECHO_layoutTemplate(ZopePageTemplate): """Create a layout Template for different purposes""" @@ -403,6 +446,8 @@ class ECHO_resource(Folder,Persistent): viewClassificationList=viewClassificationListMaster getSubCols = ECHO_helpers.getSubCols + + def getTitle(self): """title""" return self.title.encode('utf-8') @@ -441,6 +486,28 @@ class ECHO_resource(Folder,Persistent): self.REQUEST.RESPONSE.write("no fulltext available") else: return "no fulltext available" + + def getCopyrightsHTML(self): + """gib link auf copyright notiz aus""" + + if hasattr(self,'copyrightModell'): + obj=self.copyrightModell + + else: + return "ERROR" + ret=[] + + for copyright in obj.getCopyrights(): + + link="copyrightTypes/"+copyright[2]+'/copyright.html' + + try: + label=getattr(self.copyrightTypes,copyright[2]).label + ret.append(("""%s"""%(link,copyright[1],label),copyright[0],copyright[1],copyright[2],label)) + except: + """nothing""" + + return ret def getCredits(self): """Ausgabe der credits""" @@ -449,7 +516,7 @@ class ECHO_resource(Folder,Persistent): else: return [] - def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords): + def __init__(self,id,link,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords): self.id = id """Festlegen der ID""" @@ -462,6 +529,7 @@ class ECHO_resource(Folder,Persistent): self.credits=toList(credits) self.description=description self.contentType=contentType + self.copyrightType=copyrightType self.renderingType=renderingType self.responsible=responsible self.resourceID=resourceID @@ -543,8 +611,7 @@ class ECHO_resource(Folder,Persistent): for data in self.metadata: data_neu=re.sub('-','_',data) self.metaDataHash[data_neu]=getattr(self,data) - #print data_neu, getattr(self,data) - #print self.metaDataHash,self.metadata + pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource_metadata.zpt').__of__(self) return pt() @@ -659,7 +726,6 @@ class ECHO_resource(Folder,Persistent): manage_options = Folder.manage_options+( {'label':'Main Config','action':'ECHO_resource_config_main'}, - {'label':'Change Credits & Copyright','action':'ECHO_resource_config_credits'}, {'label':'Change Metadata','action':'ECHO_resource_config_metadata'}, {'label':'Change Coords','action':'ECHO_resource_config_coords'}, {'label':'Add coords','action':'ECHO_graphicEntry'}, @@ -729,7 +795,7 @@ class ECHO_resource(Folder,Persistent): def getFieldValue(self,field): """get value""" - #print field + try: ret=self.metaDataHash[field] @@ -746,7 +812,7 @@ class ECHO_resource(Folder,Persistent): def setFieldValue(self,field,value): """get value""" - #print field + if not hasattr(self,'metaDataHash'): setattr(self,'metaDataHash',{}) self.metaDataHash[field]=value[0:] @@ -769,9 +835,9 @@ class ECHO_resource(Folder,Persistent): fieldlist=self.standardMD.fieldList for referenceTypeF in self.referencetypes: - #print referenceTypeF[1].title,referenceType + if referenceTypeF[1].title.lower() == referenceType.lower(): - #print "OK" + try: bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields referenceType=referenceTypeF[1].title @@ -783,7 +849,7 @@ class ECHO_resource(Folder,Persistent): fields=bibdata[referenceType] for field in fieldlist: retdata[field]=referenceTypeF[1].getValue(field)[1] - #print retdata,fieldlist + return retdata,fieldlist,temp,fields def findTagsFromMapping(self,referenceType): @@ -826,16 +892,19 @@ class ECHO_resource(Folder,Persistent): def copyIndex_meta2echo_resource(self,RESPONSE=None): """copy MD von Index_meta to the echo_resource""" - + (metadict, error)=readMetadata(self.metalink) self.metaDataHash={} if not error=="": #Fehler beim Auslesen des Metafiles return "ERROR:",error fields=self.findTagsFromMapping(self.contentType) + #fields=self.findLabelsFromMapping(self.contentType) for field in fields[1]: + if self.isDefinedInThisSet(fields,field): + #print urllib.unquote(metadict.get(self.getFieldTag(fields,field),'')) self.setFieldValue(self.getFieldTag(fields,field),metadict.get(self.getFieldTag(fields,field),'')) @@ -934,10 +1003,10 @@ def manage_addECHO_resourceForm(self): -def manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None): +def manage_addECHO_resource(self,id,title,label,description,responsible,link,metalink,weight,copyrightType=None,resourceID=None,contentType=None,renderingType=None,credits=None,coords=None,RESPONSE=None): """addaresource""" - newObj=ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,responsible,credits,weight,coords) + newObj=ECHO_resource(id,link,metalink,resourceID,title,label,description,contentType,renderingType,copyrightType,responsible,credits,weight,coords) self._setObject(id,newObj) @@ -986,7 +1055,7 @@ class ECHO_externalLink(Folder): if not hasattr(self,'coords'): self.coords=[''] - #print "G",self.coords + pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_externalLink.zpt').__of__(self) return pt() @@ -1012,12 +1081,6 @@ class ECHO_externalLink(Folder): {'label':'Main Config','action':'ECHO_externalLink_config'}, ) - def getCredits(self): - """Ausgabe der credits""" - if self.credits: - return self.credits - else: - return [] def index_html(self): """standard page""" @@ -1079,6 +1142,34 @@ class ECHO_collection(Folder, Persistent viewClassificationList=viewClassificationListMaster displayTypes=displayTypes + def getPartnerCopyright(self,name,sonst="generic"): + """gibt generisches copyright eines partners aus, sonst behalte jetzige einsteillung""" + #print "hi",name,sonst + #print getattr(self.partners,name).copyrightType + try: + partner=getattr(self.partners,name) + return partner.copyrightType + except: + print "error" + return sonst + + def partnerSelector_HTML(self,selected=None): + """give type selector""" + if not selected: + retStr="