annotate MPIWGStaff.py @ 254:c15138774864

Merge with e5b444dab055a3fb2e07f28da4abaff846a9f300
author dwinter
date Tue, 27 May 2014 11:33:57 +0200
parents 065c4284238f 4742e71606e4
children 738129610f36
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
1 """This file contains the classes for the organization of the staff"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
2
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
3 from OFS.Folder import Folder
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
4 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
5
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
6 from zope.interface import implements
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
7 from zope.publisher.interfaces import IPublishTraverse
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
8 from ZPublisher.BaseRequest import DefaultPublishTraverse
191
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
9 from Acquisition import aq_parent
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
10
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
11 from AccessControl import ClassSecurityInfo
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
12 from App.class_init import InitializeClass
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
13 from App.ImageFile import ImageFile
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
14 from Products.PythonScripts.standard import sql_quote
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
15 from Products.ExtFile import ExtFile
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
16 import logging
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
17 import email
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
18 import re
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
19 import datetime
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
20
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
21 from Products.ZDBInterface.ZDBInterfaceFolder import ZDBInterfaceFolder
251
4742e71606e4 fixed bug when creating personal calendar.
casties
parents: 249
diff changeset
22 from Products.MPIWGManager import MPIWGIcsManager
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
23
233
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
24 from SrvTxtUtils import getInt, unicodify, utf8ify, sqlName, getPlaintext
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
25 import MPIWGHelper
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
26
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
27 #
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
28 # compatibility
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
29 # TODO: should be removed when done
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
30 import MPIWGStaff_old
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
31
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
32 #createNewDBEntry = MPIWGStaff_old.createNewDBEntry
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
33
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
34 class MPIWGStaff(MPIWGStaff_old.MPIWGStaff):
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
35 """Staff"""
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
36 pass
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
37
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
38 manage_addMPIWGStaffForm = MPIWGStaff_old.manage_addMPIWGStaffForm
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
39 manage_addMPIWGStaff = MPIWGStaff_old.manage_addMPIWGStaff
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
40
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
41
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
42 class MPIWGStaffFolder(ZDBInterfaceFolder):
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
43 """Folder of staff objects"""
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
44 implements(IPublishTraverse)
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
45
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
46 meta_type="MPIWGStaffFolder"
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
47 security=ClassSecurityInfo()
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
48
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
49 #
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
50 # templates
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
51 #
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
52 member_index_html = PageTemplateFile('zpt/staff/member_index_html', globals())
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
53 edit_css = ImageFile('css/edit.css', globals())
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
54
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
55
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
56 #
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
57 # hook into traversal to create folder of virtual staff objects
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
58 # like /members/$username/index_html
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
59 #
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
60 def publishTraverse(self, request, name):
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
61 """change the traversal"""
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
62 # get stored path
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
63 logging.debug("publishtraverse: name=%s"%(name))
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
64
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
65 # try name as username
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
66 member = self.getMember(username=name)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
67 if member is not None:
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
68 # traverse to MPIWGStaffMember object
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
69 member = member.__of__(self)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
70 return member
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
71
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
72 # use default traverser
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
73 tr = DefaultPublishTraverse(self, request)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
74 ob = tr.publishTraverse(request, name)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
75 return ob
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
76
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
77
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
78 def getMember(self, username=None, key=None):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
79 """returns a MPIWGStaffMember object if the username exists"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
80 member = None
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
81 if username is not None:
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
82 # TODO: we should have a username column
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
83 email = '%s@mpiwg-berlin.mpg.de'%username
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
84 content = self.executeZSQL("select * from personal_www where e_mail = %s", [email])
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
85 if len(content) > 0:
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
86 member = MPIWGStaffMember(self, dbresult=content[0])
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
87
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
88 elif key is not None:
222
95e0087b9e19 removed some comparisons that ignore person-id case.
casties
parents: 217
diff changeset
89 content = self.executeZSQL("select * from personal_www where key = %s", [key])
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
90 if len(content) > 0:
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
91 member = MPIWGStaffMember(self, dbresult=content[0])
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
92
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
93 return member
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
94
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
95
40
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
96 def isActiveMember(self, key):
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
97 """returns if member key is active"""
222
95e0087b9e19 removed some comparisons that ignore person-id case.
casties
parents: 217
diff changeset
98 res = self.executeZSQL("select * from personal_www where key = %s and publish_the_data = 'yes'", [key])
40
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
99 return len(res) > 0
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
100
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
101
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
102 def getMemberList(self, department=None, sortBy='last_name', onlyCurrent=False, arrivedWithin=None,
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
103 onlyPublished=True, onlyWithEmail=True, onlyScholar=True, limit=0):
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
104 """Return the list of members.
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
105
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
106 Returns a list of MPIWGStaffMember objects.
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
107 """
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
108 members = []
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
109 args = []
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
110 wheres = []
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
111
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
112 if onlyPublished:
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
113 wheres.append("publish_the_data = 'yes'")
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
114
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
115 if onlyWithEmail:
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
116 wheres.append("e_mail <> ''")
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
117
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
118 if onlyScholar:
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
119 wheres.append("is_scholar = 'yes'")
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
120
93
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
121 if department is not None:
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
122 wheres.append("department ilike %s")
93
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
123 args.append('%%%s%%'%department)
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
124
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
125 if onlyCurrent:
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
126 wheres.append("date_from < CURRENT_DATE")
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
127
175
7d85ebe92ecf getMemberList gets arrivedWithin parameter.
casties
parents: 162
diff changeset
128 if arrivedWithin is not None:
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
129 wheres.append("date_from > CURRENT_DATE - interval %s")
175
7d85ebe92ecf getMemberList gets arrivedWithin parameter.
casties
parents: 162
diff changeset
130 args.append(arrivedWithin)
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
131
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
132 # assemble query
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
133 query = "SELECT * FROM personal_www_list"
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
134 if len(wheres) > 0:
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
135 query += " WHERE " + " AND ".join(wheres)
175
7d85ebe92ecf getMemberList gets arrivedWithin parameter.
casties
parents: 162
diff changeset
136
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
137 if sortBy == 'last_name':
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
138 query += " ORDER BY lower(last_name)"
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
139 elif sortBy == 'date_from':
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
140 query += " ORDER BY date_from DESC"
233
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
141 elif sortBy:
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
142 query += ' ORDER BY "%s"'%sqlName(sortBy)
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
143
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
144 if limit > 0:
206
31b28f369fd3 more flexible getMemberList()
casties
parents: 204
diff changeset
145 query += " LIMIT %s"%int(limit)
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
146
93
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
147 result = self.executeZSQL(query, args)
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
148 for res in result:
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
149 members.append(MPIWGStaffMember(self, dbresult=res))
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
150
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
151 return members
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
152
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
153
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
154 def sortPriority(self,list):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
155 def sort(x,y):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
156 try:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
157 xInt=int(x.priority)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
158 except:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
159 xInt=0
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
160 try:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
161 yInt=int(y.priority)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
162 except:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
163 yInt=0
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
164
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
165 return cmp(xInt,yInt)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
166
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
167 if not list:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
168 return []
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
169 tmp=[x for x in list]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
170 tmp.sort(sort)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
171
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
172 return tmp
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
173
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
174
106
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
175 def importSortingModeFromOldStaff(self):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
176 """ only used for the migration to the new website """
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
177 ret=[]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
178 for member in self.getMemberList():
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
179 email = member.content.e_mail
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
180 un = email.split("@")[0]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
181
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
182 logging.debug(un)
122
4a54537ddcf7 fix converting old members
dwinter
parents: 110
diff changeset
183 olduser = self.members_old.get(un)
106
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
184
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
185 if not olduser is None:
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
186 mode =olduser.getSortingMode()
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
187
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
188
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
189 if mode.startswith("year"):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
190 mode="year"
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
191
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
192 query="UPDATE personal_www SET publications_mode=%s WHERE key=%s"
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
193
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
194 self.executeZSQL(query,[mode,member.getKey()])
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
195
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
196 return ret
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
197
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
198
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
199 def importPublishFotoFromOldStaff(self):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
200 """ only used for the migration to the new website """
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
201 ret=[]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
202 for member in self.getMemberList():
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
203 email = member.content.e_mail
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
204 un = email.split("@")[0]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
205
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
206 logging.debug(un)
122
4a54537ddcf7 fix converting old members
dwinter
parents: 110
diff changeset
207 olduser = self.members_old.get(un)
106
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
208
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
209 if not olduser is None:
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
210 mode =olduser.getPublishImage()
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
211
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
212
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
213
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
214 query="UPDATE personal_www SET image_p=%s WHERE key=%s"
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
215
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
216 self.executeZSQL(query,[mode,member.getKey()])
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
217
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
218 return ret
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
219
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
220 def showDownloadableFiles(self):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
221 """copy df to the new"""
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
222 logging.debug("huh")
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
223 ret=[]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
224
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
225 for member in self.getMemberList(onlyCurrent=True):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
226 email = member.content.e_mail
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
227 un = email.split("@")[0]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
228
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
229 logging.debug(un)
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
230 olduser = self.www_neu.members.get(un)
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
231 if olduser is None:
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
232 continue;
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
233 df = olduser.get('downloadableFiles')
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
234 if df is not None:
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
235 ret.append(olduser)
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
236
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
237 return ret,len(ret)
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
238
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
239
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
240 security.declareProtected('View management screens','createNewDBEntry')
234
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
241 def createNewDBEntry(self,publish_the_data,key,name,vorname,titles_new,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
242 funded_by="",e_mail2="",txt="",txt_p="no",stay_at_mpiwg="",group="",web_object_created="no",current_work=""):
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
243 """lege person in der datenbank an"""
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
244
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
245 if date_to=="": # wenn date_to leer
234
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
246 date_to="date_none"
106
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
247
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
248 if date_from=="": # wenn date_fromleer
234
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
249 date_from="date_none"
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
250 msg=""
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
251 #test ob id schon existiert
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
252 #if self.ZSQLQuery("select key from personal_www where key='%s'"%id):
234
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
253 if self.getMember(key=key) is not None:
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
254 return False,"ERROR:key%s already exists"%key
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
255
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
256 #eintragen
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
257 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 """
234
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
258 insertTuple=(publish_the_data,key,name,vorname,titles_new,position,e_mail,e_mail_p,date_from,date_to,abteilung,heimat_inst,
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
259 funded_by,e_mail2,stay_at_mpiwg,web_object_created,group,current_work,"yes")
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
260
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
261 insert=[]
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
262 for element in insertTuple:
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
263 if element=="date_none": # date_none eintrag wird zu null uebersetzt
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
264 insert.append(None)
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
265 else:
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
266 insert.append(element)
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
267
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
268 #insertStr=",".join(insert)
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
269 insertStr=("%s," * len(insert))[:-1]
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
270 queryStr="INSERT INTO personal_www (%s) VALUES (%s)"%(columnlist,insertStr)
210
7791d4fc8a0e remove "set datestyle" as it confuses psycopg date parsing. make sure postgresql default is set accordingly.
casties
parents: 208
diff changeset
271 #self.ZSQLQuery("SET DATESTYLE TO 'German'")
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
272 #self.ZSQLQuery(queryStr)
234
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
273 # TODO: is there a better way for dates?
774ee7595e0c fix bugs in createNewDBEntry.
casties
parents: 233
diff changeset
274 self.executeZSQL("SET DATESTYLE TO 'German'")
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
275 self.executeZSQL(queryStr, insert)
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
276 logging.info("createNewDBEntry %s:"%queryStr)
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
277 #currentwork
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
278 #if not (current_work==""):
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
279 # queryStr="INSERT INTO current_work (key_main,current,publish) VALUES ('%s',%s,'%s')"%(key,self.ZSQLQuote(current_work),"yes")
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
280
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
281 # self.ZSQLQuery(queryStr)
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
282
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
283 return True,msg
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
284
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
285
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
286 security.declareProtected('View management screens','addEmails')
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
287 def addEmails(self,RESPONSE):
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
288 """add emails to the members from form"""
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
289 args=self.REQUEST.form
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
290 arg_k=args.keys()
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
291 arg_k.remove("submit")
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
292 ret="<html><body>"
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
293 for key in arg_k:
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
294 if args[key]!="": #email-adresse wurde eingetragen
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
295 #create the object
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
296 e_mail=args[key]
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
297 qstr="update personal_www set web_object_created='yes', e_mail=%s where key=%s"
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
298 self.executeZSQL(qstr, ["%s@mpiwg-berlin.mpg.de"%e_mail, key])
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
299
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
300 ret+="<p>Added: %s</p>"%key
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
301
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
302 return ret+"</body></html>"
226
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
303
4f2ed4dc50e6 clean up use of member-key.
casties
parents: 222
diff changeset
304
246
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
305 def getConeIDsFromDB(self,REQUEST):
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
306 """holt die cone ids aus personalwww und gibt sie als RDF fuer den cone import zurueck"""
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
307
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
308 qs = "select personal_www.last_name, personal_www.first_name, keys.coneid from personal_www inner join keys on personal_www.key = keys.key_main;"
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
309 coneIds = self.executeZSQL(qs)
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
310
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
311 ret="""<?xml version="1.0" encoding="UTF-8"?>
253
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
312 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:escidoc="http://purl.org/escidoc/metadata/terms/0.1/" xmlns:eprints="http://purl.org/eprint/terms/">
246
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
313 """
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
314
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
315 templ="""
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
316 <rdf:Description rdf:about="%s">
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
317 <dc:title>%s, %s</dc:title>
253
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
318
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
319 <escidoc:position>
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
320 <rdf:Description>
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
321 <dc:identifier>escidoc:14002</dc:identifier>
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
322 <eprints:affiliatedInstitution>Max Planck Institute for the History of Science, Max Planck Society</eprints:affiliatedInstitution>
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
323 </rdf:Description>
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
324 </escidoc:position>
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
325
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
326
065c4284238f rdf extended for cone export
dwinter
parents: 247
diff changeset
327
246
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
328 </rdf:Description>
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
329 """
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
330 print coneIds.names()
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
331 for coneId in coneIds:
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
332
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
333 ret+=templ%(coneId["coneid"],coneId["last_name"],coneId["first_name"])
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
334
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
335 ret+="""
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
336 </rdf:RDF>
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
337 """
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
338 if REQUEST is not None:
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
339 REQUEST.response.setHeader("Content-type", "text/XML")
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
340 return ret
8fca81581883 getConeIDsFromDB added
dwinter
parents: 237
diff changeset
341
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
342 def manage_addMPIWGStaffFolderForm(self):
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
343 """form for adding the project"""
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
344 pt=PageTemplateFile('zpt/addMPIWGStaffFolderForm', globals()).__of__(self)
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
345 return pt()
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
346
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
347 def manage_addMPIWGStaffFolder(self,id,title,RESPONSE=None):
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
348 """add it"""
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
349 newObj=MPIWGStaffFolder(id,title)
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
350
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
351 self._setObject(id,newObj)
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
352
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
353 if RESPONSE is not None:
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
354 RESPONSE.redirect('manage_main')
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
355
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
356
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
357 class MPIWGStaffMember(Folder):
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
358 """MPIWG staff member object from database"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
359
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
360 security = ClassSecurityInfo()
65
63184d71c014 lots of cleaning up.
casties
parents: 59
diff changeset
361
63184d71c014 lots of cleaning up.
casties
parents: 59
diff changeset
362 # templates
63184d71c014 lots of cleaning up.
casties
parents: 59
diff changeset
363 mainEditFile=PageTemplateFile('zpt/staff/edit_main', globals())
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
364 talks_full_html = PageTemplateFile('zpt/staff/talks_full_html', globals())
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
365 teaching_full_html = PageTemplateFile('zpt/staff/teaching_full_html', globals())
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
366
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
367
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
368 def __init__(self, folder, dbresult):
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
369 """constructor: takes parent MPIWGStaffFolder and content (DB row)"""
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
370 self.folder = folder
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
371 self.content = dbresult
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
372
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
373
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
374 def index_html(self, REQUEST, RESPONSE):
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
375 """show homepage"""
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
376 # get template /template/member_index_html (with acquisition)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
377 pt = getattr(self.template, 'member_index_html', None)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
378 if pt is not None:
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
379 return pt(member=self)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
380
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
381 return "No template /template/member_index_html"
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
382
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
383
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
384 def isValid(self):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
385 """returns if this member exists"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
386 return len(self.content) > 0
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
387
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
388 def isActive(self):
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
389 """Return if this member is visible (published)."""
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
390 return (self.content.publish_the_data == 'yes')
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
391
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
392 def getKey(self):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
393 """returns the db key"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
394 return self.content.key
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
395
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
396 def getUsername(self):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
397 """returns the username"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
398 id = re.sub('@mpiwg-berlin\.mpg\.de', '', self.content.e_mail)
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
399 return str(id)
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
400
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
401 getId = getUsername
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
402
46
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
403 def getConeId(self):
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
404 """return cone ID"""
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
405 results= self.folder.executeZSQL("SELECT coneid FROM keys WHERE key_main = %s",[self.content.key])
46
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
406 for res in results:
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
407 return res.coneid
46
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
408 return None
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
409
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
410 def getPublishedImageUrl(self, width=None, height=None, showAlways=False):
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
411 """returns the URL to the image if it is published"""
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
412 if self.content.image_p == 'yes' or showAlways:
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
413 url = 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/Scaler?fn=permanent/mpiwg/staff/%s'%self.getUsername()
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
414 if width is not None:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
415 url += '&dw=%s'%width
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
416
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
417 if height is not None:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
418 url += '&dh=%s'%height
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
419
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
420 return url
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
421
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
422 return None
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
423
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
424 def getContent(self):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
425 """returns the db content of this object"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
426 return self.content
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
427
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
428
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
429 # TODO: ugly!
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
430 security.declarePublic('sortBibliography')
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
431 def sortBibliography(self, bib, sortingMode=None, max=None):
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
432 """sort bibliography"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
433 if not sortingMode:
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
434 sortingMode= "priority"
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
435
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
436 l = [x for x in bib]
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
437
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
438 if sortingMode == "year":
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
439 l.sort(key=lambda x: getInt(x.year))
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
440 else:
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
441 l.sort(key=lambda x: getInt(x.priority))
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
442
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
443 if max:
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
444 return l[0:max]
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
445 else:
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
446 return l
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
447
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
448
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
449 getUrl = MPIWGHelper.getUrl
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
450
233
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
451
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
452 def getProfile(self, filter=None, length=0):
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
453 """Return the profile"""
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
454 logging.debug("getProfile: self.content=%s"%(repr(self.content)))
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
455 text = self.content.profile
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
456 if filter == 'plaintext':
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
457 # filter out any tags, keep only text
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
458 text = getPlaintext(text, length=length, wordwrap=True, ignoretags=['style'])
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
459
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
460 return text
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
461
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
462
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
463 def getTalks(self, published=True, sortBy='priority'):
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
464 """Return the list of talks"""
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
465 query = "SELECT oid,* FROM talks WHERE key_main = %s"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
466 if published:
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
467 query += " and published = 'yes'"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
468
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
469 if sortBy == 'priority':
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
470 query += " order by priority"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
471
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
472 return self.folder.executeZSQL(query, [self.getKey()])
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
473
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
474
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
475 def getTalksCal(self):
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
476 """Return the talks calendar object (MPIWGIcsManager)"""
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
477 try:
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
478 cal = self.folder.get('calendars').get("%s_talks"%self.getUsername())
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
479 return cal
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
480 except:
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
481 return None
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
482
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
483
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
484 def getTeaching(self, published=True, sortBy='priority'):
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
485 """Return the list of teaching activities"""
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
486 query = "SELECT oid,* FROM teaching WHERE key_main = %s"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
487 if published:
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
488 query += " AND published = 'yes'"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
489
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
490 if sortBy == 'priority':
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
491 query += " ORDER BY priority"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
492
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
493 return self.folder.executeZSQL(query,[self.getKey()])
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
494
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
495
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
496 def getLastUpdateCV(self):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
497 """getDate of Last Update"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
498 try:
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
499 ob=self.folder.get("downloadableFiles").get("%s_cv.pdf"%self.getUsername())
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
500 return datetime.datetime.fromtimestamp(ob._p_mtime)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
501 except:
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
502 return "No file yet!"
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
503
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
504
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
505 def getLastUpdatePublications(self):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
506 """getDate of Last Update"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
507 try:
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
508 ob=self.folder.get("downloadableFiles").get("%s_publications.pdf"%self.getUsername())
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
509 return datetime.datetime.fromtimestamp(ob._p_mtime)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
510 except:
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
511 return "No file yet!"
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
512
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
513
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
514 def downloadCV(self,REQUEST):
194
45984e00665f upload and download cv and publicationlist
dwinter
parents: 193
diff changeset
515 """download the cv"""
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
516 ob=self.folder.get("downloadableFiles").get("%s_cv.pdf" % self.getUsername())
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
517 REQUEST.RESPONSE.redirect(ob.absolute_url())
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
518
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
519
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
520 def downloadPublications(self,REQUEST):
194
45984e00665f upload and download cv and publicationlist
dwinter
parents: 193
diff changeset
521 """donwload the publication list"""
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
522 ob=self.folder.get("downloadableFiles").get("%s_publications.pdf"%self.getUsername())
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
523 REQUEST.RESPONSE.redirect(ob.absolute_url())
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
524
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
525
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
526 def getAdditionalLinks(self):
208
6d6076e28430 fix deleteField for additionalLink (still ugly though)
casties
parents: 206
diff changeset
527 return self.folder.executeZSQL("SELECT oid,* FROM additionallink WHERE key_main = %s ORDER BY priority",[self.content.key])
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
528
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
529
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
530 def getPathStyle(self, path, selected, style=""):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
531 """returns a string with the given style + 'sel' if path == selected."""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
532 if path == selected:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
533 return style + 'sel'
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
534 else:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
535 return style
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
536
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
537
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
538 security.declareProtected('View management screens','edit')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
539 def edit(self,REQUEST=None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
540 """Edit the basic information"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
541 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
542 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
543
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
544 if argv.has_key('last_name'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
545 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
546 self.changeData(argv);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
547
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
548 pt=PageTemplateFile('zpt/staff/edit_basic', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
549 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
550
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
551
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
552 security.declareProtected('View management screens','editShortEntry')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
553 def editShortEntry(self,REQUEST=None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
554 """Edit the basic information"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
555 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
556 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
557
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
558 if argv.has_key('current_work'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
559 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
560 self.changeData(argv);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
561
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
562 pt=PageTemplateFile('zpt/staff/edit_shortEntry', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
563 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
564
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
565
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
566 security.declareProtected('View management screens', 'editProfile')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
567 def editProfile(self, REQUEST=None):
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
568 """edit Profile, new entry replaces CD, current work and research interests"""
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
569 if REQUEST:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
570 kupu = REQUEST.form.get('kupu', None);
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
571 preview = REQUEST.form.get('preview', None);
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
572
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
573 if kupu:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
574 start = kupu.find("<body>")
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
575 end = kupu.find("</body>")
187
71c2d76f09b5 fix editProfile.
casties
parents: 186
diff changeset
576 newcontent = kupu[start+6:end]
71c2d76f09b5 fix editProfile.
casties
parents: 186
diff changeset
577 query = "UPDATE personal_www SET profile=%s WHERE key=%s"
71c2d76f09b5 fix editProfile.
casties
parents: 186
diff changeset
578 self.executeZSQL(query, [newcontent, self.content.key])
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
579
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
580 if preview:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
581 pass
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
582 # TODO: not supported yet
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
583 # if RESPONSE:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
584 # self.redirect(RESPONSE,"editProfile")
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
585 # return self.preview(newcontent)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
586
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
587 pt = PageTemplateFile('zpt/staff/edit_profile.zpt', globals()).__of__(self)
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
588 return pt()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
589
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
590
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
591 security.declareProtected('View management screens','editTalks')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
592 def editTalks(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
593 """edit talks"""
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
594 pt=PageTemplateFile('zpt/staff/edit_talks.zpt', globals()).__of__(self)
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
595
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
596 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
597 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
598
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
599 url = argv.get('ics_url', None)
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
600 if url:
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
601 #
242
0b7a95c02f68 added preference for number of talks from calendar on profile page.
casties
parents: 238
diff changeset
602 # ICS URL driven talks
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
603 #
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
604 cal_id = "%s_talks"%self.getUsername()
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
605 # use ICS calendar
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
606 cal = self.getTalksCal()
238
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
607 if cal is None:
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
608 # create new calendar
251
4742e71606e4 fixed bug when creating personal calendar.
casties
parents: 249
diff changeset
609 cal = MPIWGIcsManager.MPIWGIcsManager(cal_id, '', url, defaultProps=MPIWGIcsManager.calendar_props)
238
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
610 self.folder.get('calendars')[cal_id] = cal
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
611
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
612 else:
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
613 # calendar exists
238
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
614 if cal.url != url:
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
615 # remove and re-create
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
616 del self.folder.get('calendars')[cal_id]
251
4742e71606e4 fixed bug when creating personal calendar.
casties
parents: 249
diff changeset
617 cal = MPIWGIcsManager.MPIWGIcsManager(cal_id, '', url, defaultProps=MPIWGIcsManager.calendar_props)
238
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
618 self.folder.get('calendars')[cal_id] = cal
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
619
238
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
620 # show only upcoming
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
621 upcoming = argv.get('only_upcoming', None)
5f5d7f07c1bd added "show only upcoming" option for talks from calendar.
casties
parents: 237
diff changeset
622 cal.setFlag('only_upcoming', (upcoming == 'yes'))
242
0b7a95c02f68 added preference for number of talks from calendar on profile page.
casties
parents: 238
diff changeset
623 # number of events
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
624 talks_num = int(argv.get('talks_num', 5))
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
625 self.changeData({'talks_num': talks_num})
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
626
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
627 elif argv.has_key('main_fields'): #got data to change
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
628 #
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
629 # manually edited talks
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
630 #
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
631 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
632 self.changeAdditionalData(argv);
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
633 # number of events
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
634 talks_num = int(argv.get('talks_num', 5))
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
635 self.changeData({'talks_num': talks_num})
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
636
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
637 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
638
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
639
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
640 security.declareProtected('View management screens','editTeaching')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
641 def editTeaching(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
642 """edit teaching"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
643 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
644 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
645
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
646 if argv.has_key('main_fields'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
647 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
648 self.changeAdditionalData(argv);
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
649 # number of items
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
650 teachings_num = int(argv.get('teachings_num', 5))
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
651 self.changeData({'teachings_num': teachings_num})
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
652
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
653 pt=PageTemplateFile('zpt/staff/edit_teaching.zpt', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
654 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
655
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
656
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
657 security.declareProtected('View management screens','editAdditionalLinks')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
658 def editAdditionalLinks(self,REQUEST):
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
659 """editiere die additional link von der Webseite"""
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
660 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
661 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
662
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
663 if argv.has_key('main_fields'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
664 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
665 self.changeAdditionalData(argv);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
666
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
667 pt=PageTemplateFile('zpt/staff/edit_additionalLinks.zpt', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
668 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
669
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
670
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
671 security.declareProtected('View management screens','editDownloads')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
672 def editDownloads(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
673 """editiere die Downloads von der Webseite"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
674
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
675 pt=PageTemplateFile('zpt/staff/edit_downloads.zpt', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
676 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
677
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
678 def editPublications(self,REQUEST):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
679 """editiere die Publications von der Webseite"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
680 data=REQUEST.form
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
681 newData = {}
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
682
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
683 if 'selectionMode' in data:
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
684 newData['publications_mode'] = data['selectionMode']
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
685
243
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
686 if 'publications_num' in data:
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
687 newData['publications_num'] = int(data['publications_num'])
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
688
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
689 if len(newData) > 0:
980794794bb5 added preferences for number of publications, talks, and teachings on profile page.
casties
parents: 242
diff changeset
690 self.changeData(newData)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
691
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
692 pt=PageTemplateFile('zpt/staff/edit_publications.zpt', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
693 return pt()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
694
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
695
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
696 security.declareProtected('View management screens','editImage')
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
697 def editImage(self,REQUEST=None):
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
698 """Edit the image information"""
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
699 if REQUEST:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
700 argv=REQUEST.form
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
701
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
702 if argv.has_key('image_p'): #got data to change
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
703 self.invalidate_cache()
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
704 self.changeData(argv);
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
705
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
706 pt=PageTemplateFile('zpt/staff/edit_image', globals()).__of__(self)
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
707 return pt()
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
708
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
709
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
710 def refresh_content(self,):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
711 self.content = self.folder.executeZSQL("select * from personal_www where key = %s", [self.getKey()])[0]
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
712
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
713
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
714 def changeDownloads(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
715 """"change the downloadable files"""
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
716 self.invalidate_cache();
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
717
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
718 data=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
719
217
2598210ada7a ICS calendar for talks.
casties
parents: 216
diff changeset
720 ob = self.folder.get("downloadableFiles")
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
721
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
722 if data.get('cv_publish',None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
723
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
724 self.changeData({'cv_p':data['cv_publish']})
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
725
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
726 if data.get('publications_publish',None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
727 self.changeData({'publications_p':data['publications_publish']})
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
728
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
729
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
730 if data.get('cv_pdf',None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
731 cvName ="%s_cv.pdf"%self.getUsername()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
732 cvName=cvName.encode('utf-8')
195
124efbedd35b publish CV and publications on personal pages
dwinter
parents: 194
diff changeset
733
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
734 if not hasattr(ob,cvName):
194
45984e00665f upload and download cv and publicationlist
dwinter
parents: 193
diff changeset
735 cvFile = ExtFile.ExtFile(cvName,cvName)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
736 ob._setObject(cvName,cvFile)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
737
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
738 cvFile = getattr(ob,cvName)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
739
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
740 cvFile.manage_upload(file=data['cv_pdf'])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
741
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
742 if data.get('publications_pdf',None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
743 pdfName="%s_publications.pdf"%self.getUsername()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
744 pdfName=pdfName.encode('utf-8')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
745
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
746 if not hasattr(ob,pdfName):
194
45984e00665f upload and download cv and publicationlist
dwinter
parents: 193
diff changeset
747 cvFile = ExtFile.ExtFile(pdfName,pdfName)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
748 ob._setObject(pdfName,cvFile)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
749
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
750 cvFile = getattr(ob,pdfName)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
751
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
752 cvFile.manage_upload(file=data['publications_pdf'])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
753
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
754
194
45984e00665f upload and download cv and publicationlist
dwinter
parents: 193
diff changeset
755 REQUEST.response.redirect("editDownloads");
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
756
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
757
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
758 security.declareProtected('View management screens','changeData')
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
759 def changeData(self, changeSet):
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
760 """changes the data in the database, changeset expects field --> value."""
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
761 fields = []
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
762 values = []
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
763 for field in changeSet.keys():
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
764 if hasattr(self.content, field):
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
765 logging.debug("Changing: %s"%field)
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
766 fields.append('"'+sqlName(field)+'" = %s')
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
767 values.append(changeSet.get(field))
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
768
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
769 if len(fields) == 0:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
770 return
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
771
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
772 query = "update personal_www set " + ', '.join(fields) + " where key = %s"
236
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
773 values.append(self.getKey())
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
774 results = self.folder.executeZSQL(query, values)
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
775 logging.debug(results)
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
776
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
777 self.refresh_content()
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
778
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
779
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
780 security.declareProtected('View management screens','changeAdditionalData')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
781 def changeAdditionalData(self,data):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
782 """change the research entries"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
783
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
784 self.invalidate_cache();
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
785
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
786 newEntries={}
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
787
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
788
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
789 mainfieldL=data['main_fields'].split(",") #fields to be changed
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
790 # format DATABASE__FIELDNAME
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
791
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
792 mainfield={}
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
793 for x in mainfieldL:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
794 tmp=x.split('__')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
795 mainfield[tmp[0]]=tmp[1]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
796 for field in data:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
797 splittedField=field.split("__")
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
798 if len(splittedField)<3:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
799 pass #kein datenbank eintrag
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
800
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
801 elif splittedField[2]=='new': # store new entries
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
802 if not newEntries.has_key(splittedField[0]):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
803 newEntries[splittedField[0]]={}
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
804
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
805 newEntries[splittedField[0]][splittedField[1]]=data[field]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
806
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
807 else:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
808 query="UPDATE %s "%splittedField[0]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
809 query+="SET %s = '%s' "%(splittedField[1],sql_quote(data[field]))
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
810 query+="WHERE oid = '%s' "%sql_quote(splittedField[2])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
811
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
812 self.executeZSQL(query)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
813
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
814
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
815 #new entries
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
816 for newEntry in newEntries.keys():
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
817 query="INSERT INTO %s "%newEntry
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
818 keys=['key_main']
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
819 values=["'"+sql_quote(self.getKey())+"'"]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
820 for key in newEntries[newEntry].keys():
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
821 keys.append(key)
193
522d32a50c2b bug with umlauts in editing talks and teachung fixed
dwinter
parents: 191
diff changeset
822
522d32a50c2b bug with umlauts in editing talks and teachung fixed
dwinter
parents: 191
diff changeset
823 val = sql_quote(newEntries[newEntry][key])
522d32a50c2b bug with umlauts in editing talks and teachung fixed
dwinter
parents: 191
diff changeset
824 if not isinstance(val, unicode):
522d32a50c2b bug with umlauts in editing talks and teachung fixed
dwinter
parents: 191
diff changeset
825 val = val.decode("utf-8")
522d32a50c2b bug with umlauts in editing talks and teachung fixed
dwinter
parents: 191
diff changeset
826
522d32a50c2b bug with umlauts in editing talks and teachung fixed
dwinter
parents: 191
diff changeset
827 values.append("'"+val+"'")
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
828
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
829
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
830 keystring=",".join(keys)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
831
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
832 valuestring=",".join(values)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
833
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
834 query+=" (%s) "%keystring
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
835 query+="VALUES (%s)"%valuestring
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
836 if not (newEntries[newEntry][mainfield[newEntry]].lstrip().rstrip()==""):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
837 self.executeZSQL(query)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
838
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
839
38
3c98cc79dd14 version 0.1 mit publicationen von pubman (TEST!!)
dwinter
parents: 37
diff changeset
840
208
6d6076e28430 fix deleteField for additionalLink (still ugly though)
casties
parents: 206
diff changeset
841 security.declareProtected('View management screens','deleteField')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
842 def deleteField(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
843 """delete entry"""
208
6d6076e28430 fix deleteField for additionalLink (still ugly though)
casties
parents: 206
diff changeset
844 # TODO: this is ugly
6d6076e28430 fix deleteField for additionalLink (still ugly though)
casties
parents: 206
diff changeset
845 CHANGEABLE=['talks','teaching','pubmanbiblio','additionallink']
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
846
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
847 table = REQUEST.form.get('table',None);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
848 oid = REQUEST.form.get('oid',None);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
849
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
850
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
851 if not table in CHANGEABLE:
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
852 return
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
853 if oid is None:
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
854 oid = REQUEST.form.get('key',None);
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
855
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
856 if table is None or oid is None:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
857 return
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
858
208
6d6076e28430 fix deleteField for additionalLink (still ugly though)
casties
parents: 206
diff changeset
859 query="DELETE FROM %s WHERE oid = %%s"%(table)
6d6076e28430 fix deleteField for additionalLink (still ugly though)
casties
parents: 206
diff changeset
860 self.executeZSQL(query, [oid])
6d6076e28430 fix deleteField for additionalLink (still ugly though)
casties
parents: 206
diff changeset
861
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
862 REQUEST.response.redirect(self.REQUEST['HTTP_REFERER'])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
863
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
864
40
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
865 def invalidate_cache(self):
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
866 #TODO: How to invalidate the varnish cache from the member object
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
867 pass;
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
868
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
869
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
870 # TODO: compat, is this used?
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
871 getStaffURL = getUsername
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
872
191
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
873
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
874 def getBreadcrumbs(self):
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
875 """return list of breadcrumbs from here to the root"""
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
876 crumbs = []
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
877 label = '%s %s'%(self.content.first_name, self.content.last_name)
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
878 baseUrl = None
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
879 parent = aq_parent(self)
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
880 # get parents breadcrumbs
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
881 if hasattr(parent, 'getBreadcrumbs'):
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
882 crumbs = parent.getBreadcrumbs()
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
883 if len(crumbs) > 0:
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
884 # get base url from crumbs
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
885 baseUrl = crumbs[-1]['url'] + '/members'
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
886
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
887 if baseUrl is None:
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
888 baseUrl = '/en/staff/members'
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
889
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
890 # add this
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
891 crumbs.append({'text':label, 'url':self.getUrl(baseUrl=baseUrl), 'object':self})
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
892
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
893 return crumbs
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
894
90d44df497a6 updated breadcrumb handling, works for members now.
casties
parents: 190
diff changeset
895
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
896 def getPublicationsFromPubman(self,limit=None,publicationType=None):
141
45b7b24c8c42 move getPublicationsFromPubman to MPIWGStaffMember.
casties
parents: 134
diff changeset
897 """Return list of publications."""
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
898 if self.content.publications_mode=="year":
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
899 coneId = self.getConeId();
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
900 if coneId:
141
45b7b24c8c42 move getPublicationsFromPubman to MPIWGStaffMember.
casties
parents: 134
diff changeset
901 pubs = self.folder.mpiwgPubman.getPublications(coneId,limit=limit,publicationType=publicationType)
45b7b24c8c42 move getPublicationsFromPubman to MPIWGStaffMember.
casties
parents: 134
diff changeset
902 #pubs= self.folder.getPublicationsFromPubman(coneId,limit=limit,publicationType=publicationType)
156
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
903 return pubs
38
3c98cc79dd14 version 0.1 mit publicationen von pubman (TEST!!)
dwinter
parents: 37
diff changeset
904
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
905 elif self.content.publications_mode=="priority":
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
906 selPubs= self.getSelectedPublications()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
907
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
908 pubs=[]
73
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
909 count =0
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
910 for selPub in selPubs:
73
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
911 if limit and count >= limit:
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
912 break
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
913
53
e718d9a72f19 bibliographie funktionen
dwinter
parents: 48
diff changeset
914 logging.debug("searchFor:%s"%selPub.escidocid)
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
915 entry = self.mpiwgPubman.getEntryFromPubman(selPub.escidocid,extendedData=True);
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
916
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
917 #TODO getEntryFromPubmanShould return long texts
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
918 typesLongShort={'http://purl.org/eprint/type/Book':'book',
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
919 'http://purl.org/eprint/type/BookItem':'book-item',
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
920 'http://purl.org/escidoc/metadata/ves/publication-types/article':'article'};
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
921
156
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
922 if publicationType is not None:
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
923 #publicaitions typ ist gesetzt
134
9f45ed6ffeab bugs in publications
dwinter
parents: 128
diff changeset
924
156
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
925 if not ((entry[1] == publicationType) or (entry[1] == typesLongShort.get(publicationType,''))) :
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
926 #stimmt nicht dann weiter
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
927 continue;
202
c3c834cf1a6d minor bug in sho preprints
dwinter
parents: 201
diff changeset
928
c3c834cf1a6d minor bug in sho preprints
dwinter
parents: 201
diff changeset
929 if len(entry)>4:
c3c834cf1a6d minor bug in sho preprints
dwinter
parents: 201
diff changeset
930 pubs.append((selPub.escidocid,entry[0],entry[2],entry[3],entry[4]));
c3c834cf1a6d minor bug in sho preprints
dwinter
parents: 201
diff changeset
931 count+=1
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
932
46
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
933 return pubs
156
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
934
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
935 return []
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
936
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
937
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
938 def publications_full_html(self, REQUEST):
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
939 """show publication"""
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
940 pt=PageTemplateFile('zpt/staff/pubman/show_publications.zpt', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
941 return pt(member=self.content)
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
942
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
943
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
944 security.declareProtected('View management screens','addPublicationsFromPubman')
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
945 def addPublicationsFromPubman(self,REQUEST):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
946 """addPublications from pubman"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
947
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
948 data=REQUEST.form
38
3c98cc79dd14 version 0.1 mit publicationen von pubman (TEST!!)
dwinter
parents: 37
diff changeset
949
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
950 if data.get("method",None) is None:
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
951 pt=PageTemplateFile('zpt/staff/pubman/add_publications.zpt', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
952 return pt()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
953
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
954
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
955
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
956 if data.get("method") == "search":
73
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
957
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
958
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
959
201
81a8177ca354 shows where a entry comes from in editing mode
dwinter
parents: 195
diff changeset
960 entries= self.mpiwgPubman.search(data,contexts=["escidoc:85274","escidoc:38279","escidoc:644427"],resultWithContext=True)
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
961 pt=PageTemplateFile('zpt/staff/pubman/add_publications.zpt', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
962
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
963
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
964 return pt(values=entries)
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
965
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
966
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
967
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
968 if data.get("method") == "add":
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
969
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
970 return self.addEntriesToPublicationList(data)
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
971 #pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/staff/pubman','add_publications.zpt')).__of__(self)
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
972
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
973
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
974
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
975 def addEntriesToPublicationList(self,data):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
976 """fuege eintrage aus data zur publications liste,
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
977 @param data Map mit escidocID --> value
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
978 value muss "add" sein damit hinzugefuegt wird"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
979
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
980 for key in data.keys():
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
981
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
982 if key.startswith('escidoc:'):
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
983
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
984
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
985 query="INSERT INTO pubmanbiblio (key_main,escidocId) values (%s,%s)"
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
986
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
987 if data.get(key)=="add":
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
988 self.executeZSQL(query,[self.getKey(),key])
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
989
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
990
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
991
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
992 #selectedPublications = self.getSelectedPublications()
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
993
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
994 #pt = PageTemplateFile(os.path.join(package_home(globals()),'zpt/staff/pubman','change_publications.zpt')).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
995
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
996 #return pt()
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
997 if hasattr(self,'REQUEST'):
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
998 return self.REQUEST.response.redirect("changePublications")
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
999
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1000
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1001 def changePublications(self,REQUEST):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1002 """change published publications"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1003
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1004 data=REQUEST.form
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1005
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
1006 if data.get("method","") == "change":
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
1007
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1008 for key in data.keys():
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1009 splitted=key.split("__") #format escidoc_id__p fuer priority, nur escidocid
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1010 value=data[key]
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1011 if len(splitted)==1:
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1012 self.deleteFromPublicationList(key);
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1013
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1014 elif(splitted[1]) == "p":
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1015 self.setPublicationPriority(splitted[0],value);
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1016
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1017
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
1018 pt = PageTemplateFile('zpt/staff/pubman/change_publications', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1019 return pt()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1020
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1021
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1022 def deleteFromPublicationList(self,escidocid):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1023 """Loessche publication with escidoc id from publication list"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1024
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
1025 query ="DELETE FROM pubmanbiblio WHERE escidocid=%s and lower(key_main)=%s"
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1026
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
1027 self.executeZSQL(query,[escidocid,self.getKey().lower()]);
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1028
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1029
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1030 def setPublicationPriority(self,escidocid,value):
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
1031 try:
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
1032 query="update pubmanbiblio set priority=%s where escidocid=%s and lower(key_main)=%s"
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
1033
203
9ce5816e89b2 faeng priority fehler ab bei biblio
dwinter
parents: 202
diff changeset
1034 try:
9ce5816e89b2 faeng priority fehler ab bei biblio
dwinter
parents: 202
diff changeset
1035 x=int(value)
9ce5816e89b2 faeng priority fehler ab bei biblio
dwinter
parents: 202
diff changeset
1036 except:
9ce5816e89b2 faeng priority fehler ab bei biblio
dwinter
parents: 202
diff changeset
1037 logging.error("priority not a number")
9ce5816e89b2 faeng priority fehler ab bei biblio
dwinter
parents: 202
diff changeset
1038 return
9ce5816e89b2 faeng priority fehler ab bei biblio
dwinter
parents: 202
diff changeset
1039
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
1040 self.executeZSQL(query,[value,escidocid,self.getKey().lower()]);
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
1041
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
1042 except:
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
1043 logging.error("couldn't change:")
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
1044 logging.error(escidocid)
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
1045 logging.error(value)
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
1046
80
b1893c4c9d2c more display of project pages.
casties
parents: 79
diff changeset
1047
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1048 def getSelectedPublications(self):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1049 """hole publications aus der datenbank"""
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
1050 query="select * from pubmanbiblio where lower(key_main) = lower(%s) order by priority ASC"
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1051 return self.executeZSQL(query,[self.getKey()])
68
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1052
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1053
233
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
1054 def getProfileHtml(self, REQUEST):
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
1055 """get the profile"""
233
e2d2f018a8e2 add character count to staff profile editing page.
casties
parents: 226
diff changeset
1056 REQUEST.RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT')
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
1057 html="""<html><body>%s</body></html>"""
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
1058 if self.content.profile and self.content.profile != "":
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
1059 return html%self.content.profile
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
1060 else:
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
1061 return html%""
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
1062
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
1063
68
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1064 def generateProfileForPerson(self,REQUEST=None):
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1065 """erzeugt ein automatisches Profil aus den alten Eintraegen CV, Current work, und research interests"""
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1066
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1067 ret=""
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1068 #founds=self.ZSQLInlineSearch(_table='research_interest',key_main=person.getKeyUTF8())
80
b1893c4c9d2c more display of project pages.
casties
parents: 79
diff changeset
1069 founds=self.executeZSQL('select * from research_interest where lower(key_main) = %s', [self.getKey().lower()])
68
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1070 if founds:
236
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1071 ret+='<h3>Research interests</h3>\n<p>'
68
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1072 for found in self.sortPriority(founds):
236
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1073 ret+=found.interest+'<br/>'
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1074 if founds:
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1075 ret+='</p>\n'
237
45ef92d6aa8c ignore state of current_work_p.
casties
parents: 236
diff changeset
1076 if self.content.current_work:
236
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1077 ret+="<h3>Current work</h3>"
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1078 ret+='<p>'+self.content.current_work+'</p>\n'
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1079 if (self.content.cv_p == 'yes') and self.content.cv:
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1080 ret+="<h3>Curriculum Vitae</h3>"
c90c8333ca8f fix problem with current_work_p and auto-generated profile.
casties
parents: 234
diff changeset
1081 ret+='<p>'+self.formatAscii(self.content.cv)+'</p>'
68
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1082
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
1083 return ret
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
1084
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
1085
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
1086
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
1087 # initialize security
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
1088 InitializeClass(MPIWGStaffFolder)
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
1089 InitializeClass(MPIWGStaffMember)