--- MPIWGWeb/MPIWGProjects.py 2004/10/21 14:28:09 1.39 +++ MPIWGWeb/MPIWGProjects.py 2004/11/16 14:51:54 1.42 @@ -1,5 +1,5 @@ """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 @@ -13,12 +13,13 @@ 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 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 +146,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): @@ -397,16 +398,18 @@ class MPIWGRoot(ZSQLExtendFolder): 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": @@ -534,6 +537,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 +729,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 +741,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) @@ -846,6 +849,47 @@ class MPIWGProject(Folder): meta_type='MPIWGProject' + + def versionHeader(self): + """version Header, gibt header text entsprechend der aktuellen version aus""" + + actualTime=time.localtime() + retTXT="""

This is an outdated version, for the actual version please refer to %s

""" + s=self.aq_parent.absolute_url() + print getattr(self,'archiveTime',actualTime) + if getattr(self,'archiveTime',actualTime)< actualTime: + return retTXT%(s,s) + else: + return "" + + def copyObjectToArchive(self): + """kopiere aktuelles objekt ins archiv""" + cb=self.aq_parent.manage_copyObjects(self.getId()) + self.manage_pasteObjects(cb) + actualTime=time.localtime() + + self.manage_renameObject(self.getId(),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)) + ids=[x[0] for x in self.ZopeFind(obj,obj_metatypes=['MPIWGProject'])] + obj.manage_delObjects(ids) + + def setArchiveTime(self,time): + """set Archive Time""" + self.archiveTime=time[0:] + + def versionManageForm(self): + """version Manage form:currently only set to invisible""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_versionManageForm.zpt')).__of__(self) + return pt() + + def versionManage(self,invisible=None,RESPONSE=None): + """version Manage form:currently only set to invisible""" + self.invisible=invisible + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + def crossLinker(self): """experimental crosslinker""" @@ -903,11 +947,40 @@ class MPIWGProject(Folder): {'label':'Edit BasisInfo','action':'editMPIWGBasisForm'}, {'label':'Edit Publications','action':'editMPIWGRelatedPublicationsForm'}, {'label':'Edit Themes & Disciplines','action':'editMPIWGDisciplinesThemesForm'}, + {'label':'Versionmanager','action':'versionManageForm'}, ) + def checkDate(self,date): + """teste ob zum Zeitpunkt date eine andere version existierte""" + + + def sortProjectsByTime(x,y): + return cmp(x[1].archiveTime,y[1].archiveTime) + + finds=self.ZopeFind(self,obj_metatypes=['MPIWGProject']) + if not finds: + return self.absolute_url() + else: + finds.sort(sortProjectsByTime) + + for find in finds: + if int(find[1].archiveTime) > int(date): + return find[1].absolute_url() + + return self.absolute_url() + + + def index_html(self): """show homepage""" + + 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'])) + else: + self.REQUEST.SESSION['MPI_redirected']=None + ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"]) if ext: @@ -988,14 +1061,18 @@ class MPIWGProject(Folder): return pt() def editMPIWGProject(self,RESPONSE=None): - """edit the project""" + """edit the project and archive the old version""" + + self.copyObjectToArchive() # archive the object + - #return self.REQUEST for x in definedFields: if self.REQUEST.has_key(x): setattr(self,x,[self.REQUEST[x].decode('utf-8')]) - + + + if RESPONSE is not None: RESPONSE.redirect('manage_main')