Commit 871bc6d65da41df2440448eaace8f31b72cca65b

Authored by Geoffrey PREUD'HOMME
1 parent e7eb5c3a

Affiche les évènements buggués dans le tableau 2

Showing 1 changed file with 18 additions and 18 deletions   Show diff stats
parse.py
... ... @@ -36,7 +36,7 @@ elif args.annee == 4:
36 36 else:
37 37 raise ValueError('Année inconnue : ' + annee)
38 38  
39   -DAYS_PER_WEEK = 6
  39 +DAYS_PER_WEEK = 5.5
40 40  
41 41 TABLE_1_DATE_X = 1
42 42 TABLE_1_FIRST_SLOT_X = 2
... ... @@ -159,7 +159,7 @@ class Event:
159 159 self.shortName = self.shortText
160 160 self.longName = self.longText
161 161  
162   - if self.longName:
  162 + if self.shortName:
163 163 self.active = True
164 164  
165 165 if self.date and isinstance(self.begSlot, int) and isinstance(self.endSlot, int):
... ... @@ -250,25 +250,24 @@ days = dict()
250 250 # Parsing table 1
251 251 for line in tables[0]:
252 252 try:
253   - day1date = datetime.datetime.strptime(line[TABLE_1_DATE_X], DATE_FORMAT)
  253 + date = datetime.datetime.strptime(line[TABLE_1_DATE_X], DATE_FORMAT)
254 254 except (ValueError, TypeError):
255 255 # This is not a date, no data to grab here
256 256 continue
257 257  
258   - for day in range(DAYS_PER_WEEK):
259   - date = day1date + datetime.timedelta(days=day)
  258 + for weekSlot in range(int(DAYS_PER_WEEK * len(SLOTS))):
  259 + daySlot = weekSlot % len(SLOTS)
  260 +
  261 + # New day
  262 + if daySlot == 0:
  263 + if weekSlot != 0:
  264 + date = date + datetime.timedelta(days=1)
260 265  
261   - if date not in days:
262   - days[date] = [Event() for s in range(len(SLOTS))]
  266 + if date not in days:
  267 + days[date] = [Event() for s in range(len(SLOTS))]
263 268  
264   - for slot in range(len(SLOTS)):
265   - try:
266   - cell = line[day * len(SLOTS) + slot + TABLE_1_FIRST_SLOT_X]
267   - except IndexError:
268   - # Out of the table: saturday afternoon
269   - break
270   - days[date][slot].feedShortText(cell)
271   - continue
  269 + cell = line[TABLE_1_FIRST_SLOT_X + weekSlot]
  270 + days[date][daySlot].feedShortText(cell)
272 271  
273 272 # Parsing table 2
274 273 for line in tables[1]:
... ... @@ -290,13 +289,15 @@ for day in days:
290 289 prevEvent = False
291 290 for slot in range(len(SLOTS)):
292 291 event = days[day][slot]
  292 + sameAsPrevious = False
293 293 if prevEvent:
294   - if prevEvent.longText == event.longText:
  294 + sameAsPrevious = event.longText == prevEvent.longText if prevEvent.longText else event.shortText == prevEvent.shortText
  295 + if sameAsPrevious:
295 296 prevEvent.feedEndSlot(slot)
296 297 else:
297 298 prevEvent.endFeed()
298 299 events.append(prevEvent)
299   - if not prevEvent or (prevEvent and prevEvent.longText != event.longText):
  300 + if not prevEvent or (prevEvent and not sameAsPrevious):
300 301 event.feedDate(day)
301 302 event.feedBegSlot(slot)
302 303 event.feedEndSlot(slot)
... ... @@ -313,7 +314,6 @@ cal.add('x-wr-calname', 'Polytech IMA ' + str(args.annee) + ' ' + args.edt)
313 314  
314 315 for event in events:
315 316 if event.active:
316   - print(event, file=sys.stderr)
317 317 cal.add_component(event.getEvent())
318 318  
319 319 # Writing calendar to file
... ...