--- MPIWGWeb/MPIWGProjects.py 2004/10/21 14:28:09 1.39 +++ MPIWGWeb/MPIWGProjects.py 2005/04/25 11:06:24 1.45 @@ -1,11 +1,12 @@ """This contains the class MPIWG Projects -for organizing and maintaining the different projectspages +for organizing and maintaining the different project pages """ from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder +from Products.ZCatalog.CatalogPathAwareness import CatalogAware from Globals import package_home import urllib import MPIWGStaff @@ -13,12 +14,14 @@ import string import re import os from types import * - +import zLOG import xmlhelper # Methoden zur Verwaltung der projekt xmls from OFS.SimpleItem import SimpleItem from OFS.Folder import Folder +from Products.ZSQLMethods.SQL import SQLConnectionIDs from bibliography import * +import time definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub'] @@ -145,9 +148,9 @@ class MPIWGRoot(ZSQLExtendFolder): """updates SQL databases using fm.jar""" fmJarPath=os.path.join(package_home(globals()), 'updateSQL/fm.jar') xmlPath=os.path.join(package_home(globals()), "updateSQL/%s"%fileName) - - os.popen("java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,xmlPath),"r").read() - + zLOG.LOG("MPIWG Web",zLOG.INFO,"java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,xmlPath)) + ret=os.popen("java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,xmlPath),"r").read() + zLOG.LOG("MPIWG Web",zLOG.INFO,"result convert: %s"%ret) return 1 def patchProjects(self,RESPONSE): @@ -160,12 +163,22 @@ class MPIWGRoot(ZSQLExtendFolder): def replaceNotEmpty(self,format,field): """replace not empty""" - if field and (not field==''): + if field and (not field.lstrip()==''): return format%field else: return "" + def isActual(self,project): + """checke if project is actual""" + actualTime=time.localtime() + obj= project.getObject() + + if getattr(obj,'archiveTime',actualTime)< actualTime: + return False + else: + return True + def redirectIndex_html(self,request): #return request['URL1']+'/index_html' @@ -317,13 +330,13 @@ class MPIWGRoot(ZSQLExtendFolder): def showHistoricalPersons(self): """show persons""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/showHistoricalPersons').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','showHistoricalPersons')).__of__(self) return pt() def editHistoricalPersonsForm(self): """edit historical persons for consistency""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/editHistoricalPersonsForm').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editHistoricalPersonsForm')).__of__(self) return pt() def getProjectsByFieldContent(self,fieldName,fieldContentsEntry): @@ -339,12 +352,13 @@ class MPIWGRoot(ZSQLExtendFolder): def changeMPIWGRootForm(self): """edit""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/changeMPIWGRootForm').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeMPIWGRootForm')).__of__(self) return pt() - def changeMPIWGRoot(self,title,disciplineList,themesList,RESPONSE=None): + def changeMPIWGRoot(self,title,disciplineList,themesList,connection_id,RESPONSE=None): """change""" self.title=title + self.connection_id=connection_id self.disciplineList=disciplineList self.themesList=themesList @@ -392,21 +406,23 @@ class MPIWGRoot(ZSQLExtendFolder): """getListofFieldNames""" ret=[] - objects=self.ZopeFind(self,obj_metatypes=['MPIWGProject'],search_sub=1) + objects=self.ZopeFind(self.projects,obj_metatypes=['MPIWGProject'],search_sub=0) for object in objects: obj=object[1] - 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 - fieldNameTmp="WEB_title" + + if not getattr(obj,'invisible',None): + 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 + fieldNameTmp="WEB_title" + else: + fieldNameTmp="xdata_07" else: - fieldNameTmp="xdata_07" - else: - fieldNameTmp=fieldName - - ret.append((obj,obj.getContent(fieldNameTmp))) + fieldNameTmp=fieldName + + ret.append((obj,obj.getContent(fieldNameTmp))) if sort=="int": @@ -435,7 +451,7 @@ class MPIWGRoot(ZSQLExtendFolder): def importNamesForm(self): """Form""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGNamesForm.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGNamesForm.zpt')).__of__(self) return pt() def importNames(self,fileupload,folderName,RESPONSE=None): @@ -488,9 +504,11 @@ class MPIWGRoot(ZSQLExtendFolder): if member[1].getId() not in foundUserNames: member[1].aq_parent.manage_delObjects(ids=[member[1].getId()]) RESPONSE.write("
deleted:%s
\n"%member[1].getId()) - - self.MembersCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) - + try: + self.MembersCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) + except: + pass + self.ProjectCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) if RESPONSE is not None: @@ -534,6 +552,7 @@ class MPIWGRoot(ZSQLExtendFolder): """generate Tree from project list""" returnList=[] for project in self.getProjectFields('xdata_05',sort="int"): # get Projects sorted by xdata_05 + for idNr in project[1].split(";"): # more than one number if not idNr=="": splittedId=idNr.split(".") @@ -725,13 +744,11 @@ class MPIWGRoot(ZSQLExtendFolder): if proj: proj2=[] for x in proj: - - if not((splitted[1]==" Christoph") and (splitted[0]=="Hoffmann") and (str(x.WEB_title).find('Einstein')>0)): - - #print repr(splitted[1]),repr(splitted[0]),repr(x.WEB_title) + + if not getattr(x.getObject(),'invisible',None): + if not((splitted[1]==" Christoph") and (splitted[0]=="Hoffmann") and (str(x.WEB_title).find('Einstein')>0)): proj2.append(x) - # proj2.sort(sortP) - # ret.append((y,proj2)) + else: proj2=[] @@ -739,6 +756,7 @@ class MPIWGRoot(ZSQLExtendFolder): if proj: names=[x.WEB_title for x in proj] for x in proj: + if not x.WEB_title in names: proj2.append(x) @@ -829,22 +847,78 @@ class MPIWGRoot(ZSQLExtendFolder): def manage_addMPIWGRootForm(self): """form for adding the root""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/addMPIWGRootForm.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self) return pt() -def manage_addMPIWGRoot(self,id,title,RESPONSE=None): +def manage_addMPIWGRoot(self,id,title,connection_id="",RESPONSE=None): """add a root folder""" newObj=MPIWGRoot(id,title) self._setObject(id,newObj) - + ob=getattr(self,id) + setattr(ob,'connection_id',connection_id) if RESPONSE is not None: RESPONSE.redirect('manage_main') -class MPIWGProject(Folder): +class MPIWGProject(CatalogAware,Folder): """Class for Projects""" meta_type='MPIWGProject' + default_catalog='ProjectCatalog' + + def PrincipiaSearchSource(self): + """Return cataloguable key for ourselves.""" + return str(self) + + def versionHeader(self): + """version Header, gibt header text entsprechend der aktuellen version aus""" + + actualTime=time.localtime() + retTXT="""