Repository :
http://git.fedorahosted.org/cgit/fedocal.git
On branch : master
---------------------------------------------------------------
commit b1fa4e7a20a855460df12f97e9d7ff2c7d1e591e
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Mon Dec 3 19:48:35 2012 +0100
Fix edition of single meeting in a recursion.
When we only edit one meeting in the recursion, we normally continue
the recursion "delta" days later, but we need to make sure the new
meeting can exists with regards to the availability of the agenda.
---------------------------------------------------------------
fedocal/fedocallib/__init__.py | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/fedocal/fedocallib/__init__.py b/fedocal/fedocallib/__init__.py
index d0bc7e8..f610f3a 100644
--- a/fedocal/fedocallib/__init__.py
+++ b/fedocal/fedocallib/__init__.py
@@ -729,16 +729,25 @@ def edit_meeting(session, meeting, calendarobj, fas_user,
# -> update new object
# -> copy meeting to new object w/ recursion and date = date + offset
+ remove_recursion = False
if recursion_frequency and meeting.recursion_frequency:
old_meeting = Meeting.copy(meeting)
old_meeting.recursion_ends = meeting_date - timedelta(days=1)
if old_meeting.recursion_ends > old_meeting.meeting_date:
old_meeting.save(session)
if not edit_all_meeting:
+ remove_recursion = True
new_meeting = Meeting.copy(meeting)
new_meeting.meeting_date = meeting.meeting_date + timedelta(
days=meeting.recursion_frequency)
- new_meeting.save(session)
+ free_time = agenda_is_free(session, calendarobj,
+ new_meeting.meeting_date,
+ new_meeting.meeting_time_start,
+ new_meeting.meeting_time_stop)
+
+ if not bool(calendarobj.calendar_multiple_meetings) and \
+ bool(free_time):
+ new_meeting.save(session)
meeting_time_start = convert_time(
@@ -796,7 +805,7 @@ def edit_meeting(session, meeting, calendarobj, fas_user,
meeting.reminder.delete(session)
meeting.reminder_id = None
- if not edit_all_meeting and meeting.recursion_frequency:
+ if remove_recursion:
meeting.recursion_frequency = None
meeting.recursion_ends = None