changeset 189:cc5198541af8

erzeugen neuer eintr?ge auf der homepage mittels updatexml
author dwinter
date Mon, 17 Jun 2013 13:48:55 +0200
parents 16d55695f1c8
children 9a09156eee7c
files MPIWGRoot.py MPIWGStaff.py zpt/showNewDBEntries.zpt
diffstat 3 files changed, 75 insertions(+), 63 deletions(-) [+]
line wrap: on
line diff
--- 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'],
--- 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="<html><body>"
+        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+="<p>Added: %s</p>"%k
+        
+        
+        return ret+"</body></html>"
 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) 
--- 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 @@
 <html tal:define="newEntries options/newEntries">
 <body>
 <h2>New entries</h2>
-<form action="createNewStaffObjects">
+<form action="members/addEmails">
 <table border="1">
   <tr>
     <th>First name</th>
@@ -14,7 +14,7 @@
     <td tal:content="python:here.decode(newEntry.last_name)" />
     <td tal:content="python:here.decode(newEntry.department)"/>
     <td tal:content="python:here.decode(newEntry.date_from)"/>
-    <td><input tal:attributes="name python:here.urlQuote(newEntry.key)" size="20"/></td>
+    <td><input tal:attributes="name python:newEntry.key" size="20"/></td>
   </tr>
 </table>
 <p>