annotate MPIWGRoot.py @ 216:3b517b412f77

fixed problem updating users with new IDs
author casties
date Wed, 02 Oct 2013 14:40:50 +0200
parents c0dcb747cc41
children 95e0087b9e19
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 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
2 from App.ImageFile import ImageFile
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
3 from Globals import package_home
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
4 import string
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
5 import os
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
6 import logging
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
7 from OFS.Folder import Folder
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
8
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
9 from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
10
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
11 import MPIWGHelper
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
12 import updatePersonalWWW
207
938add25f81b export shortenString to web
casties
parents: 189
diff changeset
13 from SrvTxtUtils import getInt, unicodify, refreshingImageFileIndexHtml, getDateString, shortenString
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
14
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
15
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
16 class MPIWGRoot(ZSQLExtendFolder):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
17 """Stammordner fuer den Web-Server"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
18
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
19 _v_harvestCache=None
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
20 meta_type='MPIWGRoot'
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
21
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
22 manage_options = Folder.manage_options+(
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
23 {'label':'Update personal homepages','action':'updatePersonalwww_html'},
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
24 {'label':'Reindex catalogs','action':'reindexCatalogs'},
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
25 {'label':'Main config','action':'changeMPIWGRootForm'},
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
26 {'label':'add e-mails','action':'showNewDBEntries'},
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
27 #{'label':'update the institutsbibliography','action':'updateInstitutsbiliography'},
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
28 #{'label':'Edit Historical Persons','action':'editHistoricalPersonsForm'},
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
29 #{'label':'Store Historical Persons','action':'storeHistoricalPersons'},
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
30 )
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
31
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
32 # (is this used?)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
33 folders=['MPIWGProject','Folder','ECHO_Navigation']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
34 # language of this instance
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
35 lang = 'en'
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
36 # types of objects that show up in navigation
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
37 nav_meta_types = ['MPIWGTemplate','MPIWGLink','MPIWGFolder']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
38
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
39 #
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
40 # templates
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
41 #
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
42 main_template = PageTemplateFile('zpt/www/main_template', globals())
26
8a99ad8713d6 new common template for fragments. new styles for servicebox.
casties
parents: 23
diff changeset
43 common_template = PageTemplateFile('zpt/www/common_template', globals())
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
44 mpiwg_css = ImageFile('css/mpiwg.css', globals())
66
68b3d71eed27 formatting for preprint list. javascript for foldable divs.
casties
parents: 65
diff changeset
45 # make mpiwg_css refreshable for development
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
46 mpiwg_css.index_html = refreshingImageFileIndexHtml
66
68b3d71eed27 formatting for preprint list. javascript for foldable divs.
casties
parents: 65
diff changeset
47 jquery_js = ImageFile('js/jquery.js', globals())
68b3d71eed27 formatting for preprint list. javascript for foldable divs.
casties
parents: 65
diff changeset
48 mpiwg_js = ImageFile('js/mpiwg.js', globals())
68b3d71eed27 formatting for preprint list. javascript for foldable divs.
casties
parents: 65
diff changeset
49 # make mpiwg_js refreshable for development
68b3d71eed27 formatting for preprint list. javascript for foldable divs.
casties
parents: 65
diff changeset
50 mpiwg_js.index_html = refreshingImageFileIndexHtml
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 129
diff changeset
51 # ZMI
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 129
diff changeset
52 changeMPIWGRootForm = PageTemplateFile('zpt/root/manage_change')
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 129
diff changeset
53
2
ddf6c1a27a4b new version with main_template and css in product.
casties
parents: 1
diff changeset
54
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
55
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
56 def __init__(self, id, title):
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
57 """init"""
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
58 self.id=id
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
59 self.title=title
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
60
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
61
72
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
62 # TODO: remove
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
63 def replaceNotEmpty(self,format,field):
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
64 """replace not empty"""
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
65 if field and (not field.lstrip()==''):
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
66 return format%field
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
67 #return self.decode(format%field)
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
68 else:
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
69 return ""
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
70
5cb46852ac05 reinsert rplaceNotEmpty in root
dwinter
parents: 71
diff changeset
71
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
72 def getLang(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
73 """returns the default language"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
74 return self.lang
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
75
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
76
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
77 def browserCheck(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
78 """check the browsers request to find out the browser type"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
79 bt = {}
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
80 ua = self.REQUEST.get_header("HTTP_USER_AGENT")
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
81 bt['ua'] = ua
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
82 bt['isIE'] = False
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
83 bt['isN4'] = False
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
84 if string.find(ua, 'MSIE') > -1:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
85 bt['isIE'] = True
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
86 else:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
87 bt['isN4'] = (string.find(ua, 'Mozilla/4.') > -1)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
88
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
89 try:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
90 nav = ua[string.find(ua, '('):]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
91 ie = string.split(nav, "; ")[1]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
92 if string.find(ie, "MSIE") > -1:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
93 bt['versIE'] = string.split(ie, " ")[1]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
94 except: pass
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
95
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
96 bt['isMac'] = string.find(ua, 'Macintosh') > -1
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
97 bt['isWin'] = string.find(ua, 'Windows') > -1
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
98 bt['isIEWin'] = bt['isIE'] and bt['isWin']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
99 bt['isIEMac'] = bt['isIE'] and bt['isMac']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
100 bt['staticHTML'] = False
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
101
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
102 return bt
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
103
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
104
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
105 def isNewCapital(self,text=None,reset=None):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
106
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
107 if text:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
108 text=text.upper()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
109 if reset:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
110 self.REQUEST['capital']="A"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
111 return True
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
112 else:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
113 if len(text)>0 and not (text[0]==self.REQUEST['capital']):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
114 self.REQUEST['capital']=text[0]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
115 return True
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
116 else:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
117 return False
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
118
87
77f2478ae971 getDateString method to format dates in English and German.
casties
parents: 84
diff changeset
119
77f2478ae971 getDateString method to format dates in English and German.
casties
parents: 84
diff changeset
120 def getDateString(self, **args):
77f2478ae971 getDateString method to format dates in English and German.
casties
parents: 84
diff changeset
121 """Return a formatted date string."""
77f2478ae971 getDateString method to format dates in English and German.
casties
parents: 84
diff changeset
122 return getDateString(**args)
77f2478ae971 getDateString method to format dates in English and German.
casties
parents: 84
diff changeset
123
207
938add25f81b export shortenString to web
casties
parents: 189
diff changeset
124
938add25f81b export shortenString to web
casties
parents: 189
diff changeset
125 def shortenString(self, s, l, ellipsis='... '):
938add25f81b export shortenString to web
casties
parents: 189
diff changeset
126 """returns a string of length l (or l-1) by omitting characters in the middle of s, replacing with ellipsis."""
938add25f81b export shortenString to web
casties
parents: 189
diff changeset
127 return shortenString(s, l, ellipsis=ellipsis)
938add25f81b export shortenString to web
casties
parents: 189
diff changeset
128
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
129
10
c711fe75d0ac order by weight form for MPIWGFolder. more cleanup.
casties
parents: 9
diff changeset
130 def getSubsections(self, here=None):
c711fe75d0ac order by weight form for MPIWGFolder. more cleanup.
casties
parents: 9
diff changeset
131 """return sub-navigation elements i.e. elements below sections"""
c711fe75d0ac order by weight form for MPIWGFolder. more cleanup.
casties
parents: 9
diff changeset
132 p = here
c711fe75d0ac order by weight form for MPIWGFolder. more cleanup.
casties
parents: 9
diff changeset
133 if p is None:
c711fe75d0ac order by weight form for MPIWGFolder. more cleanup.
casties
parents: 9
diff changeset
134 p = self
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
135
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
136 sec = None
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
137 # descend parents to the root (and remember the last id)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
138 while p is not None and p.meta_type != 'MPIWGRoot':
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
139 sec = p
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
140 p = p.aq_parent
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
141
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
142 subsecs = sec.objectItems(spec=self.nav_meta_types)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
143 subsecs = [s for s in subsecs if s[1].title != ""]
100
f4ac675b2031 more members pages.
casties
parents: 94
diff changeset
144 subsecs.sort(key=lambda x:getInt(getattr(x[1], 'weight', '0')))
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
145 return subsecs
10
c711fe75d0ac order by weight form for MPIWGFolder. more cleanup.
casties
parents: 9
diff changeset
146
c711fe75d0ac order by weight form for MPIWGFolder. more cleanup.
casties
parents: 9
diff changeset
147 # compatibility
c711fe75d0ac order by weight form for MPIWGFolder. more cleanup.
casties
parents: 9
diff changeset
148 subNav = getSubsections
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
149
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
150
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
151 def getSections(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
152 """returns a list of all sections i.e. top-level MPIWGFolders"""
126
2e2dd6a5ab26 cleanups and fixed getDateString.
casties
parents: 100
diff changeset
153 items = self.objectValues(spec='MPIWGFolder')
100
f4ac675b2031 more members pages.
casties
parents: 94
diff changeset
154 items.sort(key=lambda x:getInt(getattr(x, 'weight', '0')))
13
325e7c338815 research websites page. better department editing.
casties
parents: 10
diff changeset
155 return items
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
156
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
157
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
158 getPathStyle = MPIWGHelper.getPathStyle
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
159
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
160
180
a6739bb6a575 add reverse sorting of Features
casties
parents: 162
diff changeset
161 def getFeatures(self, num=None, reverse=False):
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
162 """returns a list of the last num Features"""
13
325e7c338815 research websites page. better department editing.
casties
parents: 10
diff changeset
163 dir = getattr(self, 'features', None)
325e7c338815 research websites page. better department editing.
casties
parents: 10
diff changeset
164 if dir is None:
325e7c338815 research websites page. better department editing.
casties
parents: 10
diff changeset
165 return []
325e7c338815 research websites page. better department editing.
casties
parents: 10
diff changeset
166
75
df56982ecb03 styles for hierarchical project list. some cleanup.
casties
parents: 72
diff changeset
167 items = dir.objectValues(spec='MPIWGFeature')
180
a6739bb6a575 add reverse sorting of Features
casties
parents: 162
diff changeset
168 items.sort(key=lambda x:int(x.weight), reverse=reverse)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
169 if num is not None:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
170 # take only the last num elements
13
325e7c338815 research websites page. better department editing.
casties
parents: 10
diff changeset
171 items = items[-num:]
325e7c338815 research websites page. better department editing.
casties
parents: 10
diff changeset
172 return items
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
173
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
174
84
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
175 def getFeatureAuthorMap(self):
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
176 """Return a map of authors of features.
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
177
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
178 Returns a dict with author names and a list of feature numbers.
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
179 """
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
180 features = self.getFeatures()
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
181 authors = {}
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
182 # build dict of unique authors and features
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
183 fno = 0
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
184 for f in features:
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
185 author = f.getAuthor()
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
186 fno += 1
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
187 if author:
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
188 for a in author.split(';'):
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
189 a = a.strip()
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
190 if a in authors:
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
191 authors[a].append(fno)
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
192 else:
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
193 authors[a] = [fno]
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
194
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
195 return authors
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
196
faaded775a8a styles for feature and feature archive.
casties
parents: 75
diff changeset
197
9
5db416602e85 new MPIWGDepartment class.
casties
parents: 2
diff changeset
198 def getDepartments(self):
5db416602e85 new MPIWGDepartment class.
casties
parents: 2
diff changeset
199 """returns a list of the Departments"""
5db416602e85 new MPIWGDepartment class.
casties
parents: 2
diff changeset
200 dir = getattr(self, 'departments', None)
5db416602e85 new MPIWGDepartment class.
casties
parents: 2
diff changeset
201 if dir is None:
5db416602e85 new MPIWGDepartment class.
casties
parents: 2
diff changeset
202 return []
5db416602e85 new MPIWGDepartment class.
casties
parents: 2
diff changeset
203
75
df56982ecb03 styles for hierarchical project list. some cleanup.
casties
parents: 72
diff changeset
204 items = dir.objectValues(spec='MPIWGDepartment')
14
69d221c3e010 fixed sorting bug.
casties
parents: 13
diff changeset
205 items.sort(key=lambda x:int(x.weight))
13
325e7c338815 research websites page. better department editing.
casties
parents: 10
diff changeset
206 return items
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
207
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
208
94
7aaed5218d55 added staffdb_key to departments. getDepartment also gets by id.
casties
parents: 87
diff changeset
209 def getDepartment(self, id=None, projectNumber=None):
39
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
210 """returns a Department object"""
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
211 dir = getattr(self, 'departments', None)
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
212 if dir is None:
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
213 return None
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
214
94
7aaed5218d55 added staffdb_key to departments. getDepartment also gets by id.
casties
parents: 87
diff changeset
215 if id is not None:
7aaed5218d55 added staffdb_key to departments. getDepartment also gets by id.
casties
parents: 87
diff changeset
216 return dir.get(id, None)
7aaed5218d55 added staffdb_key to departments. getDepartment also gets by id.
casties
parents: 87
diff changeset
217
39
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
218 if projectNumber is not None:
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
219 for dep in dir.objectValues(spec='MPIWGDepartment'):
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
220 if dep.getProjectNumber() == projectNumber:
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
221 return dep
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
222
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
223 return None
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
224
40
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
225
30
aa4ab114c28a more work on projects.
casties
parents: 27
diff changeset
226 def getProjectFolder(self):
27
9a75eb1b31b3 more work on projects.
casties
parents: 26
diff changeset
227 """returns the MPIWGProjectFolder"""
9a75eb1b31b3 more work on projects.
casties
parents: 26
diff changeset
228 dir = getattr(self, 'projects', None)
9a75eb1b31b3 more work on projects.
casties
parents: 26
diff changeset
229 return dir
9a75eb1b31b3 more work on projects.
casties
parents: 26
diff changeset
230
40
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
231
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
232 def getStaffFolder(self):
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
233 """returns the MPIWGStaffFolder"""
65
63184d71c014 lots of cleaning up.
casties
parents: 60
diff changeset
234 dir = getattr(self, 'members', None) # TODO: fix the test
40
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
235 return dir
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
236
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
237
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
238 def getMPIWGRoot(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
239 """returns the MPIWG root"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
240 return self
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
241
40
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
242
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
243 def MPIWGrootURL(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
244 """returns the URL to the root"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
245 return self.absolute_url()
40
fd8e78bbc5ed more work on projects.
casties
parents: 39
diff changeset
246
41
cacba38c268c added decode() back to MPIWGRoot, templates using it should be fixed...
casties
parents: 40
diff changeset
247
cacba38c268c added decode() back to MPIWGRoot, templates using it should be fixed...
casties
parents: 40
diff changeset
248 # TODO: make obsolete
cacba38c268c added decode() back to MPIWGRoot, templates using it should be fixed...
casties
parents: 40
diff changeset
249 def decode(self, s):
cacba38c268c added decode() back to MPIWGRoot, templates using it should be fixed...
casties
parents: 40
diff changeset
250 """unicodify"""
cacba38c268c added decode() back to MPIWGRoot, templates using it should be fixed...
casties
parents: 40
diff changeset
251 return unicodify(s)
cacba38c268c added decode() back to MPIWGRoot, templates using it should be fixed...
casties
parents: 40
diff changeset
252
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
253
39
bbad6a092861 more work on projects.
casties
parents: 35
diff changeset
254 def changeMPIWGRoot(self,title,connection_id,coneServiceURL,lang=None,autocommit=None,RESPONSE=None):
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
255 """change"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
256 self.title=title
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
257 self.connection_id=connection_id
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
258 #self.disciplineList=disciplineList
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
259 #self.themesList=themesList
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
260 self.coneServiceURL=coneServiceURL
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
261
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
262 if lang is not None:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
263 self.lang = lang
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
264
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
265 self.autocommit = (autocommit == "on")
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
266 if RESPONSE is not None:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
267 RESPONSE.redirect('manage_main')
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
268
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
269
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
270
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
271
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
272 def showNewDBEntries(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
273 """zeige neue Eintraege in der Datenbank ohne e-mail adressen bzw. fuer die noch kein Object angelegt wurde"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
274 qstr="select * from personal_www where web_object_created='no' and not key=''"
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
275 res=self.members.executeZSQL(qstr)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
276
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
277 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','showNewDBEntries.zpt')).__of__(self)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
278 return pt(newEntries=res)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
279
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
280
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
281
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
282
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
283 def generateNewPersonEntry(self,data):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
284 """generate a new person entry for data, neue personen werden zunaechst nur in der datenbank angelegt """
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
285 logging.debug("generateNewPersonEntry(%s)"%repr(data))
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
286 #memberFolder=getattr(self,'members')
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
287 #create the object
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
288
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
289 # try:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
290 # newObj=MPIWGStaff.MPIWGStaff(urllib.quote(data['key']),data['last_name'].encode('utf-8'),data['first_name'].encode('utf-8'))
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
291 # memberFolder._setObject(urllib.quote(data['key']),newObj)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
292 # except:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
293 # return False, "Cannot create new user %s (%s %s)"%(data['key'],sys.exc_info()[0],sys.exc_info()[1])
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
294 #
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
295
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
296 #create the new entry in the database
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
297
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
298
215
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
299 result,msg=self.members.createNewDBEntry(data['publish_the_data'],data['key'].replace("MPIWG:",""),data['last_name'],
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
300 data['first_name'],data['titles_new'],data['status'],"",
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
301 "",data['date_from'],data['date_to'],
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
302 data['department'],'',data['funded_by'],
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
303 data['e_mail2'],data['current_work'],"yes",data['date_stay_at_mpiwg'],data['group'],"no",data['current_work'])
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
304
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
305 return result,msg
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
306
210
7791d4fc8a0e remove "set datestyle" as it confuses psycopg date parsing. make sure postgresql default is set accordingly.
casties
parents: 209
diff changeset
307
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
308 def updatePersonEntry(self,newdata,ignoreEntries=None):
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
309 """update an person entry from newdata. but ignore all fields in ignore Entries"""
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
310 data = newdata.copy()
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
311 if ignoreEntries is None:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
312 ignoreEntries = []
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
313
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
314 #ignoreEntries.append('current_work') # TODO:updatecurrent work
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
315 logging.debug("updatePersonEntry: data=%s ignoreEntries=%s"%(repr(data),repr(ignoreEntries)))
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
316
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
317 if data['date_to']=="": # wenn date_to leer
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
318 data['date_to']=None
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
319
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
320 if data['date_from']=="": # wenn date_fromleer
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
321 data['date_from']=None
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
322
210
7791d4fc8a0e remove "set datestyle" as it confuses psycopg date parsing. make sure postgresql default is set accordingly.
casties
parents: 209
diff changeset
323 #eintragen
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
324 for x in ignoreEntries:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
325 logging.debug("updatePersonEntry: ignoring %s"%x)
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
326 if x in data:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
327 del data[x]
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
328
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
329 member = self.getStaffFolder().getMember(key = data['key'])
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
330 if member is None:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
331 logging.error("updatePersonEntry: member (key=%s) not found!"%repr(data['key']))
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
332 return
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
333
210
7791d4fc8a0e remove "set datestyle" as it confuses psycopg date parsing. make sure postgresql default is set accordingly.
casties
parents: 209
diff changeset
334 # TODO: make sure default datestyle is DMY
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
335 member.changeData(data)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
336
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
337
215
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
338
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
339
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
340 def updatePersonalwww_doIt(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
341 """do the update"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
342 args=self.REQUEST.form
215
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
343
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
344 resultSet=self.REQUEST.SESSION['personal_www']['resultSet']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
345 news=self.REQUEST.SESSION['personal_www']['news']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
346 conflicts=self.REQUEST.SESSION['personal_www']['conflicts']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
347 logging.debug("updatePersonalwww_doIt: args=%s\n resultSet=%s\n news=%s\n conflicts=%s"%(args,resultSet,news,conflicts))
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
348
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
349 ret="<html><body>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
350 # generate the new entry
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
351
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
352 if news and (len(news)>0):
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
353 ret+="<h2>Added</h2>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
354 ret+="<ul>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
355
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
356 for new in news:
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
357 logging.debug("updatePersonalwww_doIt: adding %s"%repr(new))
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
358 if args.has_key(new.encode('utf-8')): # entry was selected
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
359 result,msg=self.generateNewPersonEntry(resultSet[new])
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
360 if not result:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
361 logging.error("Error (generateNewPersonEntry) %s"%msg)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
362 ret+="<li>ERROR: %s %s"%(new.encode('utf-8'),msg)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
363 else:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
364 ret+="<li>OK: %s"%(new.encode('utf-8'))
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
365
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
366 if news and (len(news)>0):
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
367 ret+="</ul>"
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
368 ret+="<p>New entries will be visible on the webpage when an email address has been assigned.</p>"
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
369 else:
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
370 ret+="</ul>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
371
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
372 # update
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
373
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
374 if len(conflicts.keys())>0:
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
375 ret+="<h2>Accepted changes to user entries</h2>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
376 ret+="<p>Change Filemaker-db when necessary.</p>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
377
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
378 # conflicts
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
379 for conflict in conflicts.keys():
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
380 ignoreEntries=[]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
381 displayIgnored=[]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
382 for cf in conflicts[conflict]:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
383 if args[conflict.encode('utf-8')+'_'+cf[0]]=="stored": #use the stored one
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
384 ignoreEntries.append(cf[0]) #so ignore field cf[0]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
385 displayIgnored.append(cf)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
386
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
387 if len(displayIgnored)>0:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
388 ret+="<h3>%s</h3>"%conflict.encode('utf-8')
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
389 ret+="<table border='1'>"
209
e0cc46205395 add headings to updatePersonalWWW result page.
casties
parents: 207
diff changeset
390 ret+="<tr><th>Field</th><th>Web Version</th><th>FM Version</th></tr>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
391 for iE in displayIgnored:
209
e0cc46205395 add headings to updatePersonalWWW result page.
casties
parents: 207
diff changeset
392 ret+="<tr><td>%s</td><td>%s</td><td>%s</td></tr>"%(iE[0].encode('utf-8'),iE[1].encode('utf-8'),iE[2].encode('utf-8'))
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
393 ret+="</table>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
394
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
395 self.updatePersonEntry(resultSet[conflict],ignoreEntries=ignoreEntries)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
396
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
397 # rest
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
398 cl=list(conflicts.keys())
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
399
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
400 if len(resultSet.keys()) > 0:
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
401 ret += "<h2>Updated user entries</h2>"
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
402 ret += "<ul>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
403
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
404 for key in resultSet.keys():
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
405 if key not in cl:
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
406 self.updatePersonEntry(resultSet[key])
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
407 ret+="<li>%s %s (%s)</li>"%(resultSet[key].get('first_name','').encode('utf-8'), resultSet[key].get('last_name','').encode('utf-8'), key.encode('utf-8'))
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
408
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
409 if len(resultSet.keys()) > 0:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
410 ret += "</ul>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
411
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
412 ret += "<p>Done.</p>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
413 return ret+"</body></html>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
414
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
415
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
416 """update form for the homepages web form"""
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
417 updatePersonalwww_html = PageTemplateFile('zpt/updatePersonalwww', globals())
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
418
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
419
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
420 def updatePersonalwww(self,uploadfile):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
421 """update personalwww
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
422 @param uploadfile: file handle auf das file
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
423 """
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
424 dsn=self.getConnectionObj().connection_string
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
425 #dsn="dbname=personalwww"
215
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
426 resultSetTmp=updatePersonalWWW.importFMPXML(uploadfile)
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
427
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
428 resultSet={}
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
429 for key in resultSetTmp.keys():
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
430 # TODO: properly fix MPIWG: id problem
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
431 if key.startswith('MPIWG:'):
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
432 # strip MPIWG: from key
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
433 newkey = key.replace('MPIWG:','')
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
434 # replace key in data
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
435 resultSetTmp[key]['key'] = newkey
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
436 # replace key in resultSet
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
437 resultSet[newkey]=resultSetTmp[key];
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
438
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
439 else:
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
440 # copy entry
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
441 resultSet[key] = resultSetTmp[key]
215
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
442
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
443 news,conflicts=updatePersonalWWW.checkImport(dsn, resultSet)
215
c0dcb747cc41 handle problem of MPIWG: keys, MPIWG: in the keys is now removed.
dwinter
parents: 210
diff changeset
444
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
445 self.REQUEST.SESSION['personal_www'] = {'resultSet': resultSet, 'news': news, 'conflicts': conflicts}
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
446
216
3b517b412f77 fixed problem updating users with new IDs
casties
parents: 215
diff changeset
447 pt=PageTemplateFile('zpt/updatePersonalwww_check', globals()).__of__(self)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
448 return pt()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
449
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
450
55
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
451 def getAllProjectPublications(self):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
452 """get all publications"""
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
453 fw=file("/tmp/allProjectPublications","w")
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
454 projects =self.projects.getProjectsAsList(None,active=0,archived=0)
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
455
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
456 for project in projects:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
457 logging.debug(project)
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
458 if hasattr(project,'publicationList'):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
459 try:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
460 x =project.publicationList.bibliolist.data
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
461
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
462 except:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
463 logging.error("Can't do: %s"%project.absolute_url())
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
464 continue
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
465
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
466 id=project.getId()
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
467 for l in x.split("\n"):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
468 fw.write("%s,%s\n"%(id,l))
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
469 fw.flush()
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
470
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
471 fw.close()
127
4a8a532a05ba scale images
dwinter
parents: 100
diff changeset
472
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
473 def getBookLinkFromID(self,ident):
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
474 """holt die url auf eine buchseite, bekommt identifier MPIWG-Book:XXXX"""
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
475
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
476 splitted = ident.split(":")
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
477 if len(splitted)!=2:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
478 logging.debug("getBookLinkFromID: %s not a valid book id, should be MPIWG-Book:XXXX"%ident)
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 180
diff changeset
479 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
480
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
481 books = getattr(self,'books',None)
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
482 if books is None:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
483 logging.debug("getBookLinkFromID: cannot find books page folder")
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 180
diff changeset
484 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
485
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
486
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
487 bookobj = getattr(books,splitted[1],None)
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
488
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
489 if bookobj is None:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
490 logging.debug("getBookLinkFromID: %s not a valid book id"%ident)
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 180
diff changeset
491 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
492
127
4a8a532a05ba scale images
dwinter
parents: 100
diff changeset
493
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
494 return "books/"+splitted[1]
57
84879a3f91a6 getLastArrivals
dwinter
parents: 55
diff changeset
495
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
496
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
497 def manage_addMPIWGRootForm(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
498 """form for adding the root"""
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 129
diff changeset
499 pt=PageTemplateFile('zpt/root/addMPIWGRootForm', globals()).__of__(self)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
500 return pt()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
501
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
502 def manage_addMPIWGRoot(self,id,title,connection_id="",RESPONSE=None):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
503 """add a root folder"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
504 newObj=MPIWGRoot(id,title)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
505 self._setObject(id,newObj)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
506 ob=getattr(self,id)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
507 setattr(ob,'connection_id',connection_id)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
508 if RESPONSE is not None:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
509 RESPONSE.redirect('manage_main')
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
510