Repository :
http://git.fedorahosted.org/cgit/fedocal.git
On branch : master
---------------------------------------------------------------
commit 398eb0f71d790adb0f94d246864e023e89be28eb
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Sat Nov 24 00:26:35 2012 +0100
Fix the get_meetings function
Fix the calculation of the start_delta and stop_delta
Fix the case where we have meetings overlaping the day change line (especially when
playing with time-zone)
---------------------------------------------------------------
fedocal/fedocallib/__init__.py | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/fedocal/fedocallib/__init__.py b/fedocal/fedocallib/__init__.py
index d28023c..8b73c24 100644
--- a/fedocal/fedocallib/__init__.py
+++ b/fedocal/fedocallib/__init__.py
@@ -263,10 +263,9 @@ def get_meetings(session, calendar, year=None, month=None, day=None,
# pylint: disable=W0612
meetings[key] = [None for cnt2 in range(0, 7)]
for meeting in week.meetings:
-
start_delta = 0
if meeting.meeting_time_start.minute < 15:
- start_delta = meeting.meeting_time_start.minute - 30
+ start_delta = - meeting.meeting_time_start.minute
elif 15 <= meeting.meeting_time_start.minute <= 45:
start_delta = 30 - meeting.meeting_time_start.minute
elif meeting.meeting_time_start.minute > 45:
@@ -274,7 +273,7 @@ def get_meetings(session, calendar, year=None, month=None, day=None,
stop_delta = 0
if meeting.meeting_time_stop.minute < 15:
- stop_delta = meeting.meeting_time_stop.minute - 30
+ stop_delta = - meeting.meeting_time_stop.minute
elif 15 <= meeting.meeting_time_stop.minute <= 45:
stop_delta = 30 - meeting.meeting_time_stop.minute
elif meeting.meeting_time_stop.minute > 45:
@@ -285,19 +284,21 @@ def get_meetings(session, calendar, year=None, month=None,
day=None,
meeting.meeting_time_start.hour,
meeting.meeting_time_start.minute, 0) + timedelta(
minutes=start_delta)
+ startdt = convert_time(startdt, 'UTC', tzone)
+
stopdt = datetime(meeting.meeting_date.year,
meeting.meeting_date.month, meeting.meeting_date.day,
meeting.meeting_time_stop.hour,
meeting.meeting_time_stop.minute, 0) + timedelta(
minutes=stop_delta)
-
- startdt = convert_time(startdt, 'UTC', tzone)
stopdt = convert_time(stopdt, 'UTC', tzone)
+ if stopdt < startdt:
+ stopdt = stopdt + timedelta(days=1)
t_time = startdt
while t_time < stopdt:
- day = startdt.weekday()
+ day = t_time.weekday()
key = t_time.strftime(fmt)
if key in meetings:
if meetings[key][day]: