--- MPIWGWeb/MPIWGStaff.py 2005/10/11 13:14:01 1.10.2.4 +++ MPIWGWeb/MPIWGStaff.py 2005/10/12 19:35:38 1.10.2.5 @@ -1,7 +1,7 @@ """This file contains the classes for the organization of the staff""" # TODO: pruefe ob die id der einzelnen tabellen, wie id in publications noch benutzt werden # TODO: pruefe ob die bibliographischen felder in publications noch benutzt werden -# TODO: auswahl der ausgewaehlten publication auf der ersten seite der homepage +# TODO: wird username gebraucht? from OFS.Folder import Folder from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder @@ -14,6 +14,8 @@ from Globals import package_home from Products.PythonScripts.standard import sql_quote from types import * +departmentList="Renn\nRheinberger\nDaston\nKlein\nSibum\nIT\nInstitut\nBibliothek" + def getTemplate(self, tpName): """get a template file either form the instance or from the product""" @@ -30,6 +32,88 @@ class MPIWGStaff(CatalogAware,ZSQLExtend meta_type="MPIWGStaff" default_catalog='MembersCatalog' + departmentList=departmentList + + def createNewDBEntry(self,publish_the_data,id,name,vorname,title,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by="",e_mail2="",txt="",txt_p="no"): + """lege person in der datenbank an""" + + #test ob id schon existiert + if self.ZSQLQuery("select id from personal_www where id='%s'"%id): + return False,"id %s already exists"%id + + #eintragen + columnlist="publish_the_data,id,name,vorname,title,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2" + insertTuple=(publish_the_data,id,name,vorname,title,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2) + + insert=[] + for element in insertTuple: + insert.append("'%s'"%element) + + insertStr=",".join(insert) + queryStr="INSERT INTO personal_www (%s) VALUES (%s)"%(columnlist,insertTuple) + + self.ZSQLQuery(queryStr) + + #currentwork + if not (txt==""): + queryStr="INSERT INTO current_work (id_main,current,publish) VALUES ('%s','%s','%s')"%(id,txt,txt_p) + self.ZSQLQuery(queryStr) + + def getPublicationSelectionMode(self): + """get publication selection mode, default 'priority'""" + return getattr(self,'publicationSelectionMode','priority') + + def changePublicationSelectionMode(self,publicationSelectionMode,RESPONSE=None): + """change PublicationSelectionMode""" + + self.publicationSelectionMode=publicationSelectionMode + + if RESPONSE: + RESPONSE.redirect("editPublications") + + + def getPublishImage(self): + """publish the image??, default no""" + return getattr(self,'publishImage','no') + + def updateImage(self,file,publishImage,rename=None,RESPONSE=None): + """update image""" + + if self.getImageObj(): + self.getImageObj().updateImage(file,rename=None,RESPONSE=None) + else: + self.getImageFolder().addImage2(file,fileName=self.getId()) + + self.publishImage=publishImage + + if RESPONSE: + RESPONSE.redirect("edit") + + def getImageFolder(self): + """getImageFolder""" + return self.getPhysicalRoot().www_neu.images.staff_images + + def getImageObj(self): + """getImage""" + imageFolder=self.getImageFolder() + + image=getattr(imageFolder,self.getId(),None) + + if not image: + for suffix in ['jpg','tif']: + + image=getattr(imageFolder,self.getId()+"."+suffix,None) + if image: + break + return image + + def getImageUrl(self): + """getImageUrl""" + image=self.getImageObj() + if not image: + return None + else: + return self.getImageObj().absolute_url()+"/image" def PrincipiaSearchSource(self): """Return cataloguable key for ourselves.""" @@ -206,8 +290,23 @@ class MPIWGStaff(CatalogAware,ZSQLExtend list= [x[0] for x in finds] return "\n".join(list) + + def editMainData(self,REQUEST=None,RESPONSE=None,name=None,**argv): + """edit main data""" + + if not name: + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMainData.zpt')).__of__(self) + return pt() + else: + + self.ZSQLChange(argv,_table="personal_www",_identify="id=%s"%self.getDBId(),USE_FORM="yes") + if RESPONSE: + RESPONSE.redirect("editMainData") + + def newBibliography(self,_docType=None, _addEntry=None,RESPONSE=None,**argv): + """add an entry to the bibliography""" if not _docType: #kein docType pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','newBibliographyEntryDocType.zpt')).__of__(self) @@ -217,7 +316,13 @@ class MPIWGStaff(CatalogAware,ZSQLExtend pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','newBibliographyEntry.zpt')).__of__(self) return pt() else: #doctype und daten - newId=self.ZSQLSimpleSearch("select nextval('id_raw')")[0].nextval + try: + newId=self.ZSQLSimpleSearch("select nextval('id_raw')")[0].nextval + except:#id_raw existiert nich, dann neu erzeugen + + self.createOrUpdateId_raw() + newId=self.ZSQLSimpleSearch("select nextval('id_raw')")[0].nextval + bookId="b%06i" % newId self.ZSQLAdd(argv,_table="bibliography",reference_type=_docType,id=bookId) @@ -230,6 +335,11 @@ class MPIWGStaff(CatalogAware,ZSQLExtend return True + def editImage(self): + """edit images""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editImageStaff.zpt')).__of__(self) + return pt() + def editBibliography(self): """edit the bibliography""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editBibliographyEntry.zpt')).__of__(self) @@ -293,9 +403,10 @@ class MPIWGStaff(CatalogAware,ZSQLExtend for bibId in entries: query="INSERT INTO %s " % "publications" - query+="(id_main,id_institutsbibliographie) " - query+="VALUES ('%s','%s')" %(sql_quote(self.getDBId()),sql_quote(bibId)) - + query+="(id_main,id_institutsbibliographie,publish) " + query+="VALUES ('%s','%s','yes')" %(sql_quote(self.getDBId()),sql_quote(bibId)) + print "ADD",query + #self.ZSQLAdd(_table="publications",id_institutsbibliographie=bibId,id_main=self.getDBId(),publish='yes') self.ZSQLQuery(query) self.updatePublicationDB(personId=self.getDBId()) @@ -319,8 +430,10 @@ class MPIWGStaff(CatalogAware,ZSQLExtend formatBiblHelp=bibliography.formatBiblHelp - def sortBibliography(self,list): - sortingMode=self.getSortingMode() + def sortBibliography(self,list,sortingMode=None): + if not sortingMode: + sortingMode=self.getSortingMode() + if sortingMode == "year": return self.sortYear(list) else: @@ -367,7 +480,7 @@ class MPIWGStaff(CatalogAware,ZSQLExtend def deleteField(self,table,oid): """delete entry""" query="DELETE FROM %s WHERE oid = '%s'"%(table,oid) - print "query" + self.ZSQLQuery(query) self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])