File:  [Repository] / MPIWGWeb / MPIWGStaff.py
Revision 1.10.2.2: download - view: text, annotated - select for diffs - revision graph
Mon Oct 10 08:42:48 2005 UTC (18 years, 8 months ago) by dwinter
Branches: r2
*** empty log message ***

    1: """This file contains the classes for the organization of the staff"""
    2: from OFS.Folder import Folder
    3: from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder
    4: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
    5: from Products.PageTemplates.PageTemplate import PageTemplate
    6: from Products.ZCatalog.CatalogPathAwareness import CatalogAware
    7: import os
    8: import bibliography
    9: from Globals import package_home
   10: from Products.PythonScripts.standard import sql_quote
   11: 
   12: def getTemplate(self, tpName):
   13:     """get a template file either form the instance or from the product"""
   14:     ext=self.ZopeFind(self.aq_parent,obj_ids=[tpName])
   15:     if ext:
   16:         pt = getattr(self,ext[0][1].getId())
   17:     else:
   18:         pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/'+tpName)).__of__(self)
   19:     assert(pt)
   20:     return pt
   21: 
   22: class MPIWGStaff(CatalogAware,ZSQLExtendFolder):
   23:     """Staff"""
   24: 
   25:     meta_type="MPIWGStaff"
   26:     default_catalog='MembersCatalog'
   27:     
   28:     def PrincipiaSearchSource(self):
   29:         """Return cataloguable key for ourselves."""
   30:         return str(self)
   31: 
   32:     manage_options = Folder.manage_options+(
   33:         {'label':'Edit','action':'changeMPIWGStaffForm'},
   34:         {'label':'Change Publications Special','action':'changePublications_specialForm'},
   35:         )
   36:     
   37:     def __init__(self,id, lastName,firstName):
   38:         """init"""
   39:         self.id=id
   40:         self.title="%s, %s"%(lastName,firstName)
   41:         self.lastName=lastName
   42:         self.firstName=firstName
   43: 
   44: 
   45:     def index_html(self):
   46:         """show homepage"""
   47:         pt = getTemplate(self, "members_main")
   48:         return pt()
   49: 
   50:     def changePublications_specialForm(self):
   51:         """Priority publications manual field"""
   52:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changePublications_special.zpt')).__of__(self)
   53:         return pt()
   54:         
   55:     def changePublications_special(self,usePublicationsSpecial=None,specialPublicationsField=None,RESPONSE=None):
   56:         """change publications special params"""
   57:         if usePublicationsSpecial:
   58:           self.usePublicationsSpecial=True
   59:          
   60:         else:
   61:           self.usePublicationsSpecial=False
   62: 
   63:         self.specialPublicationsField=specialPublicationsField[0:]
   64: 
   65:         if RESPONSE is not None:
   66:             RESPONSE.redirect('manage_main')
   67: 
   68:         
   69:     def publications_full(self):
   70:         """show publication"""
   71:         pt=getTemplate(self, "publications_full_main")
   72:         return pt()
   73: 
   74:     def talks_full(self):
   75:         """show talks"""
   76:         pt=getTemplate(self, 'talks_full_main')
   77:         return pt()
   78: 
   79:     def teaching_full(self):
   80:         """show talks"""
   81:         pt=getTemplate(self, 'teaching_full_main')
   82:         return pt()
   83:     
   84:     def changeMPIWGStaffForm(self):
   85:         """change form"""
   86:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGStaff.zpt')).__of__(self)
   87:         return pt()
   88: 
   89:     def changeMPIWGStaff(self,lastName,firstName,RESPONSE=None):
   90:         """change it"""
   91:         self.title="%s, %s"%(lastName,firstName)
   92:         self.lastName=lastName
   93:         self.firstName=firstName
   94: 
   95:         if RESPONSE is not None:
   96:             RESPONSE.redirect('manage_main')
   97: 
   98:     def edit(self):
   99:         """Edit the pages"""
  100: 
  101:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff.zpt')).__of__(self)
  102:         return pt()
  103: 
  104:     mainEditFile=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editMPIWGStaff_main.zpt'))
  105: 
  106:     def changeResearch(self,noredirect=None):
  107:         """change the research entries"""
  108:         newEntries={}
  109:         id_main=self.REQUEST.form['id_main']
  110: 
  111:         mainfieldL=self.REQUEST.form['main_fields'].split(",")
  112:         mainfield={}
  113:         for x in mainfieldL:
  114:             tmp=x.split('__')
  115:             mainfield[tmp[0]]=tmp[1]
  116:         for field in self.REQUEST.form.keys():
  117:             splittedField=field.split("__")
  118:             if len(splittedField)<3:
  119:                 pass #kein datenbank eintrag
  120: 
  121:             elif splittedField[2]=='new': # store new entries
  122:                 if not newEntries.has_key(splittedField[0]):
  123:                     newEntries[splittedField[0]]={}
  124:                     
  125:                 newEntries[splittedField[0]][splittedField[1]]=self.REQUEST.form[field]
  126: 
  127:             else:
  128:                 query="UPDATE %s "%splittedField[0]
  129:                 query+="SET %s = '%s' "%(splittedField[1],sql_quote(self.REQUEST.form[field]))
  130:                 query+="WHERE oid = '%s' "%sql_quote(splittedField[2])
  131: 
  132:                 self.ZSQLQuery(query)
  133: 
  134: 
  135:         #new entries
  136:         for newEntry in newEntries.keys():
  137:             query="INSERT INTO %s "%newEntry
  138:             keys=['id_main']
  139:             values=["'"+id_main+"'"]
  140:             for key in newEntries[newEntry].keys():
  141:                 keys.append(key)
  142:                 values.append("'"+newEntries[newEntry][key]+"'")
  143: 
  144: 
  145:             keystring=",".join(keys)
  146:                 
  147:             valuestring=",".join(values)
  148:                 
  149:             query+=" (%s) "%keystring
  150:             query+="VALUES (%s)"%valuestring
  151:             if not (newEntries[newEntry][mainfield[newEntry]].lstrip().rstrip()==""):
  152:                 self.ZSQLQuery(query)
  153: 
  154:         if not noredirect:
  155:             self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])
  156:         
  157:     def editCV(self,cv=None,oid=None,RESPONSE=None):
  158:          """edit Cv"""
  159: 
  160:          if (not cv):
  161:              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editCV.zpt')).__of__(self)
  162:              return pt()
  163:         
  164:          query="UPDATE personal_www SET cv ='%s' WHERE oid='%s'"
  165: 
  166:          self.ZSQLQuery(query%(cv,oid))
  167:         
  168:          if RESPONSE:
  169:             RESPONSE.redirect("editCV")
  170: 
  171:     def editAwards(self,awards=None,oid=None,RESPONSE=None):
  172:          """edit a awards"""
  173: 
  174:          if (not awards):
  175:              pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editAwards.zpt')).__of__(self)
  176:              return pt()
  177:         
  178:          query="UPDATE personal_www SET awards ='%s' WHERE oid='%s'"
  179: 
  180:          self.ZSQLQuery(query%(awards,oid))
  181:         
  182:          if RESPONSE:
  183:             RESPONSE.redirect("editAwards")
  184: 
  185:     def editTalks(self):
  186:         """edit talks"""
  187: 
  188:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editTalks.zpt')).__of__(self)
  189:         return pt()
  190:         
  191:          
  192:     def editTeaching(self):
  193:         """edit Teaching"""
  194: 
  195:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editTeaching.zpt')).__of__(self)
  196:         return pt()
  197:         
  198:     def editPublications(self):
  199:         """edit the bibliographie"""
  200: 
  201:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editPublications.zpt')).__of__(self)
  202:         return pt()
  203: 
  204:     def changePublications(self):
  205:         """change the publication list"""
  206: 
  207:         self.changeResearch(noredirect=True)
  208:         self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])
  209: 
  210: 
  211:     def addPublications(self):
  212:         """add publications"""
  213: 
  214:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addPublications.zpt')).__of__(self)
  215:         return pt()
  216: 
  217:     formatBiblHelp=bibliography.formatBiblHelp
  218:     
  219:     def sortPriority(self,list):
  220:         tmp=[x for x in list]
  221:         
  222:         def sort(x,y):
  223:             try:
  224:                 xInt=int(x.priority)
  225:             except:
  226:                 xInt=0
  227:             try:
  228:                 yInt=int(y.priority)
  229:             except:
  230:                 yInt=0
  231: 
  232:             return cmp(xInt,yInt)
  233: 
  234:         tmp.sort(sort)
  235:         return tmp
  236: 
  237:     def deleteField(self,table,oid):
  238:         """delete entry"""
  239:         query="DELETE FROM %s WHERE oid = '%s'"%(table,oid)
  240:         print "query"
  241:         self.ZSQLQuery(query)
  242:         self.REQUEST.RESPONSE.redirect(self.REQUEST['HTTP_REFERER'])
  243:         
  244:     
  245: def manage_addMPIWGStaffForm(self):
  246:     """form for adding the project"""
  247:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGStaffForm.zpt')).__of__(self)
  248:     return pt()
  249: 
  250: def manage_addMPIWGStaff(self,id,lastName,firstName,RESPONSE=None):
  251:     """add it"""
  252:     newObj=MPIWGStaff(id,lastName,firstName)
  253: 
  254:     self._setObject(id,newObj)
  255: 
  256: 
  257:     if RESPONSE is not None:
  258:         RESPONSE.redirect('manage_main')
  259: 
  260:     

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>