Diff for /MPIWGWeb/MPIWGProjects.py between versions 1.47.2.106 and 1.47.2.125

version 1.47.2.106, 2008/09/12 12:28:48 version 1.47.2.125, 2012/01/09 10:36:48
Line 13  from Globals import package_home Line 13  from Globals import package_home
 import urllib  import urllib
 import re  import re
 import os   import os 
   import email
 from types import *  from types import *
 import logging  import logging
 import xmlhelper # Methoden zur Verwaltung der projekt xml  import xmlhelper # Methoden zur Verwaltung der projekt xml
Line 20  from OFS.SimpleItem import SimpleItem Line 21  from OFS.SimpleItem import SimpleItem
 from OFS.Folder import Folder  from OFS.Folder import Folder
 from OFS.Image import Image  from OFS.Image import Image
 from AccessControl import ClassSecurityInfo  from AccessControl import ClassSecurityInfo
   from AccessControl import getSecurityManager
 from bibliography import *  from bibliography import *
 import time  import time
 from OFS.Cache import Cacheable  from OFS.Cache import Cacheable
   import xmlrpclib
 #import xml.dom.minidom  #import xml.dom.minidom
 import sys  import sys
 #from Ft.Xml.XPath import Evaluate  #from Ft.Xml.XPath import Evaluate
Line 56  class MPIWGProject_publication(Folder): Line 59  class MPIWGProject_publication(Folder):
     """publications object fuer project"""      """publications object fuer project"""
   
     meta_type="MPIWGProject_publication"      meta_type="MPIWGProject_publication"
       def redirect(self,RESPONSE,url):
           """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen"""
   
     def editPublication(self,text=None,image1=None,image2=None,description=None,RESPONSE=None):          timeStamp=time.time()
           
           if url.find("?")>-1: #giebt es schon parameter
               addStr="&time=%s"
           else:
               addStr="?time=%s"
               
           RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT')
           logging.debug(email.Utils.formatdate()+' GMT')
           RESPONSE.redirect(url+addStr%timeStamp)
   
       def hasLinkToBookPage(self):
           """teste ob eingebener link zu einer MPIWG Book page geht"""
           
           if (getattr(self,'link','')==''):
               return False #es gibt keinen link
           
           server = xmlrpclib.ServerProxy(self.link)
           
           try:
               server.getImageUrls()
               return True
           except:
               return False
           
       
       def getImageUrls(self):
           """get the image urls"""
           
           if (getattr(self,'link','')==''):
               return False #es gibt keinen link
           
           server = xmlrpclib.ServerProxy(self.link)
           
           try:
               urls = server.getImageUrls()
               ret=[]
               for url in urls:
                   url = os.path.join(self.link,url)
                   ret.append(url)
              
           except:
               return []
           
           return ret
           
       def editPublication(self,text=None,image1=None,image2=None,description=None,link=None,RESPONSE=None):
         """edit a publication"""          """edit a publication"""
   
         if (not text) and (not description):          if (not text) and (not description):
Line 65  class MPIWGProject_publication(Folder): Line 116  class MPIWGProject_publication(Folder):
             return pt()              return pt()
   
                 
           if text:
         self.text=text[0:]          self.text=text[0:]
           
           if description:
         self.description=description          self.description=description
                   
           if link:
               self.link=link[0:]
           
         if image1:          if image1:
             if hasattr(self,'publicationImage1'):              if hasattr(self,'publicationImage1'):
                 self.publicationImage1.manage_upload(image1)                  self.publicationImage1.manage_upload(image1)
Line 83  class MPIWGProject_publication(Folder): Line 140  class MPIWGProject_publication(Folder):
                 self._setObject('publicationImage2',nO)                  self._setObject('publicationImage2',nO)
                                         
                           
           self.ZCacheable_invalidate()
         if RESPONSE:          if RESPONSE:
             RESPONSE.redirect("../managePublications")              self.redirect(RESPONSE,"../managePublications")
   
   class MPIWGProject_relatedProject(Folder):
       """publications object fuer project"""
   
       meta_type="MPIWGProject_relatedProject"
       def redirect(self,RESPONSE,url):
           """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen"""
           
           timeStamp=time.time()
           
           if url.find("?")>-1: #giebt es schon parameter
               addStr="&time=%s"
           else:
               addStr="?time=%s"
               
           RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT')
           logging.debug(email.Utils.formatdate()+' GMT')
           RESPONSE.redirect(url+addStr%timeStamp)
   
           
       def editRelatedProject(self,link=None,RESPONSE=None):
           """edit a publication"""
   
           if (not link):
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_relatedProjectForm.zpt')).__of__(self)
               return pt()
   
          
          
         
           
           # hole die id des projektes
           splitted=link.split("/")
           
           #teste ob es das project gibt
           if len(splitted)<1:
               self.redirect(RESPONSE,'errorRelatedProjects?link='+link)
           
           objid=splitted[-1]
           object = getattr(self.projects,objid,None)
           
           if object==None:
               self.redirect(RESPONSE,'errorRelatedProjects?link='+link)
           
         
   
           
          
           self.orginallink=link[0:]
           self.objid=objid[0:]
       
           self.projectWEB_title=object.getContent('WEB_title')[0:]
          
           self.enabled=True;
           self.ZCacheable_invalidate()
          
           if RESPONSE:
               self.redirect(RESPONSE,"../manageRelatedProjects")
                           
 class MPIWGProject_image(Image):  class MPIWGProject_image(Image):
     """Images for Projects"""      """Images for Projects"""
Line 110  class MPIWGProject_image(Image): Line 226  class MPIWGProject_image(Image):
             self.caption=caption[0:]              self.caption=caption[0:]
   
         if RESPONSE:          if RESPONSE:
             RESPONSE.redirect("../manageImages")              self.redirect(RESPONSE,"../manageImages")
   
 class MPIWGProject(CatalogAware,Folder,Cacheable):  class MPIWGProject(CatalogAware,Folder,Cacheable):
     """Class for Projects"""      """Class for Projects"""
   
       def _p_resolveConflict(self, oldState, savedState, newState):
           return newState
   
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
     meta_type='MPIWGProject'      meta_type='MPIWGProject'
     default_catalog='ProjectCatalog'      default_catalog='ProjectCatalog'
   
       def redirect(self,RESPONSE,url):
           """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen"""
           
           timeStamp=time.time()
           
           if url.find("?")>-1: #giebt es schon parameter
               addStr="&time=%s"
           else:
               addStr="?time=%s"
               
           RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT')
           logging.debug(email.Utils.formatdate()+' GMT')
           RESPONSE.redirect(url+addStr%timeStamp)
   
     def decode(self,str):      def decode(self,str):
         """return unicode object"""          """return unicode object"""
         return unicodify(str)          return unicodify(str)
Line 147  class MPIWGProject(CatalogAware,Folder,C Line 279  class MPIWGProject(CatalogAware,Folder,C
             pubSplit=pubSplit.replace("</p>","")              pubSplit=pubSplit.replace("</p>","")
             self.addPublication(pubSplit)              self.addPublication(pubSplit)
   
           setattr(self,"WEB_related_pub_copied",True);
           
         if RESPONSE:          if RESPONSE:
             RESPONSE.redirect('managePublications')                  
               self.redirect(RESPONSE,'managePublications')
           
       def hasRelatedPublicationsOldVersion(self):
           """teste ob es related publications gibt"""
           
           ret = True;
           if (self.getContent('WEB_related_pub')==''):
               ret=False;  #nichts im alten feld
           logging.debug("webrel:"+repr(ret))
           if (getattr(self,'WEB_related_pub_copied',False)):
               ret=False; # alte daten sind schon kopiert worden
           
           logging.debug("webrel_copied:"+repr(ret))
           publications=self.ZopeFind(self,obj_metatypes=['MPIWGProject_publication']);
           
           if(len(publications)>0):
               ret=False; # es gibt publicationen in der neuen liste
         
           
           logging.debug("len(publ)"+repr(ret))
           
           return ret;
       
       def hasRelatedDigitalSources(self):
           """test ob es digital sources gibt"""
           
           
           ret = (self.getContent('xdata_11').lstrip().rstrip()=='')
               
         
         
           return not ret;
               
           
                   
           
     def copyImageToMargin(self,RESPONSE=None):        def copyImageToMargin(self,RESPONSE=None):  
Line 217  class MPIWGProject(CatalogAware,Folder,C Line 385  class MPIWGProject(CatalogAware,Folder,C
             obj.update_data(data)              obj.update_data(data)
                   
         if RESPONSE:          if RESPONSE:
             RESPONSE.redirect('manageImages')          
               self.redirect(RESPONSE,'manageImages')
                           
     def manageImages(self,imageName=None,op=None):      def manageImages(self,imageName=None,op=None):
         """managage images"""          """managage images"""
Line 274  class MPIWGProject(CatalogAware,Folder,C Line 443  class MPIWGProject(CatalogAware,Folder,C
   
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_managePublicationsForm.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_managePublicationsForm.zpt')).__of__(self)
         return pt()          return pt()
       
       def manageRelatedProjects(self,pubName=None,op=None):
           """managage relatedProjectd"""
   
   
           if pubName and op:
               if op=='up':
                   relatedProjects=self.getRelatedProjects()
                   for project in relatedProjects:
                       if project[0]==pubName:
                           nr=relatedProjects.index(project)
                           if not nr==0:
                               relatedProjects[nr-1][1].place+=1
                               relatedProjects[nr][1].place-=1
                           pass
               elif op=='down':
                   relatedProjects=self.getRelatedProjects()
                   for project in relatedProjects:
                       if project[0]==pubName:
                           nr=relatedProjects.index(project)
                           if not (nr==len(relatedProjects)-1):
                               relatedProjects[nr+1][1].place-=1
                               relatedProjects[nr][1].place+=1
                           pass
   
   
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_manageRelatedProjectsForm.zpt')).__of__(self)
           return pt()
       
       
     def hasExtendedPublicationList(self):      def hasExtendedPublicationList(self):
         """test if extended publication list exists"""          """test if extended publication list exists"""
         if not hasattr(self,"publicationList"):          if not hasattr(self,"publicationList"):
Line 296  class MPIWGProject(CatalogAware,Folder,C Line 495  class MPIWGProject(CatalogAware,Folder,C
   
           
         if RESPONSE:          if RESPONSE:
             RESPONSE.redirect("managePublications")              self.redirect(RESPONSE,"managePublications")
   
                           
     def getPublications(self):      def getPublications(self):
         """get all Publications"""          """get all Publications"""
Line 308  class MPIWGProject(CatalogAware,Folder,C Line 508  class MPIWGProject(CatalogAware,Folder,C
         publications.sort(sort_images)          publications.sort(sort_images)
         return publications          return publications
   
       def getRelatedProjects(self):
           """get all Publications"""
           def sort_images(x,y):
               return cmp(getattr(x[1],'place',0),getattr(y[1],'place',0))
   
           publications=self.ZopeFind(self,obj_metatypes=['MPIWGProject_relatedProject'])
           
           publications.sort(sort_images)
           return publications
   
     def addPublication(self,text,RESPONSE=None):      def addPublication(self,text,RESPONSE=None):
         """add an MPIWG_Publication"""          """add an MPIWG_Publication"""
           number=self.getLastPublicationNumber()+1
         name="publication_"+str(self.getLastPublicationNumber()+1)          name="publication_"+str(number)
           while hasattr(self,name):
               number+=1
               name="publication_"+str(number)
                   
         newPublication=MPIWGProject_publication(name)          newPublication=MPIWGProject_publication(name)
   
Line 321  class MPIWGProject(CatalogAware,Folder,C Line 534  class MPIWGProject(CatalogAware,Folder,C
         obj.enabled=True;          obj.enabled=True;
         obj.place=self.getLastPublicationNumber()+1          obj.place=self.getLastPublicationNumber()+1
         obj.id=name          obj.id=name
           self.ZCacheable_invalidate()
           if RESPONSE is not None:
           
               self.redirect(RESPONSE,'managePublications')
   
       def errorRelatedProjects(self,link):
           """error creating a related project"""
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_project_error_relatedProject.zpt')).__of__(self)
           return pt(link=link)
   
       def addRelatedProject(self,link,RESPONSE=None):
           """add an MPIWG_Publication"""
                   
           
           
           number=self.getLastPublicationNumber()+1
           name="RelatedProject"+str(number)
           while hasattr(self,name):
               number+=1
               name="RelatedProject_"+str(number)
           
           # hole die id des projektes
           splitted=link.split("/")
           
           #teste ob es das project gibt
           if len(splitted)<1:
               self.redirect(RESPONSE,'errorRelatedProjects?link='+link)
           
           objid=splitted[-1]
           object = getattr(self.projects,objid,None)
           
           if object==None:
               self.redirect(RESPONSE,'errorRelatedProjects?link='+link)
               return
           
           newPublication=MPIWGProject_relatedProject(name)
   
           self._setObject(name,newPublication)
           obj=getattr(self,name)
           obj.orginallink=link[0:]
           obj.objid=objid[0:]
           logging.debug("add relobj:objid"+repr(obj.objid))
           obj.projectWEB_title=object.getContent('WEB_title')[0:]
           logging.debug("add relobj:webtitle"+repr(obj.projectWEB_title))
           obj.enabled=True;
           obj.place=self.getLastRelatedProjectNumber()+1
           obj.id=name
           self.ZCacheable_invalidate()
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('managePublications')          
               self.redirect(RESPONSE,'manageRelatedProjects')
   
   
     
     def getLastPublicationNumber(self):      def getLastPublicationNumber(self):
Line 334  class MPIWGProject(CatalogAware,Folder,C Line 596  class MPIWGProject(CatalogAware,Folder,C
         else:          else:
             return getattr(publications[-1][1],'place',0)              return getattr(publications[-1][1],'place',0)
                   
       def getLastRelatedProjectNumber(self):
           publications=self.getRelatedProjects()
           
           if not publications:
               return 0
           else:
               return getattr(publications[-1][1],'place',0)
           
     def deletePublication(self,id,RESPONSE=None):      def deletePublication(self,id,RESPONSE=None):
             """delete Publication id"""              """delete Publication id"""
             self.manage_delObjects([id])              self.manage_delObjects([id])
               self.ZCacheable_invalidate()
               if RESPONSE:
           
                   self.redirect(RESPONSE,'managePublications')
                 
       def deleteRelatedProject(self,id,RESPONSE=None):
               """delete Publication id"""
               self.manage_delObjects([id])
               self.ZCacheable_invalidate()
             if RESPONSE:              if RESPONSE:
                 RESPONSE.redirect('managePublications')          
                   self.redirect(RESPONSE,'manageRelatedProjects')
                                   
     def getImages(self):      def getImages(self):
         """get all Images"""          """get all Images"""
Line 375  class MPIWGProject(CatalogAware,Folder,C Line 655  class MPIWGProject(CatalogAware,Folder,C
         except:          except:
                 logging.error("ERROR MPIWG: %s %s"%sys.exc_info()[0:2])                  logging.error("ERROR MPIWG: %s %s"%sys.exc_info()[0:2])
         if RESPONSE:          if RESPONSE:
             RESPONSE.redirect('manageImages')              self.redirect(RESPONSE,'manageImages')
   
   
     
     def hasChildren(self,date=None,onlyActive=1,onlyArchived=1):      def hasChildren(self,date=None,onlyActive=1,onlyArchived=1):
         """check if project has children"""          """check if project has children"""
           
         ct=self.getContexts(childs=self.getContent('xdata_05'),          ct=self.getContexts(childs=self.getContent('xdata_05'),
                                  depth=1,date=date,onlyActive=onlyActive)                                   depth=1,date=date,onlyActive=onlyActive)
                   
Line 408  class MPIWGProject(CatalogAware,Folder,C Line 690  class MPIWGProject(CatalogAware,Folder,C
         obj.id=filename          obj.id=filename
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manageImages')              
               self.redirect(RESPONSE,'manageImages')
   
     def PrincipiaSearchSource(self):      def PrincipiaSearchSource(self):
         """Return cataloguable key for ourselves."""          """Return cataloguable key for ourselves."""
Line 477  class MPIWGProject(CatalogAware,Folder,C Line 760  class MPIWGProject(CatalogAware,Folder,C
         else:          else:
             return 1              return 1
                   
       def isActualForIndex(self): #isActual kann nicht indiziert werden, da intern fom ZCAtalog verwendete Funktion
           """gibt 1 zurueck wenn aktuell, 0 sonst"""
           actualTime=time.localtime()
           
           
           #print getattr(self,'archiveTime',actualTime)
           if getattr(self,'archiveTime',actualTime)< actualTime:
               return 0
           else:
               return 1
           
     def copyObjectToArchive(self):      def copyObjectToArchive(self):
         """kopiere aktuelles objekt ins archiv"""          """kopiere aktuelles objekt ins archiv"""
           logging.info("copytoarchive 1")
         cb=self.aq_parent.manage_copyObjects(self.getId())          cb=self.aq_parent.manage_copyObjects(self.getId())
           logging.info("copytoarchive 2")
         self.manage_pasteObjects(cb)          self.manage_pasteObjects(cb)
           logging.info("copytoarchive 3")
         actualTime=time.localtime()          actualTime=time.localtime()
                   
         self.manage_renameObject(self.getId(),self.getId()+"_"+time.strftime("%Y%m%d%H%M%S",actualTime))          self.manage_renameObject(self.getId(),self.getId()+"_"+time.strftime("%Y%m%d%H%M%S",actualTime))
           logging.info("copytoarchive 4")
         obj=getattr(self,self.getId()+"_"+time.strftime("%Y%m%d%H%M%S",actualTime))          obj=getattr(self,self.getId()+"_"+time.strftime("%Y%m%d%H%M%S",actualTime))
         obj.setArchiveTime(time.strftime("%Y%m%d%H%M%S",actualTime))          obj.setArchiveTime(time.strftime("%Y%m%d%H%M%S",actualTime))
           logging.info("copytoarchive 5")
         ids=[x[0] for x in self.ZopeFind(obj,obj_metatypes=['MPIWGProject'])]          ids=[x[0] for x in self.ZopeFind(obj,obj_metatypes=['MPIWGProject'])]
           logging.info("copytoarchive 6")
         obj.manage_delObjects(ids)          obj.manage_delObjects(ids)
           logging.info("copytoarchive 7")
                   
     def setArchiveTime(self,time):      def setArchiveTime(self,time):
         """set Archive Time"""          """set Archive Time"""
         self.archiveTime=time[0:]          self.archiveTime=time[0:]
                   
       def delArchiveTime(self):
           """delete archive time"""
           del self.archiveTime
   
     def versionManageForm(self):      def versionManageForm(self):
         """version Manage form:currently only set to invisible"""          """version Manage form:currently only set to invisible"""
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_versionManageForm.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_versionManageForm.zpt')).__of__(self)
Line 503  class MPIWGProject(CatalogAware,Folder,C Line 808  class MPIWGProject(CatalogAware,Folder,C
         self.invisible=invisible          self.invisible=invisible
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              
               self.redirect(RESPONSE,'manage_main')
   
         
     def crossLinker(self):      def crossLinker(self):
Line 539  class MPIWGProject(CatalogAware,Folder,C Line 845  class MPIWGProject(CatalogAware,Folder,C
         self._setObject(id,newObj)          self._setObject(id,newObj)
         #self.manage_addPageTemplate(id,title)          #self.manage_addPageTemplate(id,title)
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              self.redirect(RESPONSE,'manage_main')
                           
     def __init__(self, id, argv=None):      def __init__(self, id, argv=None):
         """initiere classe"""          """initiere classe"""
Line 618  class MPIWGProject(CatalogAware,Folder,C Line 924  class MPIWGProject(CatalogAware,Folder,C
     def getCompletedAt(self):      def getCompletedAt(self):
         """gibt das transformierte Datum zurueck, an dem das Projekt beendet wurde."""          """gibt das transformierte Datum zurueck, an dem das Projekt beendet wurde."""
         date=getattr(self,'completedAt','')          date=getattr(self,'completedAt','')
         
         if date:          if date:
             return self.reTransformDate(date);              return self.reTransformDate(date);
         else:          else:
               return ""
             # test ob parent abgeschlossen ist              # test ob parent abgeschlossen ist
         try:          #TODO: ersetzte try except durch vernuenftige abfrage            try:          #TODO: ersetzte try except durch vernuenftige abfrage  
                 ct=self.getContexts(parents=self.getContent('xdata_05'),depth=1)                  ct=self.getContexts(parents=self.getContent('xdata_05'),depth=1)
                 if (len(ct)>0): #is there are parent                  if (len(ct)>0): #is there are parent
                   
                     return ct[0][0].getCompletedAt()                      return ct[0][0].getCompletedAt()
                 return '';                  return '';
         except:          except:
         return '';          return '';
                   
     def getStartedAt(self):      def getStartedAt(self):
         """gibt das transformierte Datum zurŸck, an dem Projekt begonnen wurde."""          """gibt das transformierte Datum zurueck, an dem Projekt begonnen wurde."""
         date=getattr(self,'startedAt','')          date=getattr(self,'startedAt','')
         if date:          if date:
             return self.reTransformDate(date);              return self.reTransformDate(date);
Line 653  class MPIWGProject(CatalogAware,Folder,C Line 960  class MPIWGProject(CatalogAware,Folder,C
                   
                   
     def transformDate(self,date):      def transformDate(self,date):
         """transformiert ein Datum von DD.MM.YYYY, MM.YYYY,YYYY nach  YYYYMMDD, alle nicht angebebenn Werte          """transformiert ein Datum von DD.MM.YYYY, MM.YYYY,YYYY nach  YYYYMMDD, alle nicht angebenen Werte
         werden auf 0 gesetzt, es wird null zurŸckgegeben falls das Datum ungueltig ist"""           werden auf 0 gesetzt, es wird null zurueckgegeben falls das Datum ungueltig ist""" 
         
         if (date==None):          if (date==None):
             return None;              return None;
Line 736  class MPIWGProject(CatalogAware,Folder,C Line 1043  class MPIWGProject(CatalogAware,Folder,C
         return pt()          return pt()
           
       
     def harvest_page(self,context=None):      def harvest_page(self,context=None,mode="normal"):
         """seite fuer harvesting fuer die Projektsuche"""          """seite fuer harvesting fuer die Projektsuche"""
         if not context:          if not context:
             context=self              context=self
                           
         if self.isActiveProject() and self.isActual():          if self.isActiveProject() and self.isActual():
                templates = self.en.getHarvestCache()
               
              ext=getattr(self,"harvest_main",None)               ext=getattr(self,"harvest_main",None)
              if ext:               if ext:
                  return getattr(self,ext.getId())()                   rendered = getattr(self,ext.getId())()
                    templates[self.absolute_url()]=rendered
               
                    return rendered
                    
   
              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','harvest_main')).__of__(context)                   pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','harvest_main')).__of__(context)    
   
                rendered = pt()
                templates[self.absolute_url()]=rendered
               
                return rendered
                    
   
              return pt()  
                     
     def index_html(self,request=True,context=None):      def index_html(self,request=True,context=None):
         """show homepage"""          """show homepage"""
       
           bound_names={}
            
           if not context:
               context=self
           if request:
               if self.REQUEST.has_key('date') and self.REQUEST.SESSION.get('MPI_redirected',None)==None:
                   self.REQUEST.SESSION['MPI_redirected']=1
                   self.REQUEST.RESPONSE.redirect(self.checkDate(self.REQUEST['date'])+"?date="+self.REQUEST['date'])
               else:
                   self.REQUEST.SESSION['MPI_redirected']=None
           
           #ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"])
         
      
           request2=getattr(self,'REQUEST',None)
           
           if request2 is not None:
               response = request2.response
               if not response.headers.has_key('content-type'):
                   response.setHeader('content-type', 'text/html')
   
           security = getSecurityManager()
           bound_names['user'] = security.getUser()
         
           # Retrieve the value from the cache.
           keyset = None
           if self.ZCacheable_isCachingEnabled():
               
               # Prepare a cache key.
               keyset = {'here': self, 'params':request2['QUERY_STRING']}
                         
               result = self.ZCacheable_get(keywords=keyset)
              
               if result is not None:
                   # Got a cached value.
                   return result
           
           pt = getTemplate(self, "project_main")
            # Execute the template in a new security context.
           security.addContext(self)
   
           try:
               #logging.debug("index_html pt=%s"%repr(pt))
               result = pt.pt_render(extra_context=bound_names)
               #logging.debug("index_html result=%s"%repr(result))
               if keyset is not None:
                   # Store the result in the cache.
                   self.ZCacheable_set(result, keywords=keyset)
                  
               return result
           finally:
               security.removeContext(self)
          
   
         
       def index_html_old(self,request=True,context=None):
           """show homepage"""
         if not context:          if not context:
             context=self              context=self
         if request:          if request:
Line 792  class MPIWGProject(CatalogAware,Folder,C Line 1167  class MPIWGProject(CatalogAware,Folder,C
   
     def getContent(self,field,filter=None):      def getContent(self,field,filter=None):
         """Inhalt des Feldes"""          """Inhalt des Feldes"""
           #logging.debug("getContent field=%s filter=%s"%(field,filter))
                   
     if field=="short_title":      if field=="short_title":
         text = self.getContent("xdata_07")          text = self.getContent("xdata_07")
Line 901  class MPIWGProject(CatalogAware,Folder,C Line 1277  class MPIWGProject(CatalogAware,Folder,C
                   
     def saveEditedContent(self,kupu=None,preview=None):      def saveEditedContent(self,kupu=None,preview=None):
         """save Edited content"""          """save Edited content"""
           #logging.debug("saveEditedContent kupu=%s preview=%s"%(kupu,preview))
   
         if preview:          if preview:
             kupu=preview              kupu=preview
Line 910  class MPIWGProject(CatalogAware,Folder,C Line 1287  class MPIWGProject(CatalogAware,Folder,C
         newcontent= kupu[start+6:end]          newcontent= kupu[start+6:end]
             
         if preview:          if preview:
               
             return self.preview(newcontent)              return self.preview(newcontent)
   
         self.copyObjectToArchive()          self.copyObjectToArchive()
           self.ZCacheable_invalidate()
         self.WEB_project_description=newcontent[0:]          self.WEB_project_description=newcontent[0:]
                 
         self.REQUEST.RESPONSE.redirect("./index.html")          self.REQUEST.RESPONSE.redirect("./index.html")
Line 966  class MPIWGProject(CatalogAware,Folder,C Line 1343  class MPIWGProject(CatalogAware,Folder,C
             baseUrl = "/en/research/projects/"              baseUrl = "/en/research/projects/"
                           
         # add in the internal project hierarchy          # add in the internal project hierarchy
           
         ct=self.getContexts(parents=self.getContent('xdata_05'))          ct=self.getContexts(parents=self.getContent('xdata_05'))
         # start with grandparents          # start with grandparents
         ct.reverse()          ct.reverse()
Line 980  class MPIWGProject(CatalogAware,Folder,C Line 1358  class MPIWGProject(CatalogAware,Folder,C
   
     def getRootProject(self):      def getRootProject(self):
         """returns the root (=top level) project of the current project"""          """returns the root (=top level) project of the current project"""
           
         ct=self.getContexts(parents=self.getContent('xdata_05'))          ct=self.getContexts(parents=self.getContent('xdata_05'))
         if len(ct) > 0:          if len(ct) > 0:
             return ct[-1][0]              return ct[-1][0]
Line 989  class MPIWGProject(CatalogAware,Folder,C Line 1368  class MPIWGProject(CatalogAware,Folder,C
   
     def preview(self,description):      def preview(self,description):
         """preview"""          """preview"""
           #logging.debug("preview description=%s"%description)
         tmpPro=getattr(self,"previewTemplate",None)          tmpPro=getattr(self,"previewTemplate",None)
         if not tmpPro:          if not tmpPro:
             tmpPro=MPIWGProject("previewTemplate")              tmpPro=MPIWGProject("previewTemplate")
Line 997  class MPIWGProject(CatalogAware,Folder,C Line 1377  class MPIWGProject(CatalogAware,Folder,C
             setattr(tmpPro,field,getattr(self,field))              setattr(tmpPro,field,getattr(self,field))
         tmpPro.WEB_project_description=description[0:]          tmpPro.WEB_project_description=description[0:]
         tmpPro.invisible=True          tmpPro.invisible=True
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','previewFrame.zpt')).__of__(self)          pt=PageTemplateFile('zpt/previewFrame.zpt',globals()).__of__(self)
         return pt()          return pt()
   
         #return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+"/previewTemplate")          #return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+"/previewTemplate")
Line 1013  class MPIWGProject(CatalogAware,Folder,C Line 1393  class MPIWGProject(CatalogAware,Folder,C
             <head>              <head>
             <meta http-equiv="Content-Type" content="text/html; charset=utf-8">              <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
             </head>              </head>
             <body>%s              <body>%s</body>
             </html></body>              </html>
             """%self.WEB_project_description[0]              """%self.WEB_project_description[0]
                   
         return """          return """
Line 1022  class MPIWGProject(CatalogAware,Folder,C Line 1402  class MPIWGProject(CatalogAware,Folder,C
             <head>              <head>
             <meta http-equiv="Content-Type" content="text/html; charset=utf-8">              <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
             </head>              </head>
             <body>%s              <body>%s</body>
             </html></body>              </html>
             """%self.getContent('WEB_project_description')              """%self.getContent('WEB_project_description')
                   
                   
Line 1048  class MPIWGProject(CatalogAware,Folder,C Line 1428  class MPIWGProject(CatalogAware,Folder,C
             return False              return False
                   
     def getPersonKeyList(self):      def getPersonKeyList(self):
         """gibt die key Liste der beteiligten Personen zurŸck (utf8 codiert)"""          """gibt die key Liste der beteiligten Personen zurueck (utf8 codiert)"""
         #logging.error("getPersonKeyList:%s"%getattr(self,'responsibleScientistsList',[]))          #logging.error("getPersonKeyList:%s"%getattr(self,'responsibleScientistsList',[]))
         try:          try:
             return [utf8ify(x[1]) for x in getattr(self,'responsibleScientistsList',[])]              return [utf8ify(x[1]) for x in getattr(self,'responsibleScientistsList',[])]
Line 1146  class MPIWGProject(CatalogAware,Folder,C Line 1526  class MPIWGProject(CatalogAware,Folder,C
         """edit the project and archive the old version"""          """edit the project and archive the old version"""
                   
         self.copyObjectToArchive() # archive the object          self.copyObjectToArchive() # archive the object
           self.ZCacheable_invalidate()
   
         for x in definedFields:          for x in definedFields:
             if self.REQUEST.has_key(x):              if self.REQUEST.has_key(x):
Line 1232  class MPIWGProject(CatalogAware,Folder,C Line 1612  class MPIWGProject(CatalogAware,Folder,C
             self.xdata_10=""              self.xdata_10=""
   
         if fromEdit and (RESPONSE is not None):          if fromEdit and (RESPONSE is not None):
             RESPONSE.redirect('./editMPIWGDisciplinesThemesEditor')              self.redirect(RESPONSE,'./editMPIWGDisciplinesThemesEditor')
   
         else:          else:
             if RESPONSE is not None:              if RESPONSE is not None:
Line 1309  class MPIWGProject(CatalogAware,Folder,C Line 1689  class MPIWGProject(CatalogAware,Folder,C
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
       def tagTheProject(self,RESPONSE=None):
           """TAG"""
           id=self.getId();
           tmpl =getattr(self.thesaurus,"main.html")
           if RESPONSE:
               RESPONSE.redirect("./thesaurus/main.html?project="+id)
           return
           
 def manage_addMPIWGProjectForm(self):  def manage_addMPIWGProjectForm(self):
     """form for adding the project"""      """form for adding the project"""
     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGProjectForm.zpt')).__of__(self)      pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGProjectForm.zpt')).__of__(self)

Removed from v.1.47.2.106  
changed lines
  Added in v.1.47.2.125


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