50
|
1 #
|
|
2 # removed methods
|
|
3 #
|
81
|
4
|
|
5
|
50
|
6 class MPIWGProjects_notused:
|
|
7
|
|
8 def decode(self, str):
|
|
9 """return unicode object"""
|
|
10 return unicodify(str)
|
|
11
|
|
12 def isCheckField(self, fieldname):
|
|
13 """return chechfield"""
|
|
14 return (fieldname in checkFields)
|
|
15
|
|
16 def sortedByPlace(self, metatype):
|
|
17 """find metatype and sort by place"""
|
|
18 def sort(x, y):
|
|
19 return cmp(getattr(x[1], 'place', 0), getattr(y[1], 'place', 0))
|
|
20
|
|
21 logging.debug("MPIWGProjects begin: sorted by place: " + metatype)
|
|
22 founds = self.ZopeFind(self, obj_metatypes=[metatype]);
|
|
23
|
|
24 founds.sort(sort)
|
|
25 logging.debug("MPIWGProjects end: sorted by place: " + metatype)
|
|
26 return founds
|
|
27
|
|
28
|
|
29 def harvest_page(self, context=None, mode="normal"):
|
|
30 """seite fuer harvesting fuer die Projektsuche"""
|
|
31
|
|
32 if not context:
|
|
33 context = self
|
|
34
|
|
35 if self.isActiveProject() and self.isCurrentVersion():
|
|
36 templates = self.en.getHarvestCache()
|
|
37
|
|
38 ext = getattr(self, "harvest_main", None)
|
|
39 if ext:
|
|
40 rendered = getattr(self, ext.getId())()
|
|
41 templates[self.absolute_url()] = rendered
|
|
42 transaction.commit()
|
|
43 return rendered
|
|
44
|
|
45
|
|
46 pt = PageTemplateFile(os.path.join(package_home(globals()), 'zpt', 'harvest_main')).__of__(context)
|
|
47
|
|
48 rendered = pt()
|
|
49 templates[self.absolute_url()] = rendered
|
|
50 transaction.commit()
|
|
51 return rendered
|
|
52
|
|
53
|
|
54
|
|
55 def index_html_old(self, request=True, context=None):
|
|
56 """show homepage"""
|
|
57
|
|
58 bound_names = {}
|
|
59
|
|
60 if not context:
|
|
61 context = self
|
|
62 if request:
|
|
63 if self.REQUEST.has_key('date') and self.REQUEST.SESSION.get('MPI_redirected', None) == None:
|
|
64 self.REQUEST.SESSION['MPI_redirected'] = 1
|
|
65 self.REQUEST.RESPONSE.redirect(self.checkDate(self.REQUEST['date']) + "?date=" + self.REQUEST['date'])
|
|
66 else:
|
|
67 self.REQUEST.SESSION['MPI_redirected'] = None
|
|
68
|
|
69 # ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"])
|
|
70
|
|
71
|
|
72 request2 = getattr(self, 'REQUEST', None)
|
|
73
|
|
74 if request2 is not None:
|
|
75 response = request2.response
|
|
76 if not response.headers.has_key('content-type'):
|
|
77 response.setHeader('content-type', 'text/html')
|
|
78
|
|
79 security = getSecurityManager()
|
|
80 bound_names['user'] = security.getUser()
|
|
81
|
|
82 # Retrieve the value from the cache.
|
|
83 keyset = None
|
|
84 if self.ZCacheable_isCachingEnabled():
|
|
85
|
|
86 # Prepare a cache key.
|
|
87 keyset = {'here': self, 'params':request2['QUERY_STRING']}
|
|
88
|
|
89 result = self.ZCacheable_get(keywords=keyset)
|
|
90
|
|
91 if result is not None:
|
|
92 # Got a cached value.
|
|
93 return result
|
|
94
|
|
95 pt = getTemplate(self, "project_main")
|
|
96 # Execute the template in a new security context.
|
|
97 security.addContext(self)
|
|
98
|
|
99 try:
|
|
100 # logging.debug("index_html pt=%s"%repr(pt))
|
|
101 result = pt.pt_render(extra_context=bound_names)
|
|
102 # logging.debug("index_html result=%s"%repr(result))
|
|
103 if keyset is not None:
|
|
104 # Store the result in the cache.
|
|
105 self.ZCacheable_set(result, keywords=keyset)
|
|
106
|
|
107 return result
|
|
108 finally:
|
|
109 security.removeContext(self)
|
|
110
|
|
111
|
|
112
|
|
113 def index_html_old2(self, request=True, context=None):
|
|
114 """show homepage"""
|
|
115 if not context:
|
|
116 context = self
|
|
117 if request:
|
|
118 if self.REQUEST.has_key('date') and self.REQUEST.SESSION.get('MPI_redirected', None) == None:
|
|
119 self.REQUEST.SESSION['MPI_redirected'] = 1
|
|
120 self.REQUEST.RESPONSE.redirect(self.checkDate(self.REQUEST['date']) + "?date=" + self.REQUEST['date'])
|
|
121 else:
|
|
122 self.REQUEST.SESSION['MPI_redirected'] = None
|
|
123
|
|
124 # ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"])
|
|
125
|
|
126 ext = getattr(self, "project_main", None)
|
|
127 if ext:
|
|
128 return getattr(self, ext.getId())()
|
|
129
|
|
130 pt = PageTemplateFile(os.path.join(package_home(globals()), 'zpt', 'project_main')).__of__(context)
|
|
131
|
|
132 return pt()
|
|
133
|
|
134
|
|
135 def no_project(self):
|
|
136 """warnung: project noch nicht existent"""
|
|
137 pt = PageTemplateFile(os.path.join(package_home(globals()), 'zpt', 'no_project')).__of__(self)
|
|
138 return pt()
|
|
139
|
|
140
|
|
141 def showImagesOfPage(self, imageUrl=None):
|
|
142 """show Images of project"""
|
|
143 self.getContent('WEB_project_description', filter='yes') # get the content and store image infos into session
|
|
144 pt = PageTemplateFile(os.path.join(package_home(globals()), 'zpt', 'projectImageView.zpt')).__of__(self)
|
|
145 return pt()
|
|
146
|
|
147
|
|
148 def show_html(self):
|
|
149 """simple index"""
|
|
150 # return "HI"
|
|
151 pt = PageTemplateFile(os.path.join(package_home(globals()), 'zpt', 'MPIWGProject_index.zpt')).__of__(self)
|
|
152 return pt()
|
|
153
|
|
154 def getLabel_old(self):
|
|
155 """returns label (or title) of this project"""
|
|
156 l = self.getContent('xdata_07')
|
|
157 if l:
|
|
158 return l
|
|
159 l = self.getContent('WEB_title')
|
|
160 if l:
|
|
161 return l
|
|
162 return self.title
|
|
163
|
|
164 def getPersonKeyList(self):
|
|
165 """gibt die key Liste der beteiligten Personen zurueck (utf8 codiert)"""
|
|
166 # logging.error("getPersonKeyList:%s"%getattr(self,'responsibleScientistsList',[]))
|
|
167 try:
|
|
168 return [utf8ify(x[1]) for x in getattr(self, 'responsibleScientistsList', [])]
|
|
169 except:
|
|
170 return[]
|
|
171
|
|
172
|
|
173 def myCapitalize(self, txt):
|
|
174 """kapitalisiere auch Namen mit -"""
|
|
175 splitted = [x.capitalize() for x in txt.split("-")]
|
|
176 return "-".join(splitted)
|
|
177
|
|
178 def getNamesOrdered(self, list):
|
|
179 """Sortiert die Liste nach der Reihenfolge in xdata_01"""
|
|
180
|
|
181 nameList = self.getContent('xdata_01')
|
|
182 if nameList.find(";") > -1: # rate Trenner ist ;
|
|
183 names = nameList.split(";")
|
|
184 else:
|
|
185 names = nameList.split(",")
|
|
186
|
|
187 self._v_names = []
|
|
188 for name in names:
|
|
189 self._v_names.append(name.rstrip().lstrip())
|
|
190
|
|
191
|
|
192 def sort(x, y):
|
|
193 try:
|
|
194 return cmp(self._v_names.index(x[0]), self._v_names.index(y[0]))
|
|
195 except:
|
|
196 return 0
|
|
197
|
|
198 list.sort(sort)
|
|
199
|
|
200 return list
|
|
201
|
|
202 def getWebProject_description(self):
|
|
203 """get description"""
|
|
204 debug = self.REQUEST.cookies.get("MP_debug_code", None)
|
|
205
|
|
206 if debug and debug == "western":
|
|
207 return """
|
|
208 <html>
|
|
209 <head>
|
|
210 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
211 </head>
|
|
212 <body>%s</body>
|
|
213 </html>
|
|
214 """ % self.WEB_project_description[0]
|
|
215
|
|
216 return """
|
|
217 <html>
|
|
218 <head>
|
|
219 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
220 </head>
|
|
221 <body>%s</body>
|
|
222 </html>
|
|
223 """ % self.getContent('WEB_project_description')
|
|
224
|
|
225
|
|
226
|
|
227 def isChecked(self, wert, list):
|
|
228 """check if wert is in ; seperated list"""
|
|
229
|
|
230 # felder sind manchmnal als liste mit einem element definiert
|
|
231 if type(list) is StringType or UnicodeType:
|
|
232 splitted = list.split(";")
|
|
233 else:
|
|
234 splitted = list[0].split(";")
|
|
235
|
|
236 splitted = [y.rstrip().lstrip() for y in splitted]
|
|
237
|
|
238 for x in splitted:
|
|
239 x = re.sub(r"[^A-z ]", "", x)
|
|
240 if (not x == u'') and x in wert:
|
|
241 return 1
|
|
242 return 0
|
|
243
|
52
|
244
|
|
245 def getRootProject(self):
|
|
246 """returns the root (=top level) project of the current project"""
|
|
247 ct = self.getContexts(parents=self.getContent('xdata_05'))
|
|
248 if len(ct) > 0:
|
|
249 return ct[-1][0]
|
|
250 else:
|
|
251 return self
|
|
252
|
|
253
|
60
|
254 def getContent(self, field, filter=None):
|
|
255 """Inhalt des Feldes"""
|
|
256 # logging.debug("getContent field=%s filter=%s"%(field,filter))
|
|
257
|
|
258 if field == "short_title":
|
|
259 text = self.getContent("xdata_07")
|
|
260 if text == "":
|
|
261 text = self.getContent("WEB_title")
|
|
262 return text
|
52
|
263
|
60
|
264 text = u''
|
|
265
|
|
266 f = getattr(self, field)
|
|
267 if isinstance(f, list):
|
|
268 # compat with old lists
|
|
269 for x in f:
|
|
270 try:
|
|
271 text += x
|
|
272 except:
|
|
273 text = x
|
|
274 else:
|
|
275 text = f
|
|
276
|
|
277 try:
|
|
278 if text[len(text) - 1] == ";":
|
|
279 text = text[0:len(text) - 1]
|
|
280
|
|
281 except:
|
|
282 pass
|
|
283
|
|
284 if text == '': # # wozu die folgenden Zeilen??
|
|
285 text2 = text
|
|
286 else:
|
|
287 text2 = re.sub(r';([^\s])', '; \g<1>', text)
|
|
288
|
|
289 if field == "WEB_project_description": # #Jedenfalls darf letzteres nicht gemacht werden, falls normaler text
|
|
290 text2 = text
|
|
291
|
|
292 # teste ob ergebnis leer und header dann nehme title
|
|
293
|
|
294 if (text2 == '') and (field == 'WEB_project_header'):
|
|
295 return self.getContent('WEB_title')
|
|
296
|
|
297 if filter:
|
|
298 splitted = text2.split("""<p class="picture">""")
|
|
299 if len(splitted) > 1:
|
|
300 tmp = splitted[1].split("</p>")
|
|
301 # return repr(splitted[1])
|
|
302 try:
|
|
303 self.imageURL = tmp[0].split("\"")[1].encode('utf-8')
|
|
304 except:
|
|
305 try:
|
|
306 self.imageURL = tmp[0].split("src=")[1].split(" ")[0].encode('utf-8')
|
|
307 except:
|
|
308 self.imageURL = ""
|
|
309
|
|
310 split2 = "</p>".join(tmp[1:])
|
|
311
|
|
312 text3 = splitted[0] + split2
|
|
313
|
|
314 splitted = text3.split("""<p class="picturetitle">""")
|
|
315 if len(splitted) > 1:
|
|
316 tmp = splitted[1].split("</p>")
|
|
317 self.imagecap = tmp[0].encode('utf-8')
|
|
318
|
|
319 split4 = "".join(tmp[1:])
|
|
320
|
|
321 text5 = splitted[0] + split4
|
|
322 else:
|
|
323 # keine caption
|
|
324 text5 = text3
|
|
325 else:
|
|
326 # kein bild
|
|
327 text5 = text2
|
|
328 else:
|
|
329 text5 = text2
|
|
330
|
|
331 # teste ob WEB_project_description und keine fuehrenden p tags
|
|
332 if (len(text5) > 4) and (not text5[0:3] == '<p>') and (field == 'WEB_project_description'):
|
|
333 text5 = "<p>" + text5 + "</p>"
|
|
334
|
|
335
|
|
336 # filter image
|
|
337
|
|
338 text5 = text5.lstrip().rstrip() # loescher leerzeichen und einzelndes br
|
|
339 if (text5 == "<br>") or (text5 == "<br/>"):
|
|
340 text5 = ""
|
|
341
|
|
342 # logging.debug("getcontent: field=%s filter=%s -> %s"%(field,filter,repr(text5)))
|
|
343 return unicodify(text5)
|
|
344 # return utf8ify(text5) # return as utf-8 byte string
|
|
345
|
|
346
|
|
347
|
61
|
348 def getImageUrls(self, mode="not_cached"):
|
|
349 """get the image urls"""
|
|
350
|
|
351 if (getattr(self, 'link', '') == ''):
|
|
352 return [] # es gibt keinen link
|
|
353
|
|
354 server = xmlrpclib.ServerProxy(self.link)
|
|
355
|
|
356
|
|
357 if(mode == "cached"):
|
|
358 if (hasattr(self, "_v_imageUrls")):
|
|
359 logging.debug("getImageURL cached")
|
|
360 return self._v_imageUrls
|
|
361
|
|
362 try:
|
|
363 urls = server.getImageUrls()
|
|
364 ret = []
|
|
365 for url in urls:
|
|
366 url = os.path.join(self.link, url)
|
|
367 ret.append(url)
|
|
368
|
|
369 except:
|
|
370 self._v_imageUrls = []
|
|
371 return []
|
|
372 self._v_imageUrls = ret[0:]
|
|
373 return ret
|
60
|
374
|
61
|
375
|
81
|
376
|
|
377
|