--- MPIWGWeb/MPIWGProjects.py 2004/11/03 17:33:31 1.41 +++ MPIWGWeb/MPIWGProjects.py 2005/05/09 10:01:54 1.47 @@ -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 @@ -17,8 +18,10 @@ 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'] @@ -33,7 +36,7 @@ def sortF(x,y): try: return cmp(str(x[1]),str(y[1])) except: - print "error",x[1],y[1] + return 0 def sortI(x,y): @@ -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' @@ -286,7 +299,8 @@ class MPIWGRoot(ZSQLExtendFolder): list[urllib.quote(personNormal)]=(personNormal,[project[1]]) except: - print "ERROR",project + zLOG.LOG("MPIWG Web (harvestHistoricalPerson)",zLOG.ERROR,"cannot annalyize: %s"%repr(project)) + return list @@ -317,13 +331,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 +353,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 @@ -388,17 +403,17 @@ class MPIWGRoot(ZSQLExtendFolder): ret.append(project) return ret - def getProjectFields(self,fieldName,folder=None,sort=None): + def getProjectFields(self,fieldName,actual="yes",folder=None,sort=None): """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 not getattr(obj,'invisible',None): + + if (not getattr(obj,'invisible',None)) and (obj.isActual()): 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 @@ -437,7 +452,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): @@ -458,7 +473,8 @@ class MPIWGRoot(ZSQLExtendFolder): project._setObject(splitted[0],newObj) #print "done:",splitted[0] except: - print "not done:",splitted[0] + zLOG.LOG("MPIWG Web (importNames)",zLOG.INFO,"cannot import: %s"%splitted[0]) + if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -490,9 +506,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: @@ -831,23 +849,67 @@ 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="""') and (field=='WEB_project_description'): return "
"+text2+"
" - #if text2=="Otto Sibum": - #text2="H. Otto Sibum" - return text2 + + + return text2.encode('utf-8') def show_html(self): """simple index""" #return "HI" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGProject_index.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_index.zpt')).__of__(self) return pt() def editMPIWGProjectForm(self): """editform""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGProject.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGProject.zpt')).__of__(self) 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') def editMPIWGDisciplinesThemesForm(self): """edit the disciplines and themes Form""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGDisciplinesThemes.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGDisciplinesThemes.zpt')).__of__(self) return pt() def editMPIWGDisciplinesThemes(self,disciplines=None,themes=None,RESPONSE=None): @@ -1042,15 +1133,14 @@ class MPIWGProject(Folder): def isChecked(self,wert,list): """check if wert is in ; seperated list""" - print "W:",wert - print "L:",list,type(list) + #felder sind manchmnal als liste mit einem element definiert if type(list) is StringType or UnicodeType: splitted=list.split(";") else: splitted=list[0].split(";") - print splitted + for x in splitted: if (not x==u'') and x in wert: return 1 @@ -1058,17 +1148,17 @@ class MPIWGProject(Folder): def editMPIWGBasisForm(self): """editform""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGBasis.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGBasis.zpt')).__of__(self) return pt() def editMPIWGRelatedPublicationsForm(self): """Edit related Publications""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGRelatedPublications.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGRelatedPublications.zpt')).__of__(self) return pt() def loadNewFileForm(self): """Neues XML-File einlesen""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGProject_newfile.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','MPIWGProject_newfile.zpt')).__of__(self) return pt() def loadNewFile(self,RESPONSE=None): @@ -1096,7 +1186,7 @@ class MPIWGProject(Folder): def manage_addMPIWGProjectForm(self): """form for adding the project""" - pt=PageTemplateFile('Products/MPIWGWeb/zpt/addMPIWGProjectForm.zpt').__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGProjectForm.zpt')).__of__(self) return pt() def manage_addMPIWGProject(self,id,RESPONSE=None): @@ -1104,7 +1194,7 @@ def manage_addMPIWGProject(self,id,RESPO #print argv fileupload=self.REQUEST.get('fileupload',None) if fileupload: - print fileupload + file_name=fileupload.filename filedata=fileupload.read()