--- MPIWGWeb/MPIWGProjects.py 2004/10/21 14:28:55 1.40
+++ MPIWGWeb/MPIWGProjects.py 2004/11/23 16:22:18 1.43
@@ -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
@@ -19,6 +19,7 @@ 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']
@@ -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,57 @@ 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 isActual(self):
+ """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):
+ """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 +957,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 +1071,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')