annotate MPIWGRoot.py @ 207:938add25f81b

export shortenString to web
author casties
date Mon, 01 Jul 2013 12:59:10 +0200
parents cc5198541af8
children e0cc46205395
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
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
307 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
308 """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
309 data = newdata.copy()
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
310 if ignoreEntries is None:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
311 ignoreEntries = []
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
312
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
313 #ignoreEntries.append('current_work') # TODO:updatecurrent work
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
314 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
315
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
316 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
317 data['date_to']=None
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
318
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
319 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
320 data['date_from']=None
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
321
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
322 #eintragen
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
323
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
324 columns=data.keys()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
325 for x in ignoreEntries:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
326 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
327 if x in data:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
328 del data[x]
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
329
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
330 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
331 if member is None:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
332 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
333 return
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
334
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
335 # TODO: change date handling
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
336 self.getStaffFolder().executeZSQL("SET DATESTYLE TO 'German'")
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
337 member.changeData(data)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
338
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
339 # msg=""
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
340 # insert=[]
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
341 # for key in columns:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
342 # if data[key]=="date_none": # date_none eintrag wird zu null uebersetzt
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
343 # insert.append('%s=null'%key)
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
344 # else:
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
345 # insert.append(""" "%s"=%s"""%(key,self.ZSQLQuote(data[key])))
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
346 #
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
347 # insertStr=",".join(insert)
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
348 # queryStr="update personal_www SET %s where key='%s'"%(insertStr,data['key'])
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
349 # self.ZSQLQuery("SET DATESTYLE TO 'German'")
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
350 # self.ZSQLQuery(queryStr)
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
351 #
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
352 # return True,msg
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
353
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
354
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
355 def updatePersonalwww_doIt(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
356 """do the update"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
357 args=self.REQUEST.form
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
358 resultSet=self.REQUEST.SESSION['personal_www']['resultSet']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
359 news=self.REQUEST.SESSION['personal_www']['news']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
360 conflicts=self.REQUEST.SESSION['personal_www']['conflicts']
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
361 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
362
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
363 ret="<html><body>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
364 # generate the new entry
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):
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
367 ret+="<h2>Added</h2>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
368 ret+="<ul>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
369
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
370 for new in news:
186
3ea224968f95 fix traversal to MPIWGStaffMember objects.
casties
parents: 185
diff changeset
371 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
372 result,msg=self.generateNewPersonEntry(resultSet[new])
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
373 if not result:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
374 logging.error("Error (generateNewPersonEntry) %s"%msg)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
375 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
376 else:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
377 ret+="<li>OK: %s"%(new.encode('utf-8'))
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
378
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
379 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
380 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
381 ret+="</ul>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
382
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
383 # update
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
384
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
385 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
386 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
387 ret+="<p>Change Filemaker-db when necessary.</p>"
0
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 # konflicte
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
390 for conflict in conflicts.keys():
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
391 ignoreEntries=[]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
392 displayIgnored=[]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
393 for cf in conflicts[conflict]:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
394 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
395 ignoreEntries.append(cf[0]) #so ignore field cf[0]
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
396 displayIgnored.append(cf)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
397
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
398 if len(displayIgnored)>0:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
399 ret+="<h3>%s</h3>"%conflict.encode('utf-8')
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
400 ret+="<table border='1'>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
401 for iE in displayIgnored:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
402 ret+="<tr><td>%s</td><td>%s</td><td>%s</td>"%(iE[0].encode('utf-8'),iE[1].encode('utf-8'),iE[2].encode('utf-8'))
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
403 ret+="</table>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
404
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
405 self.updatePersonEntry(resultSet[conflict],ignoreEntries=ignoreEntries)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
406
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
407 # rest
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
408 cl=list(conflicts.keys())
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
409
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
410 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
411 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
412 ret += "<ul>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
413
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
414 for key in resultSet.keys():
162
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
415 if key not in cl:
47392bf3fcba clean ups and fixes
casties
parents: 159
diff changeset
416 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
417 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
418
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
419 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
420 ret += "</ul>"
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
421
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
422 ret += "<p>Done.</p>"
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
423 return ret+"</body></html>"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
424
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
425
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
426 def updatePersonalwww_html(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
427 """update form for the homepages web form"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
428 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
429 return pt()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
430
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
431
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
432 def updatePersonalwww(self,uploadfile):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
433 """update personalwww
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
434 @param uploadfile: file handle auf das file
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
435 """
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
436 dsn=self.getConnectionObj().connection_string
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
437 #dsn="dbname=personalwww"
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
438 resultSet=updatePersonalWWW.importFMPXML(uploadfile)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
439 news,conflicts=updatePersonalWWW.checkImport(dsn, resultSet)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
440
188
16d55695f1c8 fix updating staff entries through "Update personal homepages". (creating new entries doesn't work)
casties
parents: 186
diff changeset
441 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
442
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
443 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
444 return pt()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
445
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
446
55
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
447 def getAllProjectPublications(self):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
448 """get all publications"""
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
449 fw=file("/tmp/allProjectPublications","w")
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
450 projects =self.projects.getProjectsAsList(None,active=0,archived=0)
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
451
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
452 for project in projects:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
453 logging.debug(project)
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
454 if hasattr(project,'publicationList'):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
455 try:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
456 x =project.publicationList.bibliolist.data
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
457
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
458 except:
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
459 logging.error("Can't do: %s"%project.absolute_url())
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
460 continue
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
461
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
462 id=project.getId()
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
463 for l in x.split("\n"):
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
464 fw.write("%s,%s\n"%(id,l))
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
465 fw.flush()
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
466
12cb73494367 bibliographie funktionen
dwinter
parents: 54
diff changeset
467 fw.close()
127
4a8a532a05ba scale images
dwinter
parents: 100
diff changeset
468
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
469 def getBookLinkFromID(self,ident):
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
470 """holt die url auf eine buchseite, bekommt identifier MPIWG-Book:XXXX"""
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
471
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
472 splitted = ident.split(":")
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
473 if len(splitted)!=2:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
474 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
475 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
476
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
477 books = getattr(self,'books',None)
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
478 if books is None:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
479 logging.debug("getBookLinkFromID: cannot find books page folder")
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 180
diff changeset
480 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
481
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
482
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
483 bookobj = getattr(books,splitted[1],None)
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
484
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
485 if bookobj is None:
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
486 logging.debug("getBookLinkFromID: %s not a valid book id"%ident)
185
a8d5ba6729f3 bug in delete entries fixes
dwinter
parents: 180
diff changeset
487 return ""
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
488
127
4a8a532a05ba scale images
dwinter
parents: 100
diff changeset
489
128
11b7f98c7ed1 added book links aus pubman
dwinter
parents: 127
diff changeset
490 return "books/"+splitted[1]
57
84879a3f91a6 getLastArrivals
dwinter
parents: 55
diff changeset
491
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
492
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
493 def manage_addMPIWGRootForm(self):
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
494 """form for adding the root"""
159
ee79f6ba8d01 clean up staff editing and some zpt forms.
casties
parents: 129
diff changeset
495 pt=PageTemplateFile('zpt/root/addMPIWGRootForm', globals()).__of__(self)
0
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
496 return pt()
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
497
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
498 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
499 """add a root folder"""
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
500 newObj=MPIWGRoot(id,title)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
501 self._setObject(id,newObj)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
502 ob=getattr(self,id)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
503 setattr(ob,'connection_id',connection_id)
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
504 if RESPONSE is not None:
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
505 RESPONSE.redirect('manage_main')
bca61e893fcc first checkin of MPIWGWeb r2 branch from CVS into mercurial
casties
parents:
diff changeset
506