def update_date_rec_meeting(meeting, action='last'): """ From a recursive meeting, returns a meeting which date corresponds either to that of the last recursion that occured, or the next recursion that will occur. """ if meeting.recursion_frequency and meeting.recursion_ends \ and is_date_in_future( meeting.recursion_ends, meeting.meeting_time_start): meetingobj = Meeting.copy(meeting) while meetingobj.meeting_date < date.today(): if meetingobj.recursion_ends < meetingobj.meeting_date + \ timedelta( days=meetingobj.recursion_frequency ): # pragma: no cover break meetingobj.meeting_date = meetingobj.meeting_date + \ timedelta(days=meetingobj.recursion_frequency) meetingobj.meeting_date_end = meetingobj.meeting_date_end + \ timedelta(days=meetingobj.recursion_frequency) meetingobj.meeting_manager_user = meeting.meeting_manager_user meeting = meetingobj if action == 'last': meeting.meeting_date = meeting.meeting_date - \ timedelta(days=meeting.recursion_frequency) meeting.meeting_date_end = meeting.meeting_date_end - \ timedelta(days=meeting.recursion_frequency) return meeting
def update_date_rec_meeting(meeting, action='last', date_limit=None): """ From a recursive meeting, returns a meeting which date corresponds either to that of the last recursion that occured, or the next recursion that will occur. """ if not date_limit: date_limit = date.today() if date_limit < meeting.meeting_date: date_limit = meeting.meeting_date if meeting.recursion_frequency and meeting.recursion_ends: meetingobj = Meeting.copy(meeting) while meetingobj.meeting_date < date_limit: if meetingobj.recursion_ends < meetingobj.meeting_date + \ timedelta( days=meetingobj.recursion_frequency ): # pragma: no cover break meetingobj.meeting_date = meetingobj.meeting_date + \ timedelta(days=meetingobj.recursion_frequency) meetingobj.meeting_date_end = meetingobj.meeting_date_end + \ timedelta(days=meetingobj.recursion_frequency) meetingobj.meeting_manager_user = meeting.meeting_manager_user if action == 'last': last_date = meetingobj.meeting_date - \ timedelta(days=meetingobj.recursion_frequency) if meeting.meeting_date < last_date: meetingobj.meeting_date = last_date meetingobj.meeting_date_end = meetingobj.meeting_date_end - \ timedelta(days=meetingobj.recursion_frequency) meeting = meetingobj return meeting
def update_date_rec_meeting(meeting, action='last', date_limit=None): """ From a recursive meeting, returns a meeting which date corresponds either to that of the last recursion that occured, or the next recursion that will occur. """ if not date_limit: date_limit = date.today() if date_limit < meeting.meeting_date: date_limit = meeting.meeting_date if meeting.recursion_frequency and meeting.recursion_ends: meetingobj = Meeting.copy(meeting) delta = timedelta(days=meetingobj.recursion_frequency) while meetingobj.meeting_date < date_limit: if meetingobj.recursion_ends < meetingobj.meeting_date + \ delta: # pragma: no cover break meetingobj.meeting_date = meetingobj.meeting_date + delta meetingobj.meeting_date_end = meetingobj.meeting_date_end + delta meetingobj.meeting_manager_user = meeting.meeting_manager_user if action == 'closest': last_date = meetingobj.meeting_date - delta delta_before = last_date - date_limit delta_after = meetingobj.meeting_date - date_limit if abs(delta_before) < abs(delta_after): action = 'last' if action == 'last': last_date = meetingobj.meeting_date - delta if meeting.meeting_date < last_date: meetingobj.meeting_date = last_date meetingobj.meeting_date_end = meetingobj.meeting_date_end - \ delta meeting = meetingobj return meeting
def update_date_rec_meeting(meeting, action='last', date_limit=None): """ From a recursive meeting, returns a meeting which date corresponds either to that of the last recursion that occured, or the next recursion that will occur. """ if not date_limit: date_limit = date.today() if date_limit < meeting.meeting_date: date_limit = meeting.meeting_date if meeting.recursion_frequency and meeting.recursion_ends \ and is_date_in_future( meeting.recursion_ends, meeting.meeting_time_start): meetingobj = Meeting.copy(meeting) while meetingobj.meeting_date < date_limit: if meetingobj.recursion_ends < meetingobj.meeting_date + \ timedelta( days=meetingobj.recursion_frequency ): # pragma: no cover break meetingobj.meeting_date = meetingobj.meeting_date + \ timedelta(days=meetingobj.recursion_frequency) meetingobj.meeting_date_end = meetingobj.meeting_date_end + \ timedelta(days=meetingobj.recursion_frequency) meetingobj.meeting_manager_user = meeting.meeting_manager_user if action == 'last': last_date = meetingobj.meeting_date - \ timedelta(days=meetingobj.recursion_frequency) if meeting.meeting_date < last_date: meetingobj.meeting_date = last_date meetingobj.meeting_date_end = meetingobj.meeting_date_end - \ timedelta(days=meetingobj.recursion_frequency) meeting = meetingobj return meeting
print "edit_meeting:", err flask.flash("Could not update this meeting.", "errors") return flask.render_template( "edit_meeting.html", meeting=meeting, calendar=calendarobj, form=form, tzone=tzone ) flask.flash("Meeting updated") return flask.redirect(flask.url_for("view_meeting", meeting_id=meeting_id)) else: if ( meeting.recursion_frequency and meeting.recursion_ends and fedocallib.is_date_in_future(meeting.recursion_ends, meeting.meeting_time_start) ): cnt = 0 meetingobj = Meeting.copy(meeting) while meetingobj.meeting_date < datetime.date.today(): if meetingobj.recursion_ends < meetingobj.meeting_date + datetime.timedelta( days=meetingobj.recursion_frequency * cnt ): break meetingobj = Meeting.copy(meeting) meetingobj.meeting_date = meetingobj.meeting_date + datetime.timedelta( days=meetingobj.recursion_frequency * cnt ) cnt = cnt + 1 meeting = meetingobj if not fedocallib.is_date_in_future(meeting.meeting_date, meeting.meeting_time_start): flask.flash("This meeting has already occured, you may not " "change it anymore", "warnings") return flask.redirect(flask.url_for("my_meetings")) form = forms.AddMeetingForm(meeting=meeting, tzone=get_timezone())