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>