annotate MPIWGRoot.py @ 212:7df88b4746b4

trying to fix #130: sortProjects funktioniert nicht https://it-dev.mpiwg-berlin.mpg.de/tracs/webpage/ticket/130
author casties
date Wed, 07 Aug 2013 10:58:17 +0200
parents 7791d4fc8a0e
children c0dcb747cc41
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 """
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
285
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
189
cc5198541af8 erzeugen neuer eintr?ge auf der homepage mittels updatexml
dwinter
parents: 188
diff changeset
299 result,msg=self.members.createNewDBEntry(data['publish_the_data'],data['key'],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
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
338 def updatePersonalwww_doIt(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
339 """do the update"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
340 args=self.REQUEST.form
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
341 resultSet=self.REQUEST.SESSION['personal_www']['resultSet']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
342 news=self.REQUEST.SESSION['personal_www']['news']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
343 conflicts=self.REQUEST.SESSION['personal_www']['conflicts']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
344 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
345
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
346 ret="<html><body>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
347 # generate the new entry
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 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
350 ret+="<h2>Added</h2>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
351 ret+="<ul>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
352
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
353 for new in news:
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
354 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
355 result,msg=self.generateNewPersonEntry(resultSet[new])
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
356 if not result:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
357 logging.error("Error (generateNewPersonEntry) %s"%msg)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
358 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
359 else:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
360 ret+="<li>OK: %s"%(new.encode('utf-8'))
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
361
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
362 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
363 ret+="<p>New entries will be visible on the webpage when an email address has been assigned.</p>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
364 ret+="</ul>"
0
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 # update
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
367
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
368 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
369 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
370 ret+="<p>Change Filemaker-db when necessary.</p>"
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 # konflicte
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
373 for conflict in conflicts.keys():
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
374 ignoreEntries=[]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
375 displayIgnored=[]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
376 for cf in conflicts[conflict]:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
377 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
378 ignoreEntries.append(cf[0]) #so ignore field cf[0]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
379 displayIgnored.append(cf)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
380
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
381 if len(displayIgnored)>0:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
382 ret+="<h3>%s</h3>"%conflict.encode('utf-8')
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
383 ret+="<table border='1'>"
209
e0cc46205395 add headings to updatePersonalWWW result page.
casties
parents: 207
diff changeset
384 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
385 for iE in displayIgnored:
209
e0cc46205395 add headings to updatePersonalWWW result page.
casties
parents: 207
diff changeset
386 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
387 ret+="</table>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
388
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
389 self.updatePersonEntry(resultSet[conflict],ignoreEntries=ignoreEntries)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
390
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
391 # rest
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
392 cl=list(conflicts.keys())
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
393
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
394 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
395 ret += "<h2>Updating user entries</h2>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
396 ret += "<ul>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
397
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
398 for key in resultSet.keys():
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
399 if key not in cl:
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
400 self.updatePersonEntry(resultSet[key])
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
401 ret+="<li>%s</li>"%(key.encode('utf-8'))
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
402
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
403 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
404 ret += "</ul>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
405
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
406 ret += "<p>Done.</p>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
407 return ret+"</body></html>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
408
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
409
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
410 def updatePersonalwww_html(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
411 """update form for the homepages web form"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
412 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','updatePersonalwww.zpt')).__of__(self)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
413 return pt()
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
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
416 def updatePersonalwww(self,uploadfile):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
417 """update personalwww
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
418 @param uploadfile: file handle auf das file
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 dsn=self.getConnectionObj().connection_string
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
421 #dsn="dbname=personalwww"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
422 resultSet=updatePersonalWWW.importFMPXML(uploadfile)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
423 news,conflicts=updatePersonalWWW.checkImport(dsn, resultSet)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
424
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
425 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
426
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
427 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','updatePersonalwww_check.zpt')).__of__(self)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
428 return pt()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
429
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
430
55
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
431 def getAllProjectPublications(self):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
432 """get all publications"""
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
433 fw=file("/tmp/allProjectPublications","w")
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
434 projects =self.projects.getProjectsAsList(None,active=0,archived=0)
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
435
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
436 for project in projects:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
437 logging.debug(project)
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
438 if hasattr(project,'publicationList'):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
439 try:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
440 x =project.publicationList.bibliolist.data
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
441
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
442 except:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
443 logging.error("Can't do: %s"%project.absolute_url())
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
444 continue
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
445
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
446 id=project.getId()
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
447 for l in x.split("\n"):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
448 fw.write("%s,%s\n"%(id,l))
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
449 fw.flush()
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
450
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
451 fw.close()
127
4a8a532a05ba scale images
dwinter
parents: 100
diff changeset
452
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
453 def getBookLinkFromID(self,ident):
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
454 """holt die url auf eine buchseite, bekommt identifier MPIWG-Book:XXXX"""
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
455
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
456 splitted = ident.split(":")
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
457 if len(splitted)!=2:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
458 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
459 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
460
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
461 books = getattr(self,'books',None)
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
462 if books is None:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
463 logging.debug("getBookLinkFromID: cannot find books page folder")
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 180
diff changeset
464 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
465
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
466
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
467 bookobj = getattr(books,splitted[1],None)
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
468
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
469 if bookobj is None:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
470 logging.debug("getBookLinkFromID: %s not a valid book id"%ident)
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 180
diff changeset
471 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
472
127
4a8a532a05ba scale images
dwinter
parents: 100
diff changeset
473
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
474 return "books/"+splitted[1]
57
84879a3f91a6 getLastArrivals
dwinter
parents: 55
diff changeset
475
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
476
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
477 def manage_addMPIWGRootForm(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
478 """form for adding the root"""
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 129
diff changeset
479 pt=PageTemplateFile('zpt/root/addMPIWGRootForm', globals()).__of__(self)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
480 return pt()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
481
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
482 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
483 """add a root folder"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
484 newObj=MPIWGRoot(id,title)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
485 self._setObject(id,newObj)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
486 ob=getattr(self,id)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
487 setattr(ob,'connection_id',connection_id)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
488 if RESPONSE is not None:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
489 RESPONSE.redirect('manage_main')
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
490