# HG changeset patch # User dwinter # Date 1371469735 -7200 # Node ID cc5198541af831cb8b9f85551d70abb7f8ede4ed # Parent 16d55695f1c8f662461fe8a0a473ac50baf490db erzeugen neuer eintr?ge auf der homepage mittels updatexml diff -r 16d55695f1c8 -r cc5198541af8 MPIWGRoot.py --- a/MPIWGRoot.py Fri Jun 14 17:36:09 2013 +0200 +++ b/MPIWGRoot.py Mon Jun 17 13:48:55 2013 +0200 @@ -264,71 +264,17 @@ RESPONSE.redirect('manage_main') - # TODO: is this used? - def updatePublicationDB(self,personId=None): - """updates the publication db, i.e. copy year and type into the main table""" - - if personId: - founds = self.ZSQLInlineSearch(_table="publications",key_main=personId) - else: - founds = self.ZSQLInlineSearch(_table="publications") - - for found in founds: - - if found.id_institutsbibliographie and (not found.id_institutsbibliographie =="") and (not found.id_institutsbibliographie =="0"): - - entries = self.ZSQLInlineSearch(_table="institutsbiblio",id=found.id_institutsbibliographie) - for entry in entries: - self.ZSQLChange(_table='publications',_identify='oid=%s' % found.oid,year=entry.year,referencetype=entry.reference_type) - - if found.id_gen_bib and (not found.id_gen_bib ==""): - entries = self.ZSQLInlineSearch(_table="bibliography",id=found.id_gen_bib) - for entry in entries: - self.ZSQLChange(_table='publications',_identify='oid=%s' % found.oid,year=entry.year,referencetype=entry.reference_type) - - return True + def showNewDBEntries(self): """zeige neue Eintraege in der Datenbank ohne e-mail adressen bzw. fuer die noch kein Object angelegt wurde""" qstr="select * from personal_www where web_object_created='no' and not key=''" - res=self.ZSQLQuery(qstr) + res=self.members.executeZSQL(qstr) pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','showNewDBEntries.zpt')).__of__(self) return pt(newEntries=res) - def _createNewStaffObjects(self,RESPONSE): - """create new staff object""" - memberFolder=getattr(self,'members') - args=self.REQUEST.form - arg_k=args.keys() - arg_k.remove("submit") - ret="" - for key in arg_k: - k=self.urlUnQuote(key) - - qstr="select * from personal_www where key=%s"%self.ZSQLQuote(k) - res=self.ZSQLQuery(qstr)[0] - if args[key]!="": #email-adresse wurde eingetragen - #create the object - e_mail=args[key] - try: - newObj=MPIWGStaff.MPIWGStaff(e_mail,res.last_name,res.first_name,k) - memberFolder._setObject(e_mail,newObj) - obj=getattr(memberFolder,e_mail) - obj.reindex_object() - ret+="Created %s \n"%e_mail - created=True - except: - msg="Cannot create new user %s (%s %s)"%(e_mail,sys.exc_info()[0],sys.exc_info()[1]) - logging.error(msg) - ret+=msg+"\n" - created=False - - if created: - qstr="update personal_www set web_object_created='yes',e_mail='%s@mpiwg-berlin.mpg.de' where key=%s"%(e_mail,self.ZSQLQuote(k)) - self.ZSQLQuery(qstr) - - return ret + def generateNewPersonEntry(self,data): @@ -347,7 +293,7 @@ #create the new entry in the database - result,msg=MPIWGStaff.createNewDBEntry(self,data['publish_the_data'],data['key'],data['last_name'], + result,msg=self.members.createNewDBEntry(data['publish_the_data'],data['key'],data['last_name'], data['first_name'],data['titles_new'],data['status'],"", "",data['date_from'],data['date_to'], data['department'],'',data['funded_by'], diff -r 16d55695f1c8 -r cc5198541af8 MPIWGStaff.py --- a/MPIWGStaff.py Fri Jun 14 17:36:09 2013 +0200 +++ b/MPIWGStaff.py Mon Jun 17 13:48:55 2013 +0200 @@ -28,7 +28,7 @@ # TODO: should be removed when done import MPIWGStaff_old -createNewDBEntry = MPIWGStaff_old.createNewDBEntry +#createNewDBEntry = MPIWGStaff_old.createNewDBEntry class MPIWGStaff(MPIWGStaff_old.MPIWGStaff): """Staff""" @@ -100,13 +100,17 @@ return len(res) > 0 - def getMemberList(self, department=None, sortBy='last_name', onlyCurrent=False, arrivedWithin=None, limit=0): + def getMemberList(self, department=None, sortBy='last_name', onlyCurrent=False, arrivedWithin=None, limit=0,withEmail=True): """Return the list of members. Returns a list of MPIWGStaffMember objects. """ members = [] - query = "select * from personal_www_list where publish_the_data = 'yes' and is_scholar='yes'" + + if withEmail: + query = "select * from personal_www_list where publish_the_data = 'yes' and is_scholar='yes' and e_mail <> '' " + else: + query = "select * from personal_www_list where publish_the_data = 'yes' and is_scholar='yes'" args = [] if department is not None: @@ -221,7 +225,67 @@ return ret,len(ret) + def createNewDBEntry(self,publish_the_data,key,name,vorname,titles_new,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by="",e_mail2="",txt="",txt_p="no",stay_at_mpiwg="",group="",web_object_created="no",current_work=""): + """lege person in der datenbank an""" + + if date_to=="": # wenn date_to leer + date_to="date_none" + if date_from=="": # wenn date_fromleer + date_from="date_none" + msg="" + #test ob id schon existiert + if self.ZSQLQuery("select key from personal_www where key='%s'"%id): + return False,"ERROR:key%s already exists"%key + + #eintragen + columnlist="""publish_the_data,key,last_name,first_name,titles_new,status,e_mail,e_mail_p,date_from,date_to,department,home_inst,funded_by,e_mail2,date_stay_at_mpiwg,web_object_created,"group",current_work,current_work_p """ + insertTuple=(publish_the_data,key,name,vorname,titles_new,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,funded_by,e_mail2,stay_at_mpiwg,web_object_created,group,current_work,"yes") + + insert=[] + for element in insertTuple: + if element=="date_none": # date_none eintrag wird zu null uebersetzt + insert.append('null') + else: + insert.append("%s"%self.ZSQLQuote(element)) + + insertStr=",".join(insert) + queryStr="INSERT INTO personal_www (%s) VALUES (%s)"%(columnlist,insertStr) + self.ZSQLQuery("SET DATESTYLE TO 'German'") + self.ZSQLQuery(queryStr) + logging.info("createNewDBEntry %s:"%queryStr) + #currentwork + #if not (current_work==""): + # queryStr="INSERT INTO current_work (key_main,current,publish) VALUES ('%s',%s,'%s')"%(key,self.ZSQLQuote(current_work),"yes") + + # self.ZSQLQuery(queryStr) + + return True,msg + + def addEmails(self,RESPONSE): + """add emails to the members from form""" + memberFolder=getattr(self,'members') + args=self.REQUEST.form + arg_k=args.keys() + arg_k.remove("submit") + ret="" + for key in arg_k: + k=key + + qstr="select * from personal_www where key=%s"%self.ZSQLQuote(k) + res=self.executeZSQL(qstr)[0] + if args[key]!="": #email-adresse wurde eingetragen + #create the object + e_mail=args[key] + + + qstr="update personal_www set web_object_created='yes',e_mail='%s@mpiwg-berlin.mpg.de' where key=%s"%(e_mail,self.ZSQLQuote(k)) + self.executeZSQL(qstr) + + ret+="

Added: %s

"%k + + + return ret+"" def manage_addMPIWGStaffFolderForm(self): """form for adding the project""" pt=PageTemplateFile('zpt/addMPIWGStaffFolderForm', globals()).__of__(self) @@ -884,6 +948,8 @@ return ret + + # initialize security InitializeClass(MPIWGStaffFolder) InitializeClass(MPIWGStaffMember) diff -r 16d55695f1c8 -r cc5198541af8 zpt/showNewDBEntries.zpt --- a/zpt/showNewDBEntries.zpt Fri Jun 14 17:36:09 2013 +0200 +++ b/zpt/showNewDBEntries.zpt Mon Jun 17 13:48:55 2013 +0200 @@ -1,7 +1,7 @@

New entries

-
+ @@ -14,7 +14,7 @@ +
First name -