Annotation of MPIWGWeb/MPIWGStaff.py, revision 1.10.2.2

1.1       dwinter     1: """This file contains the classes for the organization of the staff"""
                      2: from OFS.Folder import Folder
1.3       dwinter     3: from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder
1.1       dwinter     4: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                      5: from Products.PageTemplates.PageTemplate import PageTemplate
1.9       dwinter     6: from Products.ZCatalog.CatalogPathAwareness import CatalogAware
1.6       casties     7: import os
1.10.2.2! dwinter     8: import bibliography
1.6       casties     9: from Globals import package_home
1.10.2.2! dwinter    10: from Products.PythonScripts.standard import sql_quote
1.6       casties    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:
1.7       casties    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)
1.6       casties    20:     return pt
1.1       dwinter    21: 
1.9       dwinter    22: class MPIWGStaff(CatalogAware,ZSQLExtendFolder):
1.1       dwinter    23:     """Staff"""
                     24: 
                     25:     meta_type="MPIWGStaff"
1.9       dwinter    26:     default_catalog='MembersCatalog'
                     27:     
                     28:     def PrincipiaSearchSource(self):
                     29:         """Return cataloguable key for ourselves."""
                     30:         return str(self)
1.1       dwinter    31: 
1.6       casties    32:     manage_options = Folder.manage_options+(
                     33:         {'label':'Edit','action':'changeMPIWGStaffForm'},
1.10.2.1  dwinter    34:         {'label':'Change Publications Special','action':'changePublications_specialForm'},
1.6       casties    35:         )
                     36:     
1.1       dwinter    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: 
1.10.2.1  dwinter    44: 
1.1       dwinter    45:     def index_html(self):
1.3       dwinter    46:         """show homepage"""
1.6       casties    47:         pt = getTemplate(self, "members_main")
1.3       dwinter    48:         return pt()
1.1       dwinter    49: 
1.10.2.1  dwinter    50:     def changePublications_specialForm(self):
1.10.2.2! dwinter    51:         """Priority publications manual field"""
        !            52:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changePublications_special.zpt')).__of__(self)
1.10.2.1  dwinter    53:         return pt()
1.10.2.2! dwinter    54:         
1.10.2.1  dwinter    55:     def changePublications_special(self,usePublicationsSpecial=None,specialPublicationsField=None,RESPONSE=None):
1.10.2.2! dwinter    56:         """change publications special params"""
        !            57:         if usePublicationsSpecial:
1.10.2.1  dwinter    58:           self.usePublicationsSpecial=True
1.10.2.2! dwinter    59:          
        !            60:         else:
        !            61:           self.usePublicationsSpecial=False
1.10.2.1  dwinter    62: 
1.10.2.2! dwinter    63:         self.specialPublicationsField=specialPublicationsField[0:]
1.10.2.1  dwinter    64: 
                     65:         if RESPONSE is not None:
                     66:             RESPONSE.redirect('manage_main')
                     67: 
1.10.2.2! dwinter    68:         
1.3       dwinter    69:     def publications_full(self):
                     70:         """show publication"""
1.7       casties    71:         pt=getTemplate(self, "publications_full_main")
1.3       dwinter    72:         return pt()
                     73: 
                     74:     def talks_full(self):
                     75:         """show talks"""
1.7       casties    76:         pt=getTemplate(self, 'talks_full_main')
1.3       dwinter    77:         return pt()
                     78: 
                     79:     def teaching_full(self):
                     80:         """show talks"""
1.7       casties    81:         pt=getTemplate(self, 'teaching_full_main')
1.3       dwinter    82:         return pt()
                     83:     
1.1       dwinter    84:     def changeMPIWGStaffForm(self):
                     85:         """change form"""
1.10      dwinter    86:         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','edit_MPIWGStaff.zpt')).__of__(self)
1.1       dwinter    87:         return pt()
                     88: 
1.2       dwinter    89:     def changeMPIWGStaff(self,lastName,firstName,RESPONSE=None):
1.1       dwinter    90:         """change it"""
1.2       dwinter    91:         self.title="%s, %s"%(lastName,firstName)
1.1       dwinter    92:         self.lastName=lastName
                     93:         self.firstName=firstName
1.2       dwinter    94: 
                     95:         if RESPONSE is not None:
                     96:             RESPONSE.redirect('manage_main')
                     97: 
1.10.2.2! dwinter    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"""
1.1       dwinter   173: 
1.10.2.2! dwinter   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:     
1.1       dwinter   245: def manage_addMPIWGStaffForm(self):
                    246:     """form for adding the project"""
1.10      dwinter   247:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGStaffForm.zpt')).__of__(self)
1.1       dwinter   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>