annotate MPIWGStaff.py @ 188:16d55695f1c8

fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
author casties
date Fri, 14 Jun 2013 17:36:09 +0200
parents 71c2d76f09b5
children cc5198541af8
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
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
3 from zExceptions import Redirect
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
4
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
5 from OFS.Folder import Folder
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
6 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
7
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
8 from zope.interface import implements
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
9 from zope.publisher.interfaces import IPublishTraverse
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
10 from ZPublisher.BaseRequest import DefaultPublishTraverse
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
11
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
12 from AccessControl import ClassSecurityInfo
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
13 from App.class_init import InitializeClass
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
14 from App.ImageFile import ImageFile
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
15 from Products.PythonScripts.standard import sql_quote
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
16 from Products.ExtFile import ExtFile
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
17 import logging
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
18 import email
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
19 import re
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
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
22
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
23 from SrvTxtUtils import getInt, unicodify, utf8ify, sqlName
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
24 import MPIWGHelper
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
25
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
26 #
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
27 # compatibility
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
28 # TODO: should be removed when done
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
29 import MPIWGStaff_old
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
30
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
31 createNewDBEntry = MPIWGStaff_old.createNewDBEntry
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
32
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
33 class MPIWGStaff(MPIWGStaff_old.MPIWGStaff):
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
34 """Staff"""
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
35 pass
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
36
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
37 manage_addMPIWGStaffForm = MPIWGStaff_old.manage_addMPIWGStaffForm
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
38 manage_addMPIWGStaff = MPIWGStaff_old.manage_addMPIWGStaff
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
39
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
40
0
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:
40
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
89 # TODO: sometimes key is lowercased (e.g. responsibleScientistsList), we should fix the data
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
90 content = self.executeZSQL("select * from personal_www where lower(key) = %s", [key.lower()])
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
91 if len(content) > 0:
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
92 member = MPIWGStaffMember(self, dbresult=content[0])
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
93
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
94 return member
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
95
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
96
40
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
97 def isActiveMember(self, key):
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
98 """returns if member key is active"""
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
99 res = self.executeZSQL("select * from personal_www where lower(key) = %s and publish_the_data = 'yes'", [key.lower()])
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
100 return len(res) > 0
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
101
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
102
175
7d85ebe92ecf getMemberList gets arrivedWithin parameter.
casties
parents: 162
diff changeset
103 def getMemberList(self, department=None, sortBy='last_name', onlyCurrent=False, arrivedWithin=None, 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 = []
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
109 query = "select * from personal_www_list where publish_the_data = 'yes' and is_scholar='yes'"
93
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
110 args = []
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
111
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
112 if department is not None:
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
113 query += " and department ilike %s"
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
114 args.append('%%%s%%'%department)
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
115
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
116 if onlyCurrent:
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
117 query += " and date_from < CURRENT_DATE"
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
118
175
7d85ebe92ecf getMemberList gets arrivedWithin parameter.
casties
parents: 162
diff changeset
119 if arrivedWithin is not None:
7d85ebe92ecf getMemberList gets arrivedWithin parameter.
casties
parents: 162
diff changeset
120 query += " and date_from > CURRENT_DATE - interval %s"
7d85ebe92ecf getMemberList gets arrivedWithin parameter.
casties
parents: 162
diff changeset
121 args.append(arrivedWithin)
7d85ebe92ecf getMemberList gets arrivedWithin parameter.
casties
parents: 162
diff changeset
122
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
123 if sortBy == 'last_name':
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
124 query += " order by lower(last_name)"
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
125 elif sortBy == 'date_from':
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
126 query += " order by date_from DESC"
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
127
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
128 if limit > 0:
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
129 query += " limit %s"%int(limit)
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
130
93
48e88706cfc3 department filter for getMemberList.
casties
parents: 86
diff changeset
131 result = self.executeZSQL(query, args)
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
132 for res in result:
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
133 members.append(MPIWGStaffMember(self, dbresult=res))
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
134
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
135 return members
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
136
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
137
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
138 def sortPriority(self,list):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
139 def sort(x,y):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
140 try:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
141 xInt=int(x.priority)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
142 except:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
143 xInt=0
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
144 try:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
145 yInt=int(y.priority)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
146 except:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
147 yInt=0
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
148
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
149 return cmp(xInt,yInt)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
150
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
151 if not list:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
152 return []
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
153 tmp=[x for x in list]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
154 tmp.sort(sort)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
155
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
156 return tmp
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
157
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
158
106
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
159 def importSortingModeFromOldStaff(self):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
160 """ only used for the migration to the new website """
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
161 ret=[]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
162 for member in self.getMemberList():
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
163 email = member.content.e_mail
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
164 un = email.split("@")[0]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
165
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
166 logging.debug(un)
122
4a54537ddcf7 fix converting old members
dwinter
parents: 110
diff changeset
167 olduser = self.members_old.get(un)
106
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
168
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
169 if not olduser is None:
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
170 mode =olduser.getSortingMode()
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
171
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
172
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
173 if mode.startswith("year"):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
174 mode="year"
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
175
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
176 query="UPDATE personal_www SET publications_mode=%s WHERE key=%s"
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
177
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
178 self.executeZSQL(query,[mode,member.getKey()])
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
179
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
180 return ret
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
181
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
182
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
183 def importPublishFotoFromOldStaff(self):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
184 """ only used for the migration to the new website """
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
185 ret=[]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
186 for member in self.getMemberList():
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
187 email = member.content.e_mail
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
188 un = email.split("@")[0]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
189
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
190 logging.debug(un)
122
4a54537ddcf7 fix converting old members
dwinter
parents: 110
diff changeset
191 olduser = self.members_old.get(un)
106
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
192
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
193 if not olduser is None:
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
194 mode =olduser.getPublishImage()
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
195
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
196
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
197
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
198 query="UPDATE personal_www SET image_p=%s WHERE key=%s"
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
199
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
200 self.executeZSQL(query,[mode,member.getKey()])
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
201
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
202 return ret
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
203
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
204 def showDownloadableFiles(self):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
205 """copy df to the new"""
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
206 logging.debug("huh")
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
207 ret=[]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
208
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
209 for member in self.getMemberList(onlyCurrent=True):
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
210 email = member.content.e_mail
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
211 un = email.split("@")[0]
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
212
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
213 logging.debug(un)
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
214 olduser = self.www_neu.members.get(un)
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
215 if olduser is None:
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
216 continue;
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
217 df = olduser.get('downloadableFiles')
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
218 if df is not None:
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
219 ret.append(olduser)
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
220
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
221 return ret,len(ret)
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
222
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
223
7dd264f9b728 importOldSettingforSorting and Publish
dwinter
parents: 100
diff changeset
224
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
225 def manage_addMPIWGStaffFolderForm(self):
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
226 """form for adding the project"""
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
227 pt=PageTemplateFile('zpt/addMPIWGStaffFolderForm', globals()).__of__(self)
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
228 return pt()
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
229
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
230 def manage_addMPIWGStaffFolder(self,id,title,RESPONSE=None):
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
231 """add it"""
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
232 newObj=MPIWGStaffFolder(id,title)
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
233
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
234 self._setObject(id,newObj)
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
235
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
236 if RESPONSE is not None:
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
237 RESPONSE.redirect('manage_main')
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 0
diff changeset
238
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
239
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
240 class MPIWGStaffMember(Folder):
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
241 """MPIWG staff member object from database"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
242
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
243 security = ClassSecurityInfo()
65
63184d71c014 lots of cleaning up.
casties
parents: 59
diff changeset
244
63184d71c014 lots of cleaning up.
casties
parents: 59
diff changeset
245 # templates
63184d71c014 lots of cleaning up.
casties
parents: 59
diff changeset
246 mainEditFile=PageTemplateFile('zpt/staff/edit_main', globals())
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
247 talks_full_html = PageTemplateFile('zpt/staff/talks_full_html', globals())
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
248 teaching_full_html = PageTemplateFile('zpt/staff/teaching_full_html', globals())
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
249
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
250
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
251 def __init__(self, folder, dbresult):
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
252 """constructor: takes parent MPIWGStaffFolder and content (DB row)"""
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
253 self.folder = folder
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
254 self.content = dbresult
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
255
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
256
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
257 def index_html(self, REQUEST, RESPONSE):
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
258 """show homepage"""
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
259 # get template /template/member_index_html (with acquisition)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
260 pt = getattr(self.template, 'member_index_html', None)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
261 if pt is not None:
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
262 return pt(member=self)
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
263
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
264 return "No template /template/member_index_html"
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
265
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
266
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
267 def isValid(self):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
268 """returns if this member exists"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
269 return len(self.content) > 0
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
270
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
271 def isActive(self):
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
272 """Return if this member is visible (published)."""
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
273 return (self.content.publish_the_data == 'yes')
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
274
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
275 def getKey(self):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
276 """returns the db key"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
277 return self.content.key
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
278
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
279 def getUsername(self):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
280 """returns the username"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
281 id = re.sub('@mpiwg-berlin\.mpg\.de', '', self.content.e_mail)
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
282 return id
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
283
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
284 getId = getUsername
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
285
46
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
286 def getConeId(self):
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
287 """return cone ID"""
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
288 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
289 for res in results:
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
290 return res.coneid
46
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
291 return None
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
292
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
293 def getPublishedImageUrl(self, width=None, height=None, showAlways=False):
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
294 """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
295 if self.content.image_p == 'yes' or showAlways:
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
296 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
297 if width is not None:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
298 url += '&dw=%s'%width
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
299
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
300 if height is not None:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
301 url += '&dh=%s'%height
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
302
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
303 return url
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
304
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
305 return None
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
306
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
307 def getContent(self):
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
308 """returns the db content of this object"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
309 return self.content
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
310
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
311
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
312 # TODO: ugly!
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
313 security.declarePublic('sortBibliography')
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
314 def sortBibliography(self, bib, sortingMode=None, max=None):
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
315 """sort bibliography"""
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
316 if not sortingMode:
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
317 sortingMode= "priority"
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
318
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
319 l = [x for x in bib]
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
320
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
321 if sortingMode == "year":
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
322 l.sort(key=lambda x: getInt(x.year))
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
323 else:
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
324 l.sort(key=lambda x: getInt(x.priority))
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
325
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
326 if max:
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
327 return l[0:max]
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
328 else:
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
329 return l
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
330
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
331
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
332
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
333 def execute(self,mode,REQUEST=None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
334 method = getattr(self,mode,None)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
335 if method is not None:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
336 return method(REQUEST);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
337 else:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
338 return "NOT FOUND"
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
339
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
340
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
341 getUrl = MPIWGHelper.getUrl
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
342
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
343 def getTalks(self, published=True, sortBy='priority'):
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
344 """Return the list of talks"""
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
345 query = "SELECT oid,* FROM talks WHERE key_main = %s"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
346 if published:
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
347 query += " and published = 'yes'"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
348
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
349 if sortBy == 'priority':
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
350 query += " order by priority"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
351
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
352 return self.folder.executeZSQL(query, [self.content.key])
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
353
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
354 def getTeaching(self, published=True, sortBy='priority'):
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
355 """Return the list of teaching activities"""
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
356 query = "SELECT oid,* FROM teaching WHERE key_main = %s"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
357 if published:
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
358 query += " AND published = 'yes'"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
359
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
360 if sortBy == 'priority':
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
361 query += " ORDER BY priority"
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
362
107
bf3dc3a12147 needed second level foldable
dwinter
parents: 106
diff changeset
363 return self.folder.executeZSQL(query,[self.content.key])
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
364
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
365
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
366 def getLastUpdateCV(self):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
367 """getDate of Last Update"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
368 try:
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
369 fname="%s_cv.pdf"%self.getUsername().encode('utf-8')
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
370 logging.debug(fname)
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
371 ob=self.folder._getOb("downloadableFiles")._getOb(fname)
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
372 return ob.bobobase_modification_time()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
373 except:
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
374 return "No file yet!"
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
375
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
376
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
377 def getLastUpdatePublications(self):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
378 """getDate of Last Update"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
379 try:
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
380 ob=self.folder._getOb("downloadableFiles")._getOb("%s_publications.pdf"%self.getUsername().encode('utf-8'))
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
381 return ob.bobobase_modification_time()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
382 except:
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
383 return "No file yet!"
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
384
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
385
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
386 def downloadCV(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
387 fname="%s_cv.pdf"%self.getUsername().encode('utf-8')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
388 logging.debug(fname)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
389 ob=self.folder._getOb("downloadableFiles")._getOb(fname)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
390 REQUEST.RESPONSE.redirect(ob.absolute_url())
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
391
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
392 def downloadPublications(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
393 ob=self.folder._getOb("downloadableFiles")._getOb("%s_publications.pdf"%self.getUsername().encode('utf-8'))
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
394 REQUEST.RESPONSE.redirect(ob.absolute_url())
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
395
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
396
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
397 def getAdditionalLinks(self):
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
398 return self.folder.executeZSQL("SELECT oid,* FROM additionalLink WHERE key_main = %s ORDER BY priority",[self.content.key])
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
399
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
400
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
401 def getPathStyle(self, path, selected, style=""):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
402 """returns a string with the given style + 'sel' if path == selected."""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
403
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
404 if path == selected:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
405 return style + 'sel'
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
406 else:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
407 return style
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
408
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
409
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
410 security.declareProtected('View management screens','edit')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
411 def edit(self,REQUEST=None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
412 """Edit the basic information"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
413 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
414 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
415
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
416 if argv.has_key('last_name'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
417 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
418 self.changeData(argv);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
419
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
420 pt=PageTemplateFile('zpt/staff/edit_basic', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
421 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
422
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
423
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
424 security.declareProtected('View management screens','editShortEntry')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
425 def editShortEntry(self,REQUEST=None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
426 """Edit the basic information"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
427 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
428 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
429
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
430 if argv.has_key('current_work'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
431 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
432 self.changeData(argv);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
433
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
434 pt=PageTemplateFile('zpt/staff/edit_shortEntry', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
435 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
436
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
437
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
438 security.declareProtected('View management screens', 'editProfile')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
439 def editProfile(self, REQUEST=None):
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
440 """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
441 if REQUEST:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
442 kupu = REQUEST.form.get('kupu', None);
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
443 preview = REQUEST.form.get('preview', None);
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
444
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
445 if kupu:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
446 start = kupu.find("<body>")
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
447 end = kupu.find("</body>")
187
71c2d76f09b5 fix editProfile.
casties
parents: 186
diff changeset
448 newcontent = kupu[start+6:end]
71c2d76f09b5 fix editProfile.
casties
parents: 186
diff changeset
449 query = "UPDATE personal_www SET profile=%s WHERE key=%s"
71c2d76f09b5 fix editProfile.
casties
parents: 186
diff changeset
450 self.executeZSQL(query, [newcontent, self.content.key])
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
451
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
452 if preview:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
453 pass
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
454 # TODO: not supported yet
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
455 # if RESPONSE:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
456 # self.redirect(RESPONSE,"editProfile")
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
457 # return self.preview(newcontent)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
458
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
459 pt = PageTemplateFile('zpt/staff/edit_profile.zpt', globals()).__of__(self)
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
460 return pt()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
461
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
462
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
463
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
464 security.declareProtected('View management screens','editTalks')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
465 def editTalks(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
466 """edit talks"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
467 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
468 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
469
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
470 if argv.has_key('main_fields'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
471 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
472 self.changeAdditionalData(argv);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
473
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
474 pt=PageTemplateFile('zpt/staff/edit_talks.zpt', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
475 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
476
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
477
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
478 security.declareProtected('View management screens','editTeaching')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
479 def editTeaching(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
480 """edit teaching"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
481 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
482 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
483
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
484 if argv.has_key('main_fields'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
485 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
486 self.changeAdditionalData(argv);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
487
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
488 pt=PageTemplateFile('zpt/staff/edit_teaching.zpt', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
489 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
490
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
491
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
492 security.declareProtected('View management screens','editAdditionalLinks')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
493 def editAdditionalLinks(self,REQUEST):
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
494 """editiere die additional link von der Webseite"""
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
495 if REQUEST:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
496 argv=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
497
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
498 if argv.has_key('main_fields'): #got data to change
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
499 self.invalidate_cache()
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
500 self.changeAdditionalData(argv);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
501
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
502 pt=PageTemplateFile('zpt/staff/edit_additionalLinks.zpt', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
503 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
504
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
505
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
506 security.declareProtected('View management screens','editDownloads')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
507 def editDownloads(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
508 """editiere die Downloads von der Webseite"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
509
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
510 pt=PageTemplateFile('zpt/staff/edit_downloads.zpt', globals()).__of__(self)
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
511 return pt()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
512
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
513 def editPublications(self,REQUEST):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
514 """editiere die Publications von der Webseite"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
515 data=REQUEST.form
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
516
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
517 if data.has_key('selectionMode'):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
518 query="UPDATE personal_www SET publications_mode=%s WHERE key=%s"
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
519
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
520 self.executeZSQL(query,[data['selectionMode'],self.getKey()])
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
521
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
522 self.refresh_content()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
523
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
524 pt=PageTemplateFile('zpt/staff/edit_publications.zpt', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
525 return pt()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
526
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
527
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
528 security.declareProtected('View management screens','editImage')
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
529 def editImage(self,REQUEST=None):
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
530 """Edit the image information"""
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
531 if REQUEST:
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
532 argv=REQUEST.form
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
533
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
534 if argv.has_key('image_p'): #got data to change
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
535 self.invalidate_cache()
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
536 self.changeData(argv);
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
537
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
538 pt=PageTemplateFile('zpt/staff/edit_image', globals()).__of__(self)
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
539 return pt()
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
540
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
541
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
542 def refresh_content(self,):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
543 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
544
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
545
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
546 def changeDownloads(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
547 """"change the downloadable files"""
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
548 self.invalidate_cache();
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
549
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
550 data=REQUEST.form
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
551
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
552 ob = self.folder._getOb("downloadableFiles")
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
553
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
554 if data.get('cv_publish',None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
555
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
556 self.changeData({'cv_p':data['cv_publish']})
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
557
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
558 if data.get('publications_publish',None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
559 self.changeData({'publications_p':data['publications_publish']})
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
560
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
561
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
562 if data.get('cv_pdf',None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
563 cvName ="%s_cv.pdf"%self.getUsername()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
564 cvName=cvName.encode('utf-8')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
565 logging.debug("CCC")
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
566 if not hasattr(ob,cvName):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
567 cvFile = ExtFile(cvName,cvName)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
568 ob._setObject(cvName,cvFile)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
569
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
570 cvFile = getattr(ob,cvName)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
571
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
572 cvFile.manage_upload(file=data['cv_pdf'])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
573
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
574 if data.get('publications_pdf',None):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
575 pdfName="%s_publications.pdf"%self.getUsername()
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
576 pdfName=pdfName.encode('utf-8')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
577
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
578 if not hasattr(ob,pdfName):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
579 cvFile = ExtFile(pdfName,pdfName)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
580 ob._setObject(pdfName,cvFile)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
581
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
582 cvFile = getattr(ob,pdfName)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
583
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
584 cvFile.manage_upload(file=data['publications_pdf'])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
585
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
586
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
587 #REQUEST.response.redirect(self.REQUEST['HTTP_REFERER'])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
588
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
589
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
590 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
591 def changeData(self, changeSet):
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
592 """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
593 fields = []
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
594 values = []
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
595 for field in changeSet.keys():
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
596 if hasattr(self.content, field):
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
597 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
598 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
599 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
600
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
601 if len(fields) == 0:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
602 return
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
603
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
604 query = "update personal_www set " + ', '.join(fields) + " where key = %s"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
605 values.append(self.getKey().encode('utf-8'))
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
606 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
607 logging.debug(results)
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 187
diff changeset
608
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
609 self.refresh_content()
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
610
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
611
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
612 security.declareProtected('View management screens','changeAdditionalData')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
613 def changeAdditionalData(self,data):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
614 """change the research entries"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
615
149
0d9eb2a859d3 fixed typo
casties
parents: 147
diff changeset
616 self.invalidate_cache();
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
617
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
618 newEntries={}
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
619
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
620
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
621 mainfieldL=data['main_fields'].split(",") #fields to be changed
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
622 # format DATABASE__FIELDNAME
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
623
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
624 mainfield={}
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
625 for x in mainfieldL:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
626 tmp=x.split('__')
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
627 mainfield[tmp[0]]=tmp[1]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
628 for field in data:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
629 splittedField=field.split("__")
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
630 if len(splittedField)<3:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
631 pass #kein datenbank eintrag
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
632
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
633 elif splittedField[2]=='new': # store new entries
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
634 if not newEntries.has_key(splittedField[0]):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
635 newEntries[splittedField[0]]={}
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
636
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
637 newEntries[splittedField[0]][splittedField[1]]=data[field]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
638
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
639 else:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
640 query="UPDATE %s "%splittedField[0]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
641 query+="SET %s = '%s' "%(splittedField[1],sql_quote(data[field]))
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
642 query+="WHERE oid = '%s' "%sql_quote(splittedField[2])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
643
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
644 self.executeZSQL(query)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
645
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
646
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
647 #new entries
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
648 for newEntry in newEntries.keys():
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
649 query="INSERT INTO %s "%newEntry
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
650 keys=['key_main']
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
651 values=["'"+sql_quote(self.getKey())+"'"]
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
652 for key in newEntries[newEntry].keys():
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
653 keys.append(key)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
654 values.append("'"+sql_quote(newEntries[newEntry][key])+"'")
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
655
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
656
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
657 keystring=",".join(keys)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
658
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
659 valuestring=",".join(values)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
660
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
661 query+=" (%s) "%keystring
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
662 query+="VALUES (%s)"%valuestring
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
663 if not (newEntries[newEntry][mainfield[newEntry]].lstrip().rstrip()==""):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
664 self.executeZSQL(query)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
665
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
666
38
3c98cc79dd14 version 0.1 mit publicationen von pubman (TEST!!)
dwinter
parents: 37
diff changeset
667
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
668 security.declareProtected('View management screens','deleteField')
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
669
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
670 def deleteField(self,REQUEST):
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
671 """delete entry"""
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
672
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
673 CHANGEABLE=['talks','taching','pubmanbiblio']
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
674
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
675
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
676
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
677 table = REQUEST.form.get('table',None);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
678 oid = REQUEST.form.get('oid',None);
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
679
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
680
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
681 if not table in CHANGEABLE:
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
682 return
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
683 if oid is None:
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
684 oid = REQUEST.form.get('key',None);
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
685
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
686 if table is None or oid is None:
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
687 return
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
688
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
689 query="DELETE FROM %s WHERE oid = '%s'"%(table,oid)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
690
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
691 self.executeZSQL(query)
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
692 REQUEST.response.redirect(self.REQUEST['HTTP_REFERER'])
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
693
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
694
40
fd8e78bbc5ed more work on projects.
casties
parents: 38
diff changeset
695 def invalidate_cache(self):
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
696 #TODO: How to invalidate the varnish cache from the member object
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
697 pass;
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
698
79
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
699
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
700 # TODO: compat, is this used?
7f26c8e6c8e9 more styles for project lists.
casties
parents: 73
diff changeset
701 getStaffURL = getUsername
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
702
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
703 def getPublicationsFromPubman(self,limit=None,publicationType=None):
141
45b7b24c8c42 move getPublicationsFromPubman to MPIWGStaffMember.
casties
parents: 134
diff changeset
704 """Return list of publications."""
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
705 if self.content.publications_mode=="year":
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
706 coneId = self.getConeId();
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
707 if coneId:
141
45b7b24c8c42 move getPublicationsFromPubman to MPIWGStaffMember.
casties
parents: 134
diff changeset
708 pubs = self.folder.mpiwgPubman.getPublications(coneId,limit=limit,publicationType=publicationType)
45b7b24c8c42 move getPublicationsFromPubman to MPIWGStaffMember.
casties
parents: 134
diff changeset
709 #pubs= self.folder.getPublicationsFromPubman(coneId,limit=limit,publicationType=publicationType)
156
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
710 return pubs
38
3c98cc79dd14 version 0.1 mit publicationen von pubman (TEST!!)
dwinter
parents: 37
diff changeset
711
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
712 elif self.content.publications_mode=="priority":
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
713 selPubs= self.getSelectedPublications()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
714
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
715 pubs=[]
73
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
716 count =0
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
717 for selPub in selPubs:
73
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
718 if limit and count >= limit:
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
719 break
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
720
53
e718d9a72f19 bibliographie funktionen
dwinter
parents: 48
diff changeset
721 logging.debug("searchFor:%s"%selPub.escidocid)
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
722 entry = self.mpiwgPubman.getEntryFromPubman(selPub.escidocid,extendedData=True);
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
723
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
724 #TODO getEntryFromPubmanShould return long texts
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
725 typesLongShort={'http://purl.org/eprint/type/Book':'book',
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
726 'http://purl.org/eprint/type/BookItem':'book-item',
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
727 '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
728
156
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
729 if publicationType is not None:
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
730 #publicaitions typ ist gesetzt
134
9f45ed6ffeab bugs in publications
dwinter
parents: 128
diff changeset
731
156
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
732 if not ((entry[1] == publicationType) or (entry[1] == typesLongShort.get(publicationType,''))) :
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
733 #stimmt nicht dann weiter
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
734 continue;
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
735
134
9f45ed6ffeab bugs in publications
dwinter
parents: 128
diff changeset
736 pubs.append((selPub.escidocid,entry[0],entry[2],entry[3],entry[4]));
110
b554becd8226 Incomplete - # 74: More Link auf den pers?nlichne Homepages
dwinter
parents: 107
diff changeset
737 count+=1
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
738
46
955d102392db pubman integration 0.2
dwinter
parents: 38
diff changeset
739 return pubs
156
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
740
a9ad7dd7a8b2 clean up projects.
casties
parents: 149
diff changeset
741 return []
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
742
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
743
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
744 def publications_full_html(self, REQUEST):
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
745 """show publication"""
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
746 pt=PageTemplateFile('zpt/staff/pubman/show_publications.zpt', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
747 return pt(member=self.content)
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
748
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
749
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 175
diff changeset
750 security.declareProtected('View management screens','addPublicationsFromPubman')
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
751 def addPublicationsFromPubman(self,REQUEST):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
752 """addPublications from pubman"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
753
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
754 data=REQUEST.form
38
3c98cc79dd14 version 0.1 mit publicationen von pubman (TEST!!)
dwinter
parents: 37
diff changeset
755
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
756 if data.get("method",None) is None:
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
757 pt=PageTemplateFile('zpt/staff/pubman/add_publications.zpt', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
758 return pt()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
759
37
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
760
9b38ba45773b ?berarbeitung MPIWGStaff
dwinter
parents: 28
diff changeset
761
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
762 if data.get("method") == "search":
73
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
763
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
764
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
765
33c663a08025 projekte publicationen jetzt nach typen geordnet
dwinter
parents: 71
diff changeset
766 entries= self.mpiwgPubman.search(data,contexts=["escidoc:85274","escidoc:38279"])
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
767 pt=PageTemplateFile('zpt/staff/pubman/add_publications.zpt', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
768
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
769
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
770 return pt(values=entries)
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
771
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
772
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
773
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
774 if data.get("method") == "add":
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
775
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
776 return self.addEntriesToPublicationList(data)
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
777 #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
778
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
779
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
780
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
781 def addEntriesToPublicationList(self,data):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
782 """fuege eintrage aus data zur publications liste,
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
783 @param data Map mit escidocID --> value
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
784 value muss "add" sein damit hinzugefuegt wird"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
785
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
786 for key in data.keys():
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
787
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
788 if key.startswith('escidoc:'):
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
789
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
790
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
791 query="INSERT INTO pubmanbiblio (key_main,escidocId) values (%s,%s)"
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
792
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
793 if data.get(key)=="add":
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
794 self.executeZSQL(query,[self.getKey(),key])
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
795
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
796
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
797
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
798 #selectedPublications = self.getSelectedPublications()
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
799
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
800 #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
801
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
802 #return pt()
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
803 if hasattr(self,'REQUEST'):
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
804 return self.REQUEST.response.redirect("changePublications")
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
805
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
806
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
807 def changePublications(self,REQUEST):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
808 """change published publications"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
809
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
810 data=REQUEST.form
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
811
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
812 if data.get("method","") == "change":
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
813
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
814 for key in data.keys():
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
815 splitted=key.split("__") #format escidoc_id__p fuer priority, nur escidocid
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
816 value=data[key]
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
817 if len(splitted)==1:
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
818 self.deleteFromPublicationList(key);
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
819
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
820 elif(splitted[1]) == "p":
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
821 self.setPublicationPriority(splitted[0],value);
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
822
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
823
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 156
diff changeset
824 pt = PageTemplateFile('zpt/staff/pubman/change_publications', globals()).__of__(self)
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
825 return pt()
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
826
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
827
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
828 def deleteFromPublicationList(self,escidocid):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
829 """Loessche publication with escidoc id from publication list"""
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
830
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
831 query ="DELETE FROM pubmanbiblio WHERE escidocid=%s and lower(key_main)=%s"
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
832
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
833 self.executeZSQL(query,[escidocid,self.getKey().lower()]);
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
834
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
835
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
836 def setPublicationPriority(self,escidocid,value):
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
837 try:
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
838 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
839
147
6ae0201b1257 bug in edit publications. behoben
dwinter
parents: 141
diff changeset
840 self.executeZSQL(query,[value,escidocid,self.getKey().lower()]);
56
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
841
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
842 except:
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
843 logging.error("couldn't change:")
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
844 logging.error(escidocid)
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
845 logging.error(value)
a6ace48c2bf2 publication management f?r projekte
dwinter
parents: 53
diff changeset
846
80
b1893c4c9d2c more display of project pages.
casties
parents: 79
diff changeset
847
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
848 def getSelectedPublications(self):
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
849 """hole publications aus der datenbank"""
100
f4ac675b2031 more members pages.
casties
parents: 93
diff changeset
850 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
851 return self.executeZSQL(query,[self.getKey()])
68
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
852
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
853
86
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
854 def getProfile(self,REQUEST):
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
855 """get the profile"""
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
856 self.REQUEST.RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT')
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
857
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
858
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
859 html="""<html><body>%s</body></html>"""
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
860 if self.content.profile and self.content.profile != "":
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
861
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
862 return html%self.content.profile
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
863 else:
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
864
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
865 return html%""
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
866
ab836d3f96dc styles for staff list.
casties
parents: 85
diff changeset
867
68
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
868 def generateProfileForPerson(self,REQUEST=None):
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
869 """erzeugt ein automatisches Profil aus den alten Eintraegen CV, Current work, und research interests"""
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
870
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
871 ret=""
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
872 #founds=self.ZSQLInlineSearch(_table='research_interest',key_main=person.getKeyUTF8())
80
b1893c4c9d2c more display of project pages.
casties
parents: 79
diff changeset
873 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
874 if founds:
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
875 ret="<p class=\"bio_section_header\">Research interests: </p><br/>"
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
876 for found in self.sortPriority(founds):
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
877 ret+=found.interest+"<br/>"
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
878 if (self.content.current_work) and (not self.content.current_work==""):
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
879 ret+="<p class=\"bio_section_header\">Current work: </p><br/>"
80
b1893c4c9d2c more display of project pages.
casties
parents: 79
diff changeset
880 ret+=self.content.current_work+"<br/>"
68
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
881 if (self.content.cv) and (not self.content.cv==""):
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
882 ret+="<p class=\"bio_section_header\">Curriculum Vitae: </p><br/>"
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
883 ret+=self.formatAscii(self.content.cv)
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
884
2ad8aa9d306c bugs in MPIWGTemplate fixed
dwinter
parents: 59
diff changeset
885 return ret
47
225179dfd892 getPublications erweitert nach Typ
dwinter
parents: 46
diff changeset
886
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
887 # initialize security
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
888 InitializeClass(MPIWGStaffFolder)
3
ee3eb9a6665a MPIWGStaffFolder shows members from db now.
casties
parents: 2
diff changeset
889 InitializeClass(MPIWGStaffMember)