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>