annotate MPIWGFMManager.py @ 1:03cd09e9133e default tip

klein-grossschrift probleme behoben
author dwinter
date Fri, 03 May 2013 11:38:27 +0200
parents 957bcf42f206
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
957bcf42f206 initial
dwinter
parents:
diff changeset
1 from AccessControl import ClassSecurityInfo
957bcf42f206 initial
dwinter
parents:
diff changeset
2 from OFS.Folder import Folder
957bcf42f206 initial
dwinter
parents:
diff changeset
3 from OFS.PropertyManager import PropertyManager
957bcf42f206 initial
dwinter
parents:
diff changeset
4 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
957bcf42f206 initial
dwinter
parents:
diff changeset
5 import Acquisition
957bcf42f206 initial
dwinter
parents:
diff changeset
6
957bcf42f206 initial
dwinter
parents:
diff changeset
7 import random
957bcf42f206 initial
dwinter
parents:
diff changeset
8 import datetime
957bcf42f206 initial
dwinter
parents:
diff changeset
9 import logging
957bcf42f206 initial
dwinter
parents:
diff changeset
10 import httplib2
957bcf42f206 initial
dwinter
parents:
diff changeset
11 import MPIWGFMItem
957bcf42f206 initial
dwinter
parents:
diff changeset
12 import xml.etree.ElementTree as ET
957bcf42f206 initial
dwinter
parents:
diff changeset
13
957bcf42f206 initial
dwinter
parents:
diff changeset
14
957bcf42f206 initial
dwinter
parents:
diff changeset
15 # TODO: compatibility
957bcf42f206 initial
dwinter
parents:
diff changeset
16 months = [(u"January", u"Januar"),
957bcf42f206 initial
dwinter
parents:
diff changeset
17 (u"February", u"Februar"),
957bcf42f206 initial
dwinter
parents:
diff changeset
18 (u"March", u"M\u00e4rz"),
957bcf42f206 initial
dwinter
parents:
diff changeset
19 (u"April", u"April"),
957bcf42f206 initial
dwinter
parents:
diff changeset
20 (u"May", u"Mai"),
957bcf42f206 initial
dwinter
parents:
diff changeset
21 (u"June", u"Juni"),
957bcf42f206 initial
dwinter
parents:
diff changeset
22 (u"July", u"Juli"),
957bcf42f206 initial
dwinter
parents:
diff changeset
23 (u"August", u"August"),
957bcf42f206 initial
dwinter
parents:
diff changeset
24 (u"September", u"September"),
957bcf42f206 initial
dwinter
parents:
diff changeset
25 (u"October", u"Oktober"),
957bcf42f206 initial
dwinter
parents:
diff changeset
26 (u"November", u"November"),
957bcf42f206 initial
dwinter
parents:
diff changeset
27 (u"December", u"Dezember"),
957bcf42f206 initial
dwinter
parents:
diff changeset
28 ]
957bcf42f206 initial
dwinter
parents:
diff changeset
29
957bcf42f206 initial
dwinter
parents:
diff changeset
30 map_months = {'EN': [u"",
957bcf42f206 initial
dwinter
parents:
diff changeset
31 u"January",
957bcf42f206 initial
dwinter
parents:
diff changeset
32 u"February",
957bcf42f206 initial
dwinter
parents:
diff changeset
33 u"March",
957bcf42f206 initial
dwinter
parents:
diff changeset
34 u"April",
957bcf42f206 initial
dwinter
parents:
diff changeset
35 u"May",
957bcf42f206 initial
dwinter
parents:
diff changeset
36 u"June",
957bcf42f206 initial
dwinter
parents:
diff changeset
37 u"July",
957bcf42f206 initial
dwinter
parents:
diff changeset
38 u"August",
957bcf42f206 initial
dwinter
parents:
diff changeset
39 u"September",
957bcf42f206 initial
dwinter
parents:
diff changeset
40 u"October",
957bcf42f206 initial
dwinter
parents:
diff changeset
41 u"November",
957bcf42f206 initial
dwinter
parents:
diff changeset
42 u"December"],
957bcf42f206 initial
dwinter
parents:
diff changeset
43 'DE': [u"",
957bcf42f206 initial
dwinter
parents:
diff changeset
44 u"Januar",
957bcf42f206 initial
dwinter
parents:
diff changeset
45 u"Februar",
957bcf42f206 initial
dwinter
parents:
diff changeset
46 u"M\u00e4rz",
957bcf42f206 initial
dwinter
parents:
diff changeset
47 u"April",
957bcf42f206 initial
dwinter
parents:
diff changeset
48 u"Mai",
957bcf42f206 initial
dwinter
parents:
diff changeset
49 u"Juni",
957bcf42f206 initial
dwinter
parents:
diff changeset
50 u"Juli",
957bcf42f206 initial
dwinter
parents:
diff changeset
51 u"August",
957bcf42f206 initial
dwinter
parents:
diff changeset
52 u"September",
957bcf42f206 initial
dwinter
parents:
diff changeset
53 u"Oktober",
957bcf42f206 initial
dwinter
parents:
diff changeset
54 u"November",
957bcf42f206 initial
dwinter
parents:
diff changeset
55 u"Dezember"]}
957bcf42f206 initial
dwinter
parents:
diff changeset
56
957bcf42f206 initial
dwinter
parents:
diff changeset
57
957bcf42f206 initial
dwinter
parents:
diff changeset
58 class MPIWGFMManager(Folder, PropertyManager):
957bcf42f206 initial
dwinter
parents:
diff changeset
59 """ A Zope-Object for management of the Events
957bcf42f206 initial
dwinter
parents:
diff changeset
60
957bcf42f206 initial
dwinter
parents:
diff changeset
61 manages MPIWGItem-Objects inside this Folder-like object.
957bcf42f206 initial
dwinter
parents:
diff changeset
62 """
957bcf42f206 initial
dwinter
parents:
diff changeset
63 _v_items=None
957bcf42f206 initial
dwinter
parents:
diff changeset
64 meta_type = 'MPIWGFMManager'
957bcf42f206 initial
dwinter
parents:
diff changeset
65 title = ""
957bcf42f206 initial
dwinter
parents:
diff changeset
66 project_link = "" # WTF?
957bcf42f206 initial
dwinter
parents:
diff changeset
67
957bcf42f206 initial
dwinter
parents:
diff changeset
68 _properties = ({'id':'title', 'type':'string'},)
957bcf42f206 initial
dwinter
parents:
diff changeset
69
957bcf42f206 initial
dwinter
parents:
diff changeset
70 manage_options = Folder.manage_options + (
957bcf42f206 initial
dwinter
parents:
diff changeset
71 {'label':'Edit Defaults', 'action':'manage_editMPIWGFMManagerForm'},
957bcf42f206 initial
dwinter
parents:
diff changeset
72 {'label':'Edit FM Connection', 'action':'manage_editMPIWGFMConnectionForm'},
957bcf42f206 initial
dwinter
parents:
diff changeset
73
957bcf42f206 initial
dwinter
parents:
diff changeset
74 )
957bcf42f206 initial
dwinter
parents:
diff changeset
75
957bcf42f206 initial
dwinter
parents:
diff changeset
76
957bcf42f206 initial
dwinter
parents:
diff changeset
77 def __init__(self, id, title,url,username=None,password=None):
957bcf42f206 initial
dwinter
parents:
diff changeset
78 self.id = id
957bcf42f206 initial
dwinter
parents:
diff changeset
79 self.title = title
957bcf42f206 initial
dwinter
parents:
diff changeset
80 self.url=url
957bcf42f206 initial
dwinter
parents:
diff changeset
81 self.username=username
957bcf42f206 initial
dwinter
parents:
diff changeset
82 self.password=password
957bcf42f206 initial
dwinter
parents:
diff changeset
83 self.count = 0
957bcf42f206 initial
dwinter
parents:
diff changeset
84 self.Properties = [] # List of 6-tuples (ID_EN,ID_DE,VALUE_EN,VALUE_DE, WEIGHT,ID)
957bcf42f206 initial
dwinter
parents:
diff changeset
85 # Note: this defines properties that MPIWGItems will get on creation by default
957bcf42f206 initial
dwinter
parents:
diff changeset
86
957bcf42f206 initial
dwinter
parents:
diff changeset
87
957bcf42f206 initial
dwinter
parents:
diff changeset
88 def getDefaultProperties(self):
957bcf42f206 initial
dwinter
parents:
diff changeset
89 """ """
957bcf42f206 initial
dwinter
parents:
diff changeset
90 return self.Properties
957bcf42f206 initial
dwinter
parents:
diff changeset
91
957bcf42f206 initial
dwinter
parents:
diff changeset
92 def deleteObject(self, id):
957bcf42f206 initial
dwinter
parents:
diff changeset
93 """ delete an object not implemented management via DB"""
957bcf42f206 initial
dwinter
parents:
diff changeset
94 pass
957bcf42f206 initial
dwinter
parents:
diff changeset
95
957bcf42f206 initial
dwinter
parents:
diff changeset
96 def addProperty(self, tup=("", "", "", "", 0, "")):
957bcf42f206 initial
dwinter
parents:
diff changeset
97 self.Properties.append(tup)
957bcf42f206 initial
dwinter
parents:
diff changeset
98
957bcf42f206 initial
dwinter
parents:
diff changeset
99 def getWeight(self, n):
957bcf42f206 initial
dwinter
parents:
diff changeset
100 """ """
957bcf42f206 initial
dwinter
parents:
diff changeset
101 return self.Properties[n][4]
957bcf42f206 initial
dwinter
parents:
diff changeset
102
957bcf42f206 initial
dwinter
parents:
diff changeset
103 def getItems(self):
957bcf42f206 initial
dwinter
parents:
diff changeset
104 """returns all items directly"""
957bcf42f206 initial
dwinter
parents:
diff changeset
105
957bcf42f206 initial
dwinter
parents:
diff changeset
106 if self._v_items is not None:
957bcf42f206 initial
dwinter
parents:
diff changeset
107 return self._v_items
957bcf42f206 initial
dwinter
parents:
diff changeset
108
957bcf42f206 initial
dwinter
parents:
diff changeset
109 ret=[]
957bcf42f206 initial
dwinter
parents:
diff changeset
110 #fh = file("/usr/local/testzope13/Products/MPIWGFMManager/kalender.xml")
957bcf42f206 initial
dwinter
parents:
diff changeset
111 #root = ET.parse(fh);
957bcf42f206 initial
dwinter
parents:
diff changeset
112 url="http://fm8-server.mpiwg-berlin.mpg.de/fmi/xml/fmresultset.xml?-db=Kalender&-lay=Eingabe&-findall"
957bcf42f206 initial
dwinter
parents:
diff changeset
113
1
03cd09e9133e klein-grossschrift probleme behoben
dwinter
parents: 0
diff changeset
114 h =httplib2.Http("/var/tmp/.cacheWWW")
0
957bcf42f206 initial
dwinter
parents:
diff changeset
115 if self.username is not None:
957bcf42f206 initial
dwinter
parents:
diff changeset
116 h.add_credentials(self.username,self.password)
957bcf42f206 initial
dwinter
parents:
diff changeset
117
957bcf42f206 initial
dwinter
parents:
diff changeset
118 logging.debug(self.url)
957bcf42f206 initial
dwinter
parents:
diff changeset
119 resp, content = h.request(self.url)
957bcf42f206 initial
dwinter
parents:
diff changeset
120
957bcf42f206 initial
dwinter
parents:
diff changeset
121
957bcf42f206 initial
dwinter
parents:
diff changeset
122
957bcf42f206 initial
dwinter
parents:
diff changeset
123 root=ET.fromstring(content)
957bcf42f206 initial
dwinter
parents:
diff changeset
124
957bcf42f206 initial
dwinter
parents:
diff changeset
125 ET.register_namespace('', 'http://www.filemaker.com/xml/fmresultset')
957bcf42f206 initial
dwinter
parents:
diff changeset
126 records = root.findall(".//{http://www.filemaker.com/xml/fmresultset}record")
957bcf42f206 initial
dwinter
parents:
diff changeset
127 #records = root.findall(".//record")
957bcf42f206 initial
dwinter
parents:
diff changeset
128
957bcf42f206 initial
dwinter
parents:
diff changeset
129 for record in records:
957bcf42f206 initial
dwinter
parents:
diff changeset
130
957bcf42f206 initial
dwinter
parents:
diff changeset
131 ret.append(MPIWGFMItem.MPIWGFMItem(record,self));
957bcf42f206 initial
dwinter
parents:
diff changeset
132
957bcf42f206 initial
dwinter
parents:
diff changeset
133 self._v_items=ret
957bcf42f206 initial
dwinter
parents:
diff changeset
134 return ret;
957bcf42f206 initial
dwinter
parents:
diff changeset
135
957bcf42f206 initial
dwinter
parents:
diff changeset
136 def getSortedItems(self, field='Date'):
957bcf42f206 initial
dwinter
parents:
diff changeset
137 """return all items sorted by field"""
957bcf42f206 initial
dwinter
parents:
diff changeset
138 if field == 'Date':
957bcf42f206 initial
dwinter
parents:
diff changeset
139 items = self.getSortedByDate()
957bcf42f206 initial
dwinter
parents:
diff changeset
140 else:
957bcf42f206 initial
dwinter
parents:
diff changeset
141 items = self.getItems()
957bcf42f206 initial
dwinter
parents:
diff changeset
142 items.sort(key=lambda x:x.getValue(field))
957bcf42f206 initial
dwinter
parents:
diff changeset
143
957bcf42f206 initial
dwinter
parents:
diff changeset
144 return items
957bcf42f206 initial
dwinter
parents:
diff changeset
145
957bcf42f206 initial
dwinter
parents:
diff changeset
146 def getAllItemsFromTodayOn(self):
957bcf42f206 initial
dwinter
parents:
diff changeset
147 """ """
957bcf42f206 initial
dwinter
parents:
diff changeset
148 return self.getSortedByDate(startdate=datetime.date.today())
957bcf42f206 initial
dwinter
parents:
diff changeset
149
957bcf42f206 initial
dwinter
parents:
diff changeset
150 def getAllItemsUntilToday(self, newestFirst=False):
957bcf42f206 initial
dwinter
parents:
diff changeset
151 """ """
957bcf42f206 initial
dwinter
parents:
diff changeset
152 return self.getSortedByDate(enddate=datetime.date.today(), newestFirst=newestFirst)
957bcf42f206 initial
dwinter
parents:
diff changeset
153
957bcf42f206 initial
dwinter
parents:
diff changeset
154 def getSortedByDate(self, startdate=None, enddate=None, newestFirst=False):
957bcf42f206 initial
dwinter
parents:
diff changeset
155 """ return the Items, sorted by date. The start- and enddate parameters can be set (as strings YYYY.MM.DD) to limit
957bcf42f206 initial
dwinter
parents:
diff changeset
156 the list to items that have a date greater or equal to startdate and lower or equal to enddate."""
957bcf42f206 initial
dwinter
parents:
diff changeset
157 logging.debug("getsortedbydate startdate=%s enddate=%s" % (startdate, enddate))
957bcf42f206 initial
dwinter
parents:
diff changeset
158 #items = [self._getOb(x) for x in self.objectIds(spec="MPIWGItem")]
957bcf42f206 initial
dwinter
parents:
diff changeset
159 items = self.getItems()
957bcf42f206 initial
dwinter
parents:
diff changeset
160
957bcf42f206 initial
dwinter
parents:
diff changeset
161 # filter for startdate
957bcf42f206 initial
dwinter
parents:
diff changeset
162 if startdate != None:
957bcf42f206 initial
dwinter
parents:
diff changeset
163 try:
957bcf42f206 initial
dwinter
parents:
diff changeset
164 if isinstance(startdate, str):
957bcf42f206 initial
dwinter
parents:
diff changeset
165 startdatesplitted = [int(x) for x in startdate.split(".")]
957bcf42f206 initial
dwinter
parents:
diff changeset
166 logging.debug("getsortedbydate startdate=%s" % repr(startdatesplitted))
957bcf42f206 initial
dwinter
parents:
diff changeset
167 startdate = datetime.date(*startdatesplitted)
957bcf42f206 initial
dwinter
parents:
diff changeset
168
957bcf42f206 initial
dwinter
parents:
diff changeset
169 items = [x for x in items if x.Date >= startdate]
957bcf42f206 initial
dwinter
parents:
diff changeset
170 except:
957bcf42f206 initial
dwinter
parents:
diff changeset
171 pass
957bcf42f206 initial
dwinter
parents:
diff changeset
172
957bcf42f206 initial
dwinter
parents:
diff changeset
173 # filter for enddate
957bcf42f206 initial
dwinter
parents:
diff changeset
174 if enddate != None:
957bcf42f206 initial
dwinter
parents:
diff changeset
175 try:
957bcf42f206 initial
dwinter
parents:
diff changeset
176 if isinstance(enddate, str):
957bcf42f206 initial
dwinter
parents:
diff changeset
177 enddatesplitted = [int(x) for x in enddate.split(".")]
957bcf42f206 initial
dwinter
parents:
diff changeset
178 enddate = datetime.date(*enddatesplitted)
957bcf42f206 initial
dwinter
parents:
diff changeset
179
957bcf42f206 initial
dwinter
parents:
diff changeset
180 items = [x for x in items if x.Date <= enddate]
957bcf42f206 initial
dwinter
parents:
diff changeset
181 except:
957bcf42f206 initial
dwinter
parents:
diff changeset
182 pass
957bcf42f206 initial
dwinter
parents:
diff changeset
183
957bcf42f206 initial
dwinter
parents:
diff changeset
184 if not newestFirst:
957bcf42f206 initial
dwinter
parents:
diff changeset
185 items.sort(key=lambda x:x.Date)
957bcf42f206 initial
dwinter
parents:
diff changeset
186 else:
957bcf42f206 initial
dwinter
parents:
diff changeset
187 items.sort(key=lambda x:x.Date, reverse=True)
957bcf42f206 initial
dwinter
parents:
diff changeset
188 return items
957bcf42f206 initial
dwinter
parents:
diff changeset
189
957bcf42f206 initial
dwinter
parents:
diff changeset
190 def getGroupedByDate(self, lang="EN"):
957bcf42f206 initial
dwinter
parents:
diff changeset
191 """ return the entries in a dictionary structure,
957bcf42f206 initial
dwinter
parents:
diff changeset
192 grouped by Year, then by Month (and then a sorted list) """
957bcf42f206 initial
dwinter
parents:
diff changeset
193
957bcf42f206 initial
dwinter
parents:
diff changeset
194 result = {}
957bcf42f206 initial
dwinter
parents:
diff changeset
195 for item in self.getItems():
957bcf42f206 initial
dwinter
parents:
diff changeset
196 m = item.Date.month
957bcf42f206 initial
dwinter
parents:
diff changeset
197 y = item.Date.year
957bcf42f206 initial
dwinter
parents:
diff changeset
198
957bcf42f206 initial
dwinter
parents:
diff changeset
199 d = 0
957bcf42f206 initial
dwinter
parents:
diff changeset
200 if lang.upper() == "DE":
957bcf42f206 initial
dwinter
parents:
diff changeset
201 d = 1
957bcf42f206 initial
dwinter
parents:
diff changeset
202
957bcf42f206 initial
dwinter
parents:
diff changeset
203 if not y in result:
957bcf42f206 initial
dwinter
parents:
diff changeset
204 result[y] = {}
957bcf42f206 initial
dwinter
parents:
diff changeset
205
957bcf42f206 initial
dwinter
parents:
diff changeset
206 if not m in result[y]:
957bcf42f206 initial
dwinter
parents:
diff changeset
207 result[y][m] = [months[m - 1][d]]
957bcf42f206 initial
dwinter
parents:
diff changeset
208
957bcf42f206 initial
dwinter
parents:
diff changeset
209 result[y][m] += [item]
957bcf42f206 initial
dwinter
parents:
diff changeset
210
957bcf42f206 initial
dwinter
parents:
diff changeset
211 return result
957bcf42f206 initial
dwinter
parents:
diff changeset
212
957bcf42f206 initial
dwinter
parents:
diff changeset
213 def getGrouped(self, field, type, lang="EN"):
957bcf42f206 initial
dwinter
parents:
diff changeset
214 """ return the entries in a dictionary structure,
957bcf42f206 initial
dwinter
parents:
diff changeset
215 grouped by the values of field with grouping type.
957bcf42f206 initial
dwinter
parents:
diff changeset
216 type='year_month','a_z'"""
957bcf42f206 initial
dwinter
parents:
diff changeset
217
957bcf42f206 initial
dwinter
parents:
diff changeset
218 if type == 'year_month':
957bcf42f206 initial
dwinter
parents:
diff changeset
219 # sort by year, then month
957bcf42f206 initial
dwinter
parents:
diff changeset
220 map = map_months[lang.upper()]
957bcf42f206 initial
dwinter
parents:
diff changeset
221 key1 = lambda x:x.Date.year
957bcf42f206 initial
dwinter
parents:
diff changeset
222 key2 = lambda x:map[x.Date.month]
957bcf42f206 initial
dwinter
parents:
diff changeset
223 else:
957bcf42f206 initial
dwinter
parents:
diff changeset
224 # sort by first letter of field
957bcf42f206 initial
dwinter
parents:
diff changeset
225 key1 = lambda x:x.getValue(field, lang)[0].upper()
957bcf42f206 initial
dwinter
parents:
diff changeset
226 key2 = None
957bcf42f206 initial
dwinter
parents:
diff changeset
227
957bcf42f206 initial
dwinter
parents:
diff changeset
228 result = []
957bcf42f206 initial
dwinter
parents:
diff changeset
229 k1 = None
957bcf42f206 initial
dwinter
parents:
diff changeset
230 k2 = None
957bcf42f206 initial
dwinter
parents:
diff changeset
231 list1 = None
957bcf42f206 initial
dwinter
parents:
diff changeset
232 list2 = None
957bcf42f206 initial
dwinter
parents:
diff changeset
233 if key2 is None:
957bcf42f206 initial
dwinter
parents:
diff changeset
234 # single level
957bcf42f206 initial
dwinter
parents:
diff changeset
235 for item in self.getSortedItems(field=field):
957bcf42f206 initial
dwinter
parents:
diff changeset
236 if k1 != key1(item):
957bcf42f206 initial
dwinter
parents:
diff changeset
237 # new key
957bcf42f206 initial
dwinter
parents:
diff changeset
238 k1 = key1(item)
957bcf42f206 initial
dwinter
parents:
diff changeset
239 list1 = []
957bcf42f206 initial
dwinter
parents:
diff changeset
240 result.append({'key':k1, 'list':list1})
957bcf42f206 initial
dwinter
parents:
diff changeset
241
957bcf42f206 initial
dwinter
parents:
diff changeset
242 # add item to list
957bcf42f206 initial
dwinter
parents:
diff changeset
243 list1.append(item)
957bcf42f206 initial
dwinter
parents:
diff changeset
244
957bcf42f206 initial
dwinter
parents:
diff changeset
245 else:
957bcf42f206 initial
dwinter
parents:
diff changeset
246 # two level
957bcf42f206 initial
dwinter
parents:
diff changeset
247 for item in self.getSortedItems(field=field):
957bcf42f206 initial
dwinter
parents:
diff changeset
248 if k1 != key1(item):
957bcf42f206 initial
dwinter
parents:
diff changeset
249 # new key1
957bcf42f206 initial
dwinter
parents:
diff changeset
250 k1 = key1(item)
957bcf42f206 initial
dwinter
parents:
diff changeset
251 list1 = []
957bcf42f206 initial
dwinter
parents:
diff changeset
252 result.append({'key':k1, 'list':list1})
957bcf42f206 initial
dwinter
parents:
diff changeset
253 # invalidate key2
957bcf42f206 initial
dwinter
parents:
diff changeset
254 k2 = None
957bcf42f206 initial
dwinter
parents:
diff changeset
255
957bcf42f206 initial
dwinter
parents:
diff changeset
256 if k2 != key2(item):
957bcf42f206 initial
dwinter
parents:
diff changeset
257 # new key2
957bcf42f206 initial
dwinter
parents:
diff changeset
258 k2 = key2(item)
957bcf42f206 initial
dwinter
parents:
diff changeset
259 list2 = []
957bcf42f206 initial
dwinter
parents:
diff changeset
260 list1.append({'key':k2, 'list':list2})
957bcf42f206 initial
dwinter
parents:
diff changeset
261
957bcf42f206 initial
dwinter
parents:
diff changeset
262 # add item to list
957bcf42f206 initial
dwinter
parents:
diff changeset
263 list2.append(item)
957bcf42f206 initial
dwinter
parents:
diff changeset
264
957bcf42f206 initial
dwinter
parents:
diff changeset
265 return result
957bcf42f206 initial
dwinter
parents:
diff changeset
266
957bcf42f206 initial
dwinter
parents:
diff changeset
267
957bcf42f206 initial
dwinter
parents:
diff changeset
268 def getMostRecent(self, count=2):
957bcf42f206 initial
dwinter
parents:
diff changeset
269 """ returns the 'count' most recent event entries as EventObjects """
957bcf42f206 initial
dwinter
parents:
diff changeset
270 events = self.getItems()
957bcf42f206 initial
dwinter
parents:
diff changeset
271 events.sort(key=lambda x:x.Date)
957bcf42f206 initial
dwinter
parents:
diff changeset
272 events.reverse()
957bcf42f206 initial
dwinter
parents:
diff changeset
273 return events[:count]
957bcf42f206 initial
dwinter
parents:
diff changeset
274
957bcf42f206 initial
dwinter
parents:
diff changeset
275 def getFirst(self, count=2, start=0):
957bcf42f206 initial
dwinter
parents:
diff changeset
276 """ returns the count first elements """
957bcf42f206 initial
dwinter
parents:
diff changeset
277 events = self.getSortedItems()
957bcf42f206 initial
dwinter
parents:
diff changeset
278 return events[start:count]
957bcf42f206 initial
dwinter
parents:
diff changeset
279
957bcf42f206 initial
dwinter
parents:
diff changeset
280
957bcf42f206 initial
dwinter
parents:
diff changeset
281 def getNext(self, count=2):
957bcf42f206 initial
dwinter
parents:
diff changeset
282 """ returns the next 'count' upcoming events; if there are not enough upcoming events, fill with the latest past events """
957bcf42f206 initial
dwinter
parents:
diff changeset
283 today = datetime.date.today()
957bcf42f206 initial
dwinter
parents:
diff changeset
284 events = self.getItems()
957bcf42f206 initial
dwinter
parents:
diff changeset
285 events.sort(key=lambda x:x.Date)
957bcf42f206 initial
dwinter
parents:
diff changeset
286 upcoming = [x for x in events if x.Date >= today]
957bcf42f206 initial
dwinter
parents:
diff changeset
287 short = count - len(upcoming)
957bcf42f206 initial
dwinter
parents:
diff changeset
288 if short > 0:
957bcf42f206 initial
dwinter
parents:
diff changeset
289 pastevents = [x for x in events if x.Date < today]
957bcf42f206 initial
dwinter
parents:
diff changeset
290 upcoming += pastevents[-short:]
957bcf42f206 initial
dwinter
parents:
diff changeset
291 # upcoming.reverse()
957bcf42f206 initial
dwinter
parents:
diff changeset
292 return upcoming[:count]
957bcf42f206 initial
dwinter
parents:
diff changeset
293
957bcf42f206 initial
dwinter
parents:
diff changeset
294 def getNewID(self):
957bcf42f206 initial
dwinter
parents:
diff changeset
295 """ """
957bcf42f206 initial
dwinter
parents:
diff changeset
296 items = self.getItems()
957bcf42f206 initial
dwinter
parents:
diff changeset
297 if len(items) == 0:
957bcf42f206 initial
dwinter
parents:
diff changeset
298 count = 1
957bcf42f206 initial
dwinter
parents:
diff changeset
299 else:
957bcf42f206 initial
dwinter
parents:
diff changeset
300 itemsnum = [x for x in items if x.id.isdigit()]
957bcf42f206 initial
dwinter
parents:
diff changeset
301 itemsnum.sort(lambda a, b :cmp(a.id, b.id))
957bcf42f206 initial
dwinter
parents:
diff changeset
302
957bcf42f206 initial
dwinter
parents:
diff changeset
303 count = int(itemsnum[-1].id) + 1
957bcf42f206 initial
dwinter
parents:
diff changeset
304 return "%04d" % (count)
957bcf42f206 initial
dwinter
parents:
diff changeset
305
957bcf42f206 initial
dwinter
parents:
diff changeset
306
957bcf42f206 initial
dwinter
parents:
diff changeset
307
957bcf42f206 initial
dwinter
parents:
diff changeset
308 def manage_editMPIWGFMManager(self, REQUEST):
957bcf42f206 initial
dwinter
parents:
diff changeset
309 """ """
957bcf42f206 initial
dwinter
parents:
diff changeset
310
957bcf42f206 initial
dwinter
parents:
diff changeset
311 formdata = REQUEST.form
957bcf42f206 initial
dwinter
parents:
diff changeset
312
957bcf42f206 initial
dwinter
parents:
diff changeset
313 # update property names and values and weights
957bcf42f206 initial
dwinter
parents:
diff changeset
314 # date,title,category
957bcf42f206 initial
dwinter
parents:
diff changeset
315 property_ids = [int(x.split('_')[1]) for x in formdata.keys() if x.endswith('_en_key')]
957bcf42f206 initial
dwinter
parents:
diff changeset
316 for pid in property_ids:
957bcf42f206 initial
dwinter
parents:
diff changeset
317 if pid < len(self.Properties):
957bcf42f206 initial
dwinter
parents:
diff changeset
318 self.Properties[pid] = (
957bcf42f206 initial
dwinter
parents:
diff changeset
319 formdata["property_%s_en_key" % pid],
957bcf42f206 initial
dwinter
parents:
diff changeset
320 formdata["property_%s_de_key" % pid],
957bcf42f206 initial
dwinter
parents:
diff changeset
321 formdata["property_%s_en_value" % pid],
957bcf42f206 initial
dwinter
parents:
diff changeset
322 formdata["property_%s_de_value" % pid],
957bcf42f206 initial
dwinter
parents:
diff changeset
323 formdata["property_%s_weight" % pid],
957bcf42f206 initial
dwinter
parents:
diff changeset
324 formdata["property_%s_id" % pid])
957bcf42f206 initial
dwinter
parents:
diff changeset
325
957bcf42f206 initial
dwinter
parents:
diff changeset
326 # check if properties need to be removed
957bcf42f206 initial
dwinter
parents:
diff changeset
327 deltoken = "del__"
957bcf42f206 initial
dwinter
parents:
diff changeset
328 # e.g. "del__property_1"
957bcf42f206 initial
dwinter
parents:
diff changeset
329 relevant_keys = [int(x.split('_')[-1]) for x in formdata.keys() if x.find(deltoken) == 0 and formdata[x] == "on"]
957bcf42f206 initial
dwinter
parents:
diff changeset
330 relevant_keys.sort()
957bcf42f206 initial
dwinter
parents:
diff changeset
331 relevant_keys.reverse()
957bcf42f206 initial
dwinter
parents:
diff changeset
332 for n in relevant_keys:
957bcf42f206 initial
dwinter
parents:
diff changeset
333 del self.Properties[n]
957bcf42f206 initial
dwinter
parents:
diff changeset
334
957bcf42f206 initial
dwinter
parents:
diff changeset
335 # sort
957bcf42f206 initial
dwinter
parents:
diff changeset
336 self.Properties.sort(lambda a, b: cmp(int(a[4]), int(b[4])))
957bcf42f206 initial
dwinter
parents:
diff changeset
337
957bcf42f206 initial
dwinter
parents:
diff changeset
338 # add new properties (empty)
957bcf42f206 initial
dwinter
parents:
diff changeset
339 try:
957bcf42f206 initial
dwinter
parents:
diff changeset
340 add_new = int(formdata['add_new'])
957bcf42f206 initial
dwinter
parents:
diff changeset
341
957bcf42f206 initial
dwinter
parents:
diff changeset
342 for x in range(add_new):
957bcf42f206 initial
dwinter
parents:
diff changeset
343 self.addProperty()
957bcf42f206 initial
dwinter
parents:
diff changeset
344 except:
957bcf42f206 initial
dwinter
parents:
diff changeset
345 pass
957bcf42f206 initial
dwinter
parents:
diff changeset
346
957bcf42f206 initial
dwinter
parents:
diff changeset
347 # force update of the Properties list in the ZopeDB
957bcf42f206 initial
dwinter
parents:
diff changeset
348 self._p_changed = 1
957bcf42f206 initial
dwinter
parents:
diff changeset
349
957bcf42f206 initial
dwinter
parents:
diff changeset
350 REQUEST.RESPONSE.redirect('manage_editMPIWGFMManagerForm?rnd=%s' % ''.join(random.sample("abcdefuvwxyz", 8)))
957bcf42f206 initial
dwinter
parents:
diff changeset
351
957bcf42f206 initial
dwinter
parents:
diff changeset
352 manage_editMPIWGFMManagerForm = PageTemplateFile('zpt/editMPIWGManager.pt', globals())
957bcf42f206 initial
dwinter
parents:
diff changeset
353
957bcf42f206 initial
dwinter
parents:
diff changeset
354 def manage_editMPIWGFMConnection(self,url,username,password,REQUEST=None):
957bcf42f206 initial
dwinter
parents:
diff changeset
355 """change the parameters for connections"""
957bcf42f206 initial
dwinter
parents:
diff changeset
356 self.url=url
957bcf42f206 initial
dwinter
parents:
diff changeset
357 self.username=username
957bcf42f206 initial
dwinter
parents:
diff changeset
358 self.password=password
957bcf42f206 initial
dwinter
parents:
diff changeset
359
957bcf42f206 initial
dwinter
parents:
diff changeset
360 REQUEST.RESPONSE.redirect(' manage_editMPIWGFMConnectionForm?rnd=%s' % ''.join(random.sample("abcdefuvwxyz", 8)))
957bcf42f206 initial
dwinter
parents:
diff changeset
361
957bcf42f206 initial
dwinter
parents:
diff changeset
362 manage_editMPIWGFMConnectionForm = PageTemplateFile('zpt/editConnection.pt', globals())
957bcf42f206 initial
dwinter
parents:
diff changeset
363
957bcf42f206 initial
dwinter
parents:
diff changeset
364
957bcf42f206 initial
dwinter
parents:
diff changeset
365 def manage_addMPIWGFMManager(self, id, title, url, username=None,password=None, REQUEST=None):
957bcf42f206 initial
dwinter
parents:
diff changeset
366 """ create the new MPIWGManager """
957bcf42f206 initial
dwinter
parents:
diff changeset
367 newinst = MPIWGFMManager(id, title,url, username,password)
957bcf42f206 initial
dwinter
parents:
diff changeset
368 self._setObject(id, newinst)
957bcf42f206 initial
dwinter
parents:
diff changeset
369
957bcf42f206 initial
dwinter
parents:
diff changeset
370 REQUEST.RESPONSE.redirect('manage_main')
957bcf42f206 initial
dwinter
parents:
diff changeset
371
957bcf42f206 initial
dwinter
parents:
diff changeset
372 manage_addMPIWGFMManagerForm = PageTemplateFile('zpt/addMPIWGManager.pt', globals())