--- MPIWGWeb/MPIWGProjects.py 2008/06/25 06:41:25 1.47.2.85 +++ MPIWGWeb/MPIWGProjects.py 2008/08/25 07:55:02 1.47.2.89 @@ -1,17 +1,16 @@ """This contains the class MPIWG Projects for organizing and maintaining the different project pages -s + +$author dwinter - last change 26.06.2008 + """ 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 Products.MPIWGBibliography.BibliographyManager import BibliographyManager from OFS.Image import Image from Globals import package_home import urllib -import MPIWGStaff -import string import re import os from types import * @@ -19,19 +18,20 @@ import logging import xmlhelper # Methoden zur Verwaltung der projekt xml from OFS.SimpleItem import SimpleItem from OFS.Folder import Folder -from Products.ZSQLMethods.SQL import SQLConnectionIDs + from AccessControl import ClassSecurityInfo from bibliography import * import time -import xml.dom.minidom +#import xml.dom.minidom import sys -from Ft.Xml.XPath import Evaluate -from Ft.Xml.XPath.Context import Context -from Ft.Xml.Domlette import NonvalidatingReader,PrettyPrint, Print -from Ft.Xml import EMPTY_NAMESPACE -import copy -import updatePersonalWWW -import MPIWGStaff +#from Ft.Xml.XPath import Evaluate +#from Ft.Xml.XPath.Context import Context +#from Ft.Xml.Domlette import NonvalidatingReader,PrettyPrint, Print +#from Ft.Xml import EMPTY_NAMESPACE +#import copy +#import updatePersonalWWW + +#import MPIWGStaff from MPIWGHelper import * @@ -39,6 +39,9 @@ import MPIWGRoot import MPIWGLink import MPIWGTemplate +# die folgenden Klassen sind jetzt in einzelne Files ausgelagert aus KompatibilitŠtsgrŸnden, bleiben die Klassen hier noch drin. +# Sonst funktionieren die alten Webseiten nicht mehr. + class MPIWGRoot(MPIWGRoot.MPIWGRoot): """depricated""" @@ -254,7 +257,30 @@ class MPIWGProject(CatalogAware,Folder): pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_managePublicationsForm.zpt')).__of__(self) return pt() + def hasExtendedPublicationList(self): + """test if extended publication list exists""" + if not hasattr(self,"publicationList"): + return False + else: + return True + + def createExtendedPublicationList(self,RESPONSE=None): + """erzeuge erweiterte publications liste""" + pl = BibliographyManager("publicationList","","institutsbiblio",self.connection_id) + self._setObject("publicationList", pl) + + + zt=ZopePageTemplate('index.html') + pl._setObject('index.html',zt) + default_content_fn = os.path.join(package_home(globals()), + 'zpt/showExtendedProjectBibliography.zpt') + text = open(default_content_fn).read() + zt.pt_edit(text, 'text/html') + + if RESPONSE: + RESPONSE.redirect("managePublications") + def getPublications(self): """get all Publications""" def sort_images(x,y): @@ -475,7 +501,7 @@ class MPIWGProject(CatalogAware,Folder): new.append(split) except: new.append(split) - return string.join(new) + return " ".join(new) @@ -558,32 +584,56 @@ class MPIWGProject(CatalogAware,Folder): else: return False; + def setStartedAt(self,date): + """set the date of start, date should be in the form DD.MM.YYYY or MM.YYYY or YYYY""" + logging.info("DATE:"+repr(date)) + transformedDate=self.transformDate(date); + logging.info("transformed"+repr(transformedDate)) + if transformedDate is not None: + setattr(self,"startedAt",transformedDate) + return True; + else: + return False; def getCompletedAt(self): - """gibt das transformierte Datum zurŸck""" + """gibt das transformierte Datum zurueck, an dem das Projekt beendet wurde.""" date=getattr(self,'completedAt','') if date: return self.reTransformDate(date); else: return ''; + def getStartedAt(self): + """gibt das transformierte Datum zurŸck, an dem Projekt begonnen wurde.""" + date=getattr(self,'startedAt','') + if date: + return self.reTransformDate(date); + else: + return ''; + def reTransformDate(self,date): """transformiert , transformdate zurueck""" year=int(date/10000) month=int((date-year*10000)/100) day=int((date-year*10000-month*100)) + if (day==0) and (month==0): + return """%s"""%year; + if day==0 : + return """%s.%s"""%(month,year); + return """%s.%s.%s"""%(day,month,year); def transformDate(self,date): """transformiert ein Datum von DD.MM.YYYY, MM.YYYY,YYYY nach YYYYMMDD, alle nicht angebebenn Werte werden auf 0 gesetzt, es wird null zurŸckgegeben falls das Datum ungueltig ist""" - - if (date=="" ) : - return ""; - + if (date==None): return None; + + if (date.lstrip().rstrip()=="" ) : + return ""; + splitted=date.split(".") length=len(splitted) year=0 @@ -1026,6 +1076,8 @@ class MPIWGProject(CatalogAware,Folder): #finde Mitarbeiter mit den entsprechenden Name logging.info("Search: %s %s %s"%(name,firstname,lastname)) + firstname=firstname.capitalize() + lastname=lastname.capitalize() cataloggedNames=self.MembersCatalog(firstName=firstname,lastName=lastname) #Teste ob die ensprechenden Namen schon der Liste zu geordnet sind @@ -1058,6 +1110,10 @@ class MPIWGProject(CatalogAware,Folder): completedAt = self.REQUEST.get('completedAt') if not self.setCompletedAt(completedAt): RESPONSE.redirect('./editMPIWGBasisEditor?error="dateWrong') + + startedAt = self.REQUEST.get('startedAt') + if not self.setStartedAt(startedAt): + RESPONSE.redirect('./editMPIWGBasisEditor?error="dateWrong') if self.REQUEST.has_key('historicalNames'): self.en.changeHistoricalNames(self.getId(),self.REQUEST['historicalNames'].split("\n")) @@ -1115,14 +1171,14 @@ class MPIWGProject(CatalogAware,Folder): if type(disciplines) is StringType: self.xdata_09=disciplines else: - self.xdata_09=string.join(disciplines,";") + self.xdata_09=";".join(disciplines) else: self.xdata_09="" if themes: if type(themes) is StringType: self.xdata_10=themes else: - self.xdata_10=string.join(themes,";") + self.xdata_10=";".join(themes) else: self.xdata_10=""