Diff for /ECHO_content/ECHO_collection.py between versions 1.14 and 1.28

version 1.14, 2004/02/11 17:45:29 version 1.28, 2004/04/04 17:48:22
Line 24  from Products.PageTemplates.PageTemplate Line 24  from Products.PageTemplates.PageTemplate
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
 from Globals import Persistent  from Globals import Persistent
 from Acquisition import Implicit  from Acquisition import Implicit
 from pyPgSQL import libpq  #from psycopg import libpq
   #from pyPgSQL import libpq
 import xml.dom.minidom  import xml.dom.minidom
   
 import urllib  import urllib
 import xml.dom.minidom  import xml.dom.minidom
   from ECHO_graphicalOverview import javaHandler,javaScriptMain
   
 #List of different types for the graphical linking viewer  #List of different types for the graphical linking viewer
 viewClassificationListMaster=['view point','area']  viewClassificationListMaster=['view point','area']
Line 95  def readMetadata(url): Line 96  def readMetadata(url):
     return metadict,""      return metadict,""
           
   
 def setECHO_collectionInformation(self,title,label,description,content_type,responsible,credits,weight,coordstrs,viewClassification=""):  def setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordstrs,viewClassification=""):
   
         """Allegemeine Informationen zu einer ECHO Collection"""          """Allegemeine Informationen zu einer ECHO Collection"""
   
Line 104  def setECHO_collectionInformation(self,t Line 105  def setECHO_collectionInformation(self,t
         self.label = label          self.label = label
         self.title=title          self.title=title
         self.description=description          self.description=description
         self.content_type=content_type          self.contentType=contentType
         self.responsible=responsible          self.responsible=responsible
         self.credits=toList(credits)          self.credits=toList(credits)
         self.weight=weight          self.weight=weight
Line 192  class ECHO_resource(Folder): Line 193  class ECHO_resource(Folder):
         else:          else:
             return []              return []
           
     def __init__(self,id,link,metalink,title,label,description,content_type,responsible,credits,weight,coords):      def __init__(self,id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords):
   
         self.id = id          self.id = id
         """Festlegen der ID"""          """Festlegen der ID"""
Line 204  class ECHO_resource(Folder): Line 205  class ECHO_resource(Folder):
         self.weight=weight          self.weight=weight
         self.credits=toList(credits)          self.credits=toList(credits)
         self.description=description          self.description=description
         self.content_type=content_type          self.contentType=contentType
         self.responsible=responsible          self.responsible=responsible
                   
         if coords:          if coords:
Line 230  class ECHO_resource(Folder): Line 231  class ECHO_resource(Folder):
         if not hasattr(self,'coords'):          if not hasattr(self,'coords'):
             self.coords=[]              self.coords=[]
   
           print "vorher",self.coords
         pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/ChangeECHO_resource.zpt').__of__(self)
         return pt()          return pt()
           
   
     def changeECHO_resource(self,metalink,link,title,label,description,content_type,responsible,weight,viewClassification="",coords=None,credits=None,RESPONSE=None):      def changeECHO_resource(self,metalink,link,title,label,description,contentType,responsible,weight,viewClassification="",coords=None,credits=None,RESPONSE=None):
   
   
         """Änderung der Properties"""          """Änderung der Properties"""
                   
   
         setECHO_collectionInformation(self,title,label,description,content_type,responsible,credits,weight,coords,viewClassification)          coordsnew=[ string.split(x,",") for x in coords]
           
   
           setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
                   
           self.coords=coordsnew[0:]
         self.link=link          self.link=link
         self.metalink=metalink          self.metalink=metalink
                   
Line 256  class ECHO_resource(Folder): Line 259  class ECHO_resource(Folder):
         {'label':'Graphics','action':'ECHO_graphicEntry'},          {'label':'Graphics','action':'ECHO_graphicEntry'},
         )          )
   
       def getOverview(self):
           """overview graphics"""
           
           return self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])[0][1]
   
     def ECHO_graphicEntry(self):      def ECHO_graphicEntry(self):
         """DO nothing"""          """DO nothing"""
         if 'overview' in self.aq_parent.__dict__.keys():          overview = self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])
           if overview: 
             pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_draw.zpt').__of__(self)              pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_draw.zpt').__of__(self)
             return pt()              return pt()
         else:          else:
Line 319  def manage_addECHO_resourceForm(self): Line 328  def manage_addECHO_resourceForm(self):
   
   
   
 def manage_addECHO_resource(self,id,title,label,description,content_type,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):  def manage_addECHO_resource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):
     """addaresource"""      """addaresource"""
   
     newObj=ECHO_resource(id,link,metalink,title,label,description,content_type,responsible,credits,weight,coords)      newObj=ECHO_resource(id,link,metalink,title,label,description,contentType,responsible,credits,weight,coords)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
   
Line 336  class ECHO_externalLink(Folder): Line 345  class ECHO_externalLink(Folder):
     meta_type='ECHO_externalLink'      meta_type='ECHO_externalLink'
   
   
     def __init__(self,id,link,title,label,description,content_type,responsible,credits,weight,coords):      def __init__(self,id,link,title,label,description,contentType,responsible,credits,weight,coords):
   
         self.id = id          self.id = id
         """Festlegen der ID"""          """Festlegen der ID"""
Line 347  class ECHO_externalLink(Folder): Line 356  class ECHO_externalLink(Folder):
         self.title=title          self.title=title
         self.weight=weight          self.weight=weight
         self.description=description          self.description=description
         self.content_type=content_type          self.contentType=contentType
         self.responsible=responsible          self.responsible=responsible
         coordsnew=[ string.split(x,",") for x in coords]          coordsnew=[ string.split(x,",") for x in coords]
         self.coords=coordsnew          self.coords=coordsnew
Line 366  class ECHO_externalLink(Folder): Line 375  class ECHO_externalLink(Folder):
         return pt()          return pt()
           
   
     def changeECHO_externalLink(self,link,title,label,description,content_type,responsible,weight,coords=None,credits=None,RESPONSE=None):      def changeECHO_externalLink(self,link,title,label,description,contentType,responsible,weight,coords=None,credits=None,RESPONSE=None):
   
         """Änderung der Properties"""          """Änderung der Properties"""
           coordsnew=[ string.split(x,",") for x in coords]
                   
           setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coords)
   
         setECHO_collectionInformation(self,title,label,description,content_type,responsible,credits,weight,coords)          self.coords=coordsnew[0:]
   
           
         self.link=link          self.link=link
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 383  class ECHO_externalLink(Folder): Line 392  class ECHO_externalLink(Folder):
         {'label':'Main Config','action':'ECHO_externalLink_config'},          {'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):      def index_html(self):
         """standard page"""          """standard page"""
                   
Line 394  def manage_addECHO_externalLinkForm(self Line 410  def manage_addECHO_externalLinkForm(self
         return pt()          return pt()
   
   
 def manage_addECHO_externalLink(self,id,title,label,description,content_type,responsible,link,weight,coords=None,credits=None,RESPONSE=None):  def manage_addECHO_externalLink(self,id,title,label,description,contentType,responsible,link,weight,coords=None,credits=None,RESPONSE=None):
     """Add an external Link"""      """Add an external Link"""
   
     newObj=ECHO_externalLink(id,link,title,label,description,content_type,responsible,credits,weight,coords)      newObj=ECHO_externalLink(id,link,title,label,description,contentType,responsible,credits,weight,coords)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
   
Line 405  def manage_addECHO_externalLink(self,id, Line 421  def manage_addECHO_externalLink(self,id,
         RESPONSE.redirect('manage_main')          RESPONSE.redirect('manage_main')
     
                   
   
 class ECHO_collection(Folder, Persistent, Implicit):  class ECHO_collection(Folder, Persistent, Implicit):
     """ECHO Collection"""      """ECHO Collection"""
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
     meta_type='ECHO_collection'      meta_type='ECHO_collection'
   
       def getImageTag(self):
           """GetTag"""
           try:
               return self.imageTag
           except:
               return ""
   
       def addResource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None):
           """SSS"""
           try:
               manage_addECHO_resource(self,id,title,label,description,contentType,responsible,link,metalink,weight,credits=None,coords=None,RESPONSE=None)
               return "done"
           except:
               return None
   
       def getCollectionTreeXML(self):
           """Tree as XML"""
   
           def getCollection(object,depth=0):
               depth+=1
               collections=""
               for entry in object.__dict__.keys():
                   element=getattr(object,entry)
                   try:
                       if element.meta_type=="ECHO_collection":
                           collections+="<element name=\""+element.title+"\" url=\""+element.absolute_url()+"\">"
                           collections+=getCollection(element,depth)+"</element>\n"
                   except:
                       """nothing"""
               return collections
           
   
           return "<collection>"+getCollection(self)+"</collection>"
       
       def createJavaScript(self):
           """CreateJava"""
           ret=javaScriptMain
   
           dynamical=""
           for ob in self.getGraphicCoords():
               dynamical+="""Coords.push(new Coord('%s', Img, %s));\n"""%(ob[1],ob[0])
           ret+=javaHandler%dynamical
           return ret
           
     security.declarePublic('getCreditObject')      security.declarePublic('getCreditObject')
     def getCreditObject(self,name):      def getCreditObject(self,name):
         """credit id to credititem"""          """credit id to credititem"""
           try:
         return getattr(self.partners,name)          return getattr(self.partners,name)
           except:
               return ""
           
     security.declarePublic('ECHO_generateNavBar')      security.declarePublic('ECHO_generateNavBar')
     def ECHO_generateNavBar(self):      def ECHO_generateNavBar(self):
Line 455  class ECHO_collection(Folder, Persistent Line 517  class ECHO_collection(Folder, Persistent
                                   
         return "Rerenderd all links to resources in: "+self.title          return "Rerenderd all links to resources in: "+self.title
           
       security.declarePublic('ECHO_newViewerLink')
       
   
     def getCoords(self):      def getCoords(self):
         try:          try:
Line 466  class ECHO_collection(Folder, Persistent Line 530  class ECHO_collection(Folder, Persistent
   
             return []              return []
                   
     def __init__(self,id,title,label,description,content_type,responsible,credits,weight,sortfield,coords):      def __init__(self,id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,imageTag=""):
         #print "CO",coords          #print "CO",coords
   
         self.id = id          self.id = id
Line 475  class ECHO_collection(Folder, Persistent Line 539  class ECHO_collection(Folder, Persistent
         self.label = label          self.label = label
         self.title=title          self.title=title
         self.description=description          self.description=description
         self.content_type=content_type          self.contentType=contentType
         self.responsible=responsible          self.responsible=responsible
           self.imageTag=imageTag
         self.weight=weight          self.weight=weight
         self.sortfield=sortfield          self.sortfield=sortfield
         coordsnew=[ string.split(x,",") for x in coords]          coordsnew=[ string.split(x,",") for x in coords]
Line 491  class ECHO_collection(Folder, Persistent Line 555  class ECHO_collection(Folder, Persistent
   
         )          )
   
       def getOverview(self):
           """overview graphics"""
           
           return self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])[0][1]
       
       
     def ECHO_graphicEntry(self):      def ECHO_graphicEntry(self):
         """DO nothing"""          """DO nothing"""
         if 'overview' in self.aq_parent.__dict__.keys():          overview = self.aq_parent.ZopeFind(self.aq_parent,obj_ids=['overview'])
           
       
           if overview:
             pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_draw.zpt').__of__(self)              pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_draw.zpt').__of__(self)
             return pt()              return pt()
         else:          else:
Line 531  class ECHO_collection(Folder, Persistent Line 604  class ECHO_collection(Folder, Persistent
     security.declarePublic('changeECHO_collection')      security.declarePublic('changeECHO_collection')
   
   
     def changeECHO_collection(self,title,label,description,content_type,responsible,weight,credits=None,sortfield="weight",coords=None,RESPONSE=None):      def changeECHO_collection(self,title,label,description,contentType,responsible,weight,credits=None,sortfield="weight",coords=None,RESPONSE=None,imageTag=""):
         """Änderung der Properties"""          """Änderung der Properties"""
   
           self.imageTag=imageTag
         coordsnew=[ string.split(x,",") for x in coords]          coordsnew=[ string.split(x,",") for x in coords]
   
         setECHO_collectionInformation(self,title,label,description,content_type,responsible,credits,weight,coordsnew)          setECHO_collectionInformation(self,title,label,description,contentType,responsible,credits,weight,coordsnew)
   
           self.coords=coordsnew[0:]
         self.sortfield=sortfield          self.sortfield=sortfield
   
         if RESPONSE is not None:          if RESPONSE is not None:
Line 545  class ECHO_collection(Folder, Persistent Line 620  class ECHO_collection(Folder, Persistent
                           
     security.declarePublic('index_html')      security.declarePublic('index_html')
   
     showOverview=DTMLFile('ECHO_content_overview',globals())  
       def showOverview(self):
           """overview"""
           if 'ECHO_overview.html' in self.__dict__.keys():
               return getattr(self,'ECHO_overview.html')()
           pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_overview.zpt').__of__(self)
           return pt()
           
           
     def index_html(self):      def index_html(self):
Line 558  class ECHO_collection(Folder, Persistent Line 639  class ECHO_collection(Folder, Persistent
                           
                   
         pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_standard.zpt').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/ECHO_content_standard.zpt').__of__(self)
         pt.content_type="text/html"          pt.contentType="text/html"
         return pt()          return pt()
   
     def getCredits(self):      def getCredits(self):
Line 568  class ECHO_collection(Folder, Persistent Line 649  class ECHO_collection(Folder, Persistent
         else:          else:
             return []              return []
   
   
           
     def getGraphicCoords(self):      def getGraphicCoords(self):
         """Give list of coordinates"""          """Give list of coordinates"""
         subColTypes=['ECHO_collection','ECHO_externalLink','ECHO_resource']          subColTypes=['ECHO_collection','ECHO_externalLink','ECHO_resource']
Line 579  class ECHO_collection(Folder, Persistent Line 662  class ECHO_collection(Folder, Persistent
                     for coordtemp in object.coords:                      for coordtemp in object.coords:
                         if len(coordtemp)>3:                          if len(coordtemp)>3:
                             coord=coordtemp[0:4]                              coord=coordtemp[0:4]
                             if hasattr(object,'title'):                              if hasattr(object,'label') and not object.label=="":
                                   ids.append([string.join(coord,", "),object.getId(),object.label,object])
                               elif hasattr(object,'title'):
                                 if not object.title=="":                                  if not object.title=="":
                                     ids.append([string.join(coord,", "),object.getId(),object.title])                                      ids.append([string.join(coord,", "),object.getId(),object.title,object])
                                 else:                                  else:
                                     ids.append([string.join(coord,", "),object.getId(),object.getId()])                                      ids.append([string.join(coord,", "),object.getId(),object.getId(),object])
                             else:                              else:
                                 ids.append([string.join(coord,", "),object.getId(),object.getId()])                                  ids.append([string.join(coord,", "),object.getId(),object.getId(),object])
                                           
             except:              except:
                 """nothing"""                  """nothing"""
Line 634  def manage_addECHO_collectionForm(self): Line 719  def manage_addECHO_collectionForm(self):
         return pt()          return pt()
   
   
 def manage_addECHO_collection(self,id,title,label,description,content_type,responsible,weight,sortfield,coords="",credits=None,RESPONSE=None):  def manage_addECHO_collection(self,id,title,label,description,contentType,responsible,weight,sortfield,coords="",credits=None,RESPONSE=None,imageTag=""):
     """add a echo collection"""      """add a echo collection"""
           
   
     newObj=ECHO_collection(id,title,label,description,content_type,responsible,credits,weight,sortfield,coords)      newObj=ECHO_collection(id,title,label,description,contentType,responsible,credits,weight,sortfield,coords,imageTag)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
   
Line 649  class ECHO_root(Folder,Persistent,Implic Line 734  class ECHO_root(Folder,Persistent,Implic
     """ECHO Root Folder"""      """ECHO Root Folder"""
     meta_type="ECHO_root"      meta_type="ECHO_root"
   
   
       def contentTypeSelector_HTML(self,selected=None):
           """give type selector"""
           if not selected:
               retStr="<option selected>\n"
           else:
               retStr="<option>\n"
               
           try:
               for contentType in self.ZopeFind(self.contentTypes,obj_metatypes="ECHO_contentType"):
                   if selected and (contentType[0]==selected):
                       retStr+="""<option selected value="%s">%s\n"""%(contentType[0],contentType[0])
                   else:                
                       retStr+="""<option value="%s">%s\n"""%(contentType[0],contentType[0])
           except:
               """nothing"""
           return retStr
               
       def patchContentType(self,obj=None):
           """austauschen content_type with contentType (patch bei umstieg von alter Version)"""
       
   
           if not obj:
               obj = self
               
           entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_resource','ECHO_collection,ECHO_externalLink,ECHO_pageTemplate'])
   
           for entry in entries:
                   
                   entry[1].contentType == entry[1].content_type
   
                   if entry[1].meta_type == 'ECHO_collection':
                       entry[1].patchContentType(entry[1])    
   
                   
           return "Rerenderd all links to resources in: "+self.title
       
       def ECHO_newViewerLink(self,obj=None):
           """change links (:86 faellt weg)"""
   
           if not obj:
               obj = self
               
           entries=obj.ZopeFind(obj,obj_metatypes=['ECHO_resource','ECHO_collection'])
   
           for entry in entries:
                   
                   if entry[1].meta_type == 'ECHO_resource':
                       
                       entry[1].link=re.sub('\:86','',entry[1].link)
   
                   else:
                       
                       entry[1].ECHO_newViewerLink(entry[1])
                   
           return "Rerenderd all links to resources in: "+self.title
   
     def __init__(self,id,title):      def __init__(self,id,title):
         """init"""          """init"""
         self.id = id          self.id = id
Line 720  class ECHO_root(Folder,Persistent,Implic Line 862  class ECHO_root(Folder,Persistent,Implic
                   
     def getPartners(self):      def getPartners(self):
         """Get list of Partners. Presently only from a subfolder partners"""          """Get list of Partners. Presently only from a subfolder partners"""
         partnerTypes=['ECHO_partner']  
         ids=[]  
         try:  
             for entry in self.partners.__dict__.keys():  
                 object=getattr(self.partners,entry)  
                                   
                 try:          return [ item[1] for item in self.partners.ZopeFind(self.partners,obj_metatypes=['ECHO_partner'])]
                                   
                     if object.meta_type in partnerTypes:  
                         ids.append(object)  
                                           
                 except:                     
                     """nothing"""  
         except:      
             ids=[] # no partners      def getPartnersXML(self):
         return ids          """partner liste als xml""" 
           partners=self.getPartners()
           ret="<partners>"
           for partner in partners:
               ret+="""<partner id="%s" title="%s"/>\n"""%(partner.getId(),partner.title)
   
           return ret+"\n</partners>"
   
     def getCollectionTree(self):      def getCollectionTree(self):
         """get the collection tree (list of triples (parent,child, depth)"""          """get the collection tree (list of triples (parent,child, depth)"""
Line 782  class ECHO_partner(Image,Persistent): Line 923  class ECHO_partner(Image,Persistent):
   
     meta_type="ECHO_partner"      meta_type="ECHO_partner"
   
     def __init__(self, id, title,url, file, content_type='', precondition=''):      def __init__(self, id, title,url, file, contentType='', precondition=''):
         self.__name__=id          self.__name__=id
         self.title=title          self.title=title
         self.url=url          self.url=url
         self.precondition=precondition          self.precondition=precondition
   
         data, size = self._read_data(file)          data, size = self._read_data(file)
         content_type=self._get_content_type(file, data, id, content_type)          contentType=self._get_contentType(file, data, id, contentType)
         self.update_data(data, content_type, size)          self.update_data(data, contentType, size)
   
     manage_options = Image.manage_options+(      manage_options = Image.manage_options+(
         {'label':'Partner Information','action':'ECHO_partner_config'},          {'label':'Partner Information','action':'ECHO_partner_config'},
Line 817  manage_addECHO_partnerForm=DTMLFile('dtm Line 958  manage_addECHO_partnerForm=DTMLFile('dtm
   
   
   
 def manage_addECHO_partner(self, id, file,url, title='', precondition='', content_type='',  def manage_addECHO_partner(self, id, file,url, title='', precondition='', contentType='',
                     REQUEST=None):                      REQUEST=None):
     """      """
     Add a new ECHO_partner object.      Add a new ECHO_partner object.
Line 828  def manage_addECHO_partner(self, id, fil Line 969  def manage_addECHO_partner(self, id, fil
   
     id=str(id)      id=str(id)
     title=str(title)      title=str(title)
     content_type=str(content_type)      contentType=str(contentType)
     precondition=str(precondition)      precondition=str(precondition)
   
     id, title = OFS.Image.cookId(id, title, file)      id, title = OFS.Image.cookId(id, title, file)
Line 836  def manage_addECHO_partner(self, id, fil Line 977  def manage_addECHO_partner(self, id, fil
     self=self.this()      self=self.this()
   
     # First, we create the image without data:      # First, we create the image without data:
     self._setObject(id, ECHO_partner(id,title,url,'',content_type, precondition))      self._setObject(id, ECHO_partner(id,title,url,'',contentType, precondition))
   
     # Now we "upload" the data.  By doing this in two steps, we      # Now we "upload" the data.  By doing this in two steps, we
     # can use a database trick to make the upload more efficient.      # can use a database trick to make the upload more efficient.
     if file:      if file:
         self._getOb(id).manage_upload(file)          self._getOb(id).manage_upload(file)
     if content_type:      if contentType:
         self._getOb(id).content_type=content_type          self._getOb(id).contentType=contentType
   
     if REQUEST is not None:      if REQUEST is not None:
         try:    url=self.DestinationURL()          try:    url=self.DestinationURL()

Removed from v.1.14  
changed lines
  Added in v.1.28


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>