Diff for /MPIWGWeb/MPIWGProjects.py between versions 1.47.2.17 and 1.47.2.18

version 1.47.2.17, 2005/07/04 20:40:37 version 1.47.2.18, 2005/08/15 14:03:06
Line 244  class MPIWGRoot(ZSQLExtendFolder): Line 244  class MPIWGRoot(ZSQLExtendFolder):
     fieldLabels={'WEB_title':'WEB_Title','xdata_01':'Responsible Scientists','xdata_02':'Department',      fieldLabels={'WEB_title':'WEB_Title','xdata_01':'Responsible Scientists','xdata_02':'Department',
              'xdata_03':'Historical Persons','xdata_04':'Time period',               'xdata_03':'Historical Persons','xdata_04':'Time period',
              'xdata_05':'Sorting number','xdata_06':'Keywords','xdata_07':'Short title',               'xdata_05':'Sorting number','xdata_06':'Keywords','xdata_07':'Short title',
              'xdata_08':'Other involved scholars' ,'xdata_09':'Part of','xdata_10':'Covered by',               'xdata_08':'Other involved scholars' ,'xdata_09':'Disciplines','xdata_10':'Themes',
              'xdata_11':'Object Digitallibrary','xdata_12':'Cooperation partners',               'xdata_11':'Object Digitallibrary','xdata_12':'Cooperation partners',
              'xdata_13':'Funding institutions','WEB_project_header':'WEB_project_header',               'xdata_13':'Funding institutions','WEB_project_header':'WEB_project_header',
              'WEB_project_description':'WEB_project_description','WEB_related_pub':'WEB_related_pub'}               'WEB_project_description':'WEB_project_description','WEB_related_pub':'WEB_related_pub'}
Line 252  class MPIWGRoot(ZSQLExtendFolder): Line 252  class MPIWGRoot(ZSQLExtendFolder):
     folders=['MPIWGProject','Folder','ECHO_Navigation']      folders=['MPIWGProject','Folder','ECHO_Navigation']
     meta_type='MPIWGRoot'      meta_type='MPIWGRoot'
   
       def queryLink(self,link):
           """append querystring to the link"""
           return "%s?%s"%(link,self.REQUEST.get('QUERY_STRING',''))
   
     def getKategory(self,url):      def getKategory(self,url):
     """kategorie"""      """kategorie"""
     splitted=url.split("/")      splitted=url.split("/")
Line 259  class MPIWGRoot(ZSQLExtendFolder): Line 263  class MPIWGRoot(ZSQLExtendFolder):
   
     def generateUrlProject(self,url,project=None):      def generateUrlProject(self,url,project=None):
         """erzeuge aus absoluter url, relative des Projektes"""          """erzeuge aus absoluter url, relative des Projektes"""
       if project:
         splitted=url.split("/")          splitted=url.split("/")
         length=len(splitted)          length=len(splitted)
         short=splitted[length-2:length]          short=splitted[length-2:length]
     if project:              
             base=self.REQUEST['URL3']+"/"+"/".join(short)              base=self.REQUEST['URL3']+"/"+"/".join(short)
   
     else:      else:
         base=self.REQUEST['URL1']+"/"+"/".join(short)              findPart=url.find("/projects/")
               base=self.REQUEST['URL1']+"/"+url[findPart:]
   
                   
         return base          return base
           
     def isNewCapital(self,text=None,reset=None):      def isNewCapital(self,text=None,reset=None):
Line 565  class MPIWGRoot(ZSQLExtendFolder): Line 573  class MPIWGRoot(ZSQLExtendFolder):
         """test"""          """test"""
         return self.getProjectsByFieldContent('xdata_09',['biology'])[0].absolute_url          return self.getProjectsByFieldContent('xdata_09',['biology'])[0].absolute_url
   
     def getContexts(self,childs=None,parents=None,depth=None):      def getContexts(self,childs=None,parents=None,depth=None,date=None):
         """childs alle childs, alle parents"""          """childs alle childs, alle parents"""
         ret=[]          ret=[]
           print "gC",date,childs
         if parents:          if parents:
             splitted=parents.split(".")              splitted=parents.split(".")
             parentId=string.join(splitted[0:len(splitted)-1],".")              parentId=string.join(splitted[0:len(splitted)-1],".")
                   
             for project in self.getProjectFields('xdata_05',sort='int'):              for project in self.getProjectFields('xdata_05',sort='int',date=date):
                 if project[1]==parentId:                  if project[1]==parentId:
                     ret.append(project)                      ret.append(project)
   
         if childs:          if childs:
             for project in self.getProjectFields('xdata_05',sort='int'):              for project in self.getProjectFields('xdata_05',sort='int',date=date):
                 searchStr=childs+"(\..*)"                  searchStr=childs+"(\..*)"
                 if re.match(searchStr,project[1]):                  if re.match(searchStr,project[1]):
                                           
Line 590  class MPIWGRoot(ZSQLExtendFolder): Line 599  class MPIWGRoot(ZSQLExtendFolder):
                         ret.append(project)                          ret.append(project)
         return ret          return ret
           
     def getProjectFields(self,fieldName,actual="yes",folder=None,sort=None):      def getProjectFields(self,fieldName,date=None,folder=None,sort=None):
         """getListofFieldNames"""          """getListofFieldNames"""
         ret=[]          ret=[]
           
Line 599  class MPIWGRoot(ZSQLExtendFolder): Line 608  class MPIWGRoot(ZSQLExtendFolder):
                                   
         for object in objects:          for object in objects:
             obj=object[1]              obj=object[1]
                           obj=obj.getActualVersion(date)
             if (not getattr(obj,'invisible',None)) and (obj.isActual()):              if obj and (not getattr(obj,'invisible',None)):
                 if fieldName=="WEB_title_or_short":                  if fieldName=="WEB_title_or_short":
   
                     if len(obj.getContent('xdata_07'))<3: # hack weil z.Z. manchmal noch ein Trennzeichen ; oder , im Feld statt leer                      if len(obj.getContent('xdata_07'))<3: # hack weil z.Z. manchmal noch ein Trennzeichen ; oder , im Feld statt leer
Line 623  class MPIWGRoot(ZSQLExtendFolder): Line 632  class MPIWGRoot(ZSQLExtendFolder):
     def showNewProjects(self):      def showNewProjects(self):
         projects=[]          projects=[]
         for objs in self.getProjectFields('WEB_title_or_short'): # Get all Projets          for objs in self.getProjectFields('WEB_title_or_short'): # Get all Projets
             if objs[0].xdata_05[0] == "":              if objs[0].xdata_05 and (objs[0].xdata_05[0] == ""):
                                   
                 projects.append(objs)                  projects.append(objs)
                                   
Line 737  class MPIWGRoot(ZSQLExtendFolder): Line 746  class MPIWGRoot(ZSQLExtendFolder):
             return entry              return entry
   
   
     def getTree(self):      def getTree(self,date=None):
         """generate Tree from project list"""          """generate Tree from project list"""
           print date
         returnList=[]          returnList=[]
         for project in self.getProjectFields('xdata_05',sort="int"): # get Projects sorted by xdata_05          for project in self.getProjectFields('xdata_05',sort="int",date=date): # get Projects sorted by xdata_05
   
             for idNr in project[1].split(";"): # more than one number              for idNr in project[1].split(";"): # more than one number
                 if not idNr=="":                  if not idNr=="":
Line 803  class MPIWGRoot(ZSQLExtendFolder): Line 813  class MPIWGRoot(ZSQLExtendFolder):
                 department=element[3].getContent('xdata_05')                  department=element[3].getContent('xdata_05')
                 ret+="""<a href="#top"><img src="../grafik/totop.gif" vspace="10" border="0"></a><br><a name="dept%s"></a>%s: """%(department,departmentName[department])                  ret+="""<a href="#top"><img src="../grafik/totop.gif" vspace="10" border="0"></a><br><a name="dept%s"></a>%s: """%(department,departmentName[department])
   
               if self.REQUEST.has_key('date'):
                   ret+="""<a href="%s?date=%s">%s</a>"""%(self.generateUrlProject(element[3].absolute_url())+"/index.html",self.REQUEST['date'],element[3].getContent('WEB_title'))
               else:
             ret+="""<a href="%s">%s</a>"""%(self.generateUrlProject(element[3].absolute_url())+"/index.html",element[3].getContent('WEB_title'))              ret+="""<a href="%s">%s</a>"""%(self.generateUrlProject(element[3].absolute_url())+"/index.html",element[3].getContent('WEB_title'))
         return ret          return ret
           
Line 864  class MPIWGRoot(ZSQLExtendFolder): Line 877  class MPIWGRoot(ZSQLExtendFolder):
   
                   
         for idNr in form.keys():          for idNr in form.keys():
               if not (fields[int(idNr)][3].xdata_05==form[idNr]):
             fields[int(idNr)][3].xdata_05=form[idNr]              fields[int(idNr)][3].xdata_05=form[idNr]
                   fields[int(idNr)][3].copyObjectToArchive()
                   
   
         if RESPONSE is not None:          if RESPONSE is not None:
Line 945  class MPIWGRoot(ZSQLExtendFolder): Line 959  class MPIWGRoot(ZSQLExtendFolder):
                     ret.append("%s"%person)                      ret.append("%s"%person)
         return string.join(ret,";")          return string.join(ret,";")
                                                     
     def getProjectsOfMembers(self):      def getProjectsOfMembers(self,date=None):
         """give tuple member /projects"""          """give tuple member /projects"""
         ret=[]          ret=[]
         members=self.getAllMembers()          members=self.getAllMembers()
         #return str(members)          #return str(members)
         for x in members:          for x in members:
             ret+=self.getProjectsOfMember(name=x)              ret+=self.getProjectsOfMember(name=x,date=date)
                           
         return ret          return ret
   
     def getProjectsOfMember(self,name=None,email=None):      def getProjectsOfMember(self,name=None,email=None,date=None):
         """get project of a member"""          """get project of a member"""
         def sortP(x,y):          def sortP(x,y):
             """sort by sorting number"""              """sort by sorting number"""
Line 984  class MPIWGRoot(ZSQLExtendFolder): Line 998  class MPIWGRoot(ZSQLExtendFolder):
         if proj:          if proj:
             proj2=[]              proj2=[]
             for x in proj:              for x in proj:
                   if (not getattr(x.getObject(),'invisible',None)) and (getattr(x.getObject(),'archiveTime','')==''):
                 if not getattr(x.getObject(),'invisible',None):  
                     if not((splitted[1]==" Christoph") and (splitted[0]=="Hoffmann") and (str(x.WEB_title).find('Einstein')>0)):                      if not((splitted[1]==" Christoph") and (splitted[0]=="Hoffmann") and (str(x.WEB_title).find('Einstein')>0)):
                        proj2.append(x)                         proj2.append(x)
   
Line 997  class MPIWGRoot(ZSQLExtendFolder): Line 1010  class MPIWGRoot(ZSQLExtendFolder):
             names=[x.WEB_title for x in proj]              names=[x.WEB_title for x in proj]
             for x in proj:              for x in proj:
   
                 if not x.WEB_title in names:                  if (not x.WEB_title in names) and (getattr(x.getObject(),'archiveTime','')==''):
                     proj2.append(x)                      proj2.append(x)
   
   
Line 1121  class MPIWGProject(CatalogAware,Folder): Line 1134  class MPIWGProject(CatalogAware,Folder):
             return retTXT%(s,s)              return retTXT%(s,s)
         else:          else:
             return ""              return ""
   
       def getActualVersion(self,date=None):
           """actuelle version"""
           def sortProjectsByTime(x,y):
               return cmp(x[1].archiveTime,y[1].archiveTime)
   
           if not date:
               if self.isActual():
                   return self
               else:
                   return None
   
           #suche ob aeltere versionen vorhanden sind
   
           finds=self.ZopeFind(self,obj_metatypes=['MPIWGProject'])
           if not finds: #wenn nicht dann teste ob die aktuelle version schon existiert hat.
               ad=getattr(self,'creationTime','20050101000000')
               if int(date)>int(ad):
                   return self
               else:
                   return None
   
   
           else:
               finds.sort(sortProjectsByTime)
   
           for find in finds:
               #gehe durch die alten Projekte und finde das entprechende
               if (int(find[1].archiveTime) > int(date)) and (int(date)>int(getattr(find[1],'creationTime','20050101000000'))):
                   return find[1]
   
           #kein passendes gefunden, dann teste ob das aktuelle in frage kommt
           ad=getattr(self,'creationTime','20050101000000')
           
           if int(date)>int(ad):
           
               return self
           else:
               return None
             
           
     def isActual(self):      def isActual(self):
         """gibt 1 zurueck wenn aktuell, 0 sonst"""          """gibt 1 zurueck wenn aktuell, 0 sonst"""
         actualTime=time.localtime()          actualTime=time.localtime()
Line 1197  class MPIWGProject(CatalogAware,Folder): Line 1251  class MPIWGProject(CatalogAware,Folder):
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
                           
     def __init__(self, id, argv=None):      def __init__(self, id, argv=None):
         """initieriere classe"""          """initiere classe"""
                   
           self.creationTime=time.strftime("%Y%m%d%H%M%S",time.localtime())[0:]
         self.id=id          self.id=id
         self.title=id          self.title=id
         if argv:          if argv:
Line 1228  class MPIWGProject(CatalogAware,Folder): Line 1283  class MPIWGProject(CatalogAware,Folder):
         def sortProjectsByTime(x,y):          def sortProjectsByTime(x,y):
             return cmp(x[1].archiveTime,y[1].archiveTime)              return cmp(x[1].archiveTime,y[1].archiveTime)
                   
           #suche ob aeltere versionen vorhanden sind
   
         finds=self.ZopeFind(self,obj_metatypes=['MPIWGProject'])          finds=self.ZopeFind(self,obj_metatypes=['MPIWGProject'])
         if not finds:          if not finds: #wenn nicht dann teste ob die aktuelle version schon existiert hat.
             return self.absolute_url()              ad=getattr(self,'creationTime','20050101000000')
               if int(date)>int(ad):
                   return self.REQUEST['URL1']+"/"+self.getId()
               else:
                   return self.REQUEST['URL1']+"/no_project"
   
   
         else:          else:
             finds.sort(sortProjectsByTime)              finds.sort(sortProjectsByTime)
   
         for find in finds:          for find in finds:
             if int(find[1].archiveTime) > int(date):              #gehe durch die alten Projekte und finde das entprechende
                 return find[1].absolute_url()              if (int(find[1].archiveTime) > int(date)) and (int(date)>int(getattr(find[1],'creationTime','20050101000000'))):
                   return self.REQUEST['URL1']+"/"+find[1].getId()
   
         return self.absolute_url()          #kein passendes gefunden, dann teste ob das aktuelle in frage kommt
           ad=getattr(self,'creationTime','20050101000000')
                   
           if int(date)>int(ad):
                           
               return self.REQUEST['URL1']+"/"+self.getId()
           else:
               return self.REQUEST['URL1']+"/no_project"
           
               
       def no_project(self):
           """warnung: project noch nicht existent"""
           pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','no_project')).__of__(self)
           return pt()
                           
     def index_html(self):      def index_html(self):
         """show homepage"""          """show homepage"""
                   print "D",self.REQUEST.get('date','nodate')
         if self.REQUEST.has_key('date') and self.REQUEST.SESSION.get('MPI_redirected',None)==None:          if self.REQUEST.has_key('date') and self.REQUEST.SESSION.get('MPI_redirected',None)==None:
             self.REQUEST.SESSION['MPI_redirected']=1              self.REQUEST.SESSION['MPI_redirected']=1
             self.REQUEST.RESPONSE.redirect(self.checkDate(self.REQUEST['date']))              print "redirect"
               self.REQUEST.RESPONSE.redirect(self.checkDate(self.REQUEST['date'])+"?date="+self.REQUEST['date'])
         else:          else:
             self.REQUEST.SESSION['MPI_redirected']=None              self.REQUEST.SESSION['MPI_redirected']=None
                   
     ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"])      #ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"])
           ext=getattr(self,"project_main",None)
         if ext:          if ext:
             return getattr(self,ext[0][1].getId())()              return getattr(self,ext.getId())()
   
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','project_main')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','project_main')).__of__(self)
         return pt()          return pt()

Removed from v.1.47.2.17  
changed lines
  Added in v.1.47.2.18


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