--- ECHO_content/ECHO_collection.py 2005/11/25 18:46:40 1.255 +++ ECHO_content/ECHO_collection.py 2005/12/01 12:11:51 1.258 @@ -15,7 +15,7 @@ try: except: print "PDF generation will not work" - +import urlparse import string import tempfile import re @@ -50,6 +50,7 @@ from Ft.Xml import EMPTY_NAMESPACE import Ft.Xml.XPath import cStringIO import zLOG +import sys try: from psycopg import libpq @@ -68,7 +69,7 @@ from ECHO_helpers import * from ECHO_language import * from ECHO_movie import * import vlp_xmlhelpers #TODO: vlp elemente aus echo herausnehmen - +import xmlrpclib def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs=""): @@ -83,6 +84,90 @@ def setECHO_collectionInformation(self,t self.credits=toList(credits) self.weight=weight +class ECHO_partner(Image,Persistent,ECHO_basis): + """ECHO Partner""" + + meta_type="ECHO_partner" + + def __init__(self, id, title,url, file, copyrightType, person, email, country, color, content_type='', precondition=''): + self.__name__=id + self.title=title + self.url=url + self.person=person + self.email=email + self.country=country + self.color=color + self.precondition=precondition + self.copyrightType=copyrightType + data, size = self._read_data(file) + content_type=self._get_content_type(file, data, id, content_type) + self.update_data(data, content_type, size) + + manage_options = Image.manage_options+( + {'label':'Partner Information','action':'ECHO_partner_config'}, + ) + + + def changeECHO_partner(self,url,copyrightType,person, email, country, color, RESPONSE=None): + """Change main information""" + self.url=url + self.person=person + self.email=email + self.country=country + self.color=color + self.copyrightType=copyrightType + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + + + def ECHO_partner_config(self): + """Main configuration""" + if not hasattr(self,'url'): + self.url="" + pt=zptFile(self, 'zpt/ChangeECHO_partner.zpt') + return pt() + + +manage_addECHO_partnerForm=DTMLFile('dtml/ECHO_partnerAdd',globals(), + Kind='ECHO_partner',kind='ECHO_partner') + + + +def manage_addECHO_partner(self, id, url, person, email, country, color, file=None, copyrightType='', title='', precondition='', content_type='', + REQUEST=None): + """ + Add a new ECHO_partner object. + + Creates a new ECHO_partner object 'id' with the contents of 'file'. + Based on Image.manage_addImage + """ + + id=str(id) + title=str(title) + content_type=str(content_type) + precondition=str(precondition) + + id, title = OFS.Image.cookId(id, title, file) + + self=self.this() + + # First, we create the image without data: + self._setObject(id, ECHO_partner(id,title,url,'',copyrightType, person, email, country, color, content_type, precondition)) + + # Now we "upload" the data. By doing this in two steps, we + # can use a database trick to make the upload more efficient. + if file: + self._getOb(id).manage_upload(file) + if content_type: + self._getOb(id).content_type=content_type + + if REQUEST is not None: + try: url=self.DestinationURL() + except: url=REQUEST['URL1'] + REQUEST.RESPONSE.redirect('%s/manage_main' % url) + return id + class ECHO_locale(ZopePageTemplate): """localisierung""" @@ -314,7 +399,7 @@ class ECHO_resource(CatalogAware,Folder, def reindex(self): """generate fields for indexing and reindex""" - import urlparse + #TODO: korrigieren des metalink pfades konfigurierbar machen splitted= [x for x in urlparse.urlparse(self.metalink)] splitted[1]="foxridge.mpiwg-berlin.mpg.de"[0:] @@ -427,72 +512,128 @@ class ECHO_resource(CatalogAware,Folder, return ret+self.createSubElementRDF(urn=urn) - def getAccessRightSelectorHTML(self,outlook="select"): - """htmlselector""" - values=['free','mpiwg'] + def changeAccessRightForm(self,preselect=None): + """change the access rights""" + + pt=zptFile(self, 'zpt/ChangeECHO_resourceAccessRight.zpt') + return pt(preselect=preselect) + + def changeAccessRight(self): + """changeRights""" + argv=self.REQUEST.form + self.setAccessRightXML(argv["%s_xml"%self.getId()]) + self.accessRight=argv["%s_echo"%self.getId()] + + self.REQUEST.RESPONSE.redirect('manage_main') + + + def getAccessRightSelectorHTML(self,outlook="select",xmldominant=None,preselect=None): + """htmlselector, xmldominant= in der regel wird der wert des xmlfiles ausgegeben ausser er existiert nicht""" + values=['','free','MPIWG'] + if preselect:#set all to the preselected + ar=(preselect,preselect) + else:#else set to actual value + ar=self.getAccessRightMD() + if outlook=="select": - ret="""" + else: + if ar[0] is not None: + return ret+"" + else: + return "
No xml file (only local selection):"+ret1 else: ret="" + ret1="" for value in values: - if value==self.getAccessRightMD(): - ret+="""%s"""%(self.getId(),value,value) + if value==ar[0]: + ret+="""%s"""%(self.getId(),value,value) else: - ret+="""%s"""%(self.getId(),value,value) - return ret + ret+="""%s"""%(self.getId(),value,value) + + if value==ar[1]: + ret1+="""%s"""%(self.getId(),value,value) + else: + ret1+="""%s"""%(self.getId(),value,value) + + if not xmldominant: + return ret,ret1 + else: + if ar[0]: + return ret + else: + return "
No xml file (only local selection)
"+ret1 + + def copyAccessRightsFromMD(self): + """kopiere rechte aus den metadaten""" + self.accessRight=self.getAccessRightMD()[0] + + + + def getAccessRightMD(self): """set accessright""" url=self.metalink try: - geturl="" - for line in ECHO_helpers.urlopen(url).readlines(): - geturl=geturl+line - - + urllib.urlopen(url) except: - return (None,"Cannot open: "+url) + zLOG.LOG("ECHO_Resource (getAccessRightMD)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) + return None,getattr(self,'accessRight','') + + try: - dom=xml.dom.minidom.parseString(geturl) - root=dom.getElementsByTagName('resource')[0] + dom = NonvalidatingReader.parseUri(url) except: - return (None,"Cannot parse: "+url+"done %s
\n" + #print "done %s
\n" if RESPONSE: RESPONSE.write("done %s
\n"%resource[0]) @@ -3509,89 +3693,6 @@ def manage_addECHO_copyrightType(self,id -class ECHO_partner(Image,Persistent,ECHO_basis): - """ECHO Partner""" - - meta_type="ECHO_partner" - - def __init__(self, id, title,url, file, copyrightType, person, email, country, color, content_type='', precondition=''): - self.__name__=id - self.title=title - self.url=url - self.person=person - self.email=email - self.country=country - self.color=color - self.precondition=precondition - self.copyrightType=copyrightType - data, size = self._read_data(file) - content_type=self._get_content_type(file, data, id, content_type) - self.update_data(data, content_type, size) - - manage_options = Image.manage_options+( - {'label':'Partner Information','action':'ECHO_partner_config'}, - ) - - - def changeECHO_partner(self,url,copyrightType,person, email, country, color, RESPONSE=None): - """Change main information""" - self.url=url - self.person=person - self.email=email - self.country=country - self.color=color - self.copyrightType=copyrightType - if RESPONSE is not None: - RESPONSE.redirect('manage_main') - - - - def ECHO_partner_config(self): - """Main configuration""" - if not hasattr(self,'url'): - self.url="" - pt=zptFile(self, 'zpt/ChangeECHO_partner.zpt') - return pt() - - -manage_addECHO_partnerForm=DTMLFile('dtml/ECHO_partnerAdd',globals(), - Kind='ECHO_partner',kind='ECHO_partner') - - - -def manage_addECHO_partner(self, id, url, person, email, country, color, file=None, copyrightType='', title='', precondition='', content_type='', - REQUEST=None): - """ - Add a new ECHO_partner object. - - Creates a new ECHO_partner object 'id' with the contents of 'file'. - Based on Image.manage_addImage - """ - - id=str(id) - title=str(title) - content_type=str(content_type) - precondition=str(precondition) - - id, title = OFS.Image.cookId(id, title, file) - - self=self.this() - - # First, we create the image without data: - self._setObject(id, ECHO_partner(id,title,url,'',copyrightType, person, email, country, color, content_type, precondition)) - - # Now we "upload" the data. By doing this in two steps, we - # can use a database trick to make the upload more efficient. - if file: - self._getOb(id).manage_upload(file) - if content_type: - self._getOb(id).content_type=content_type - - if REQUEST is not None: - try: url=self.DestinationURL() - except: url=REQUEST['URL1'] - REQUEST.RESPONSE.redirect('%s/manage_main' % url) - return id class ECHO_linkList(ZopePageTemplate,ECHO_basis): """LinkList Objekt"""