def get_meetings(self): """ Retrieves the list of this week meeting from the database. """ self.meetings = Meeting.get_by_date(self.session, self.calendar, self.start_date, self.stop_date) self.meetings.extend( Meeting.get_by_date(self.session, self.calendar, self.start_date, self.stop_date, full_day=True) ) for meeting in Meeting.get_active_regular_meeting(self.session, self.calendar, self.start_date, self.stop_date): for delta in range(0, 7): day = self.start_date + timedelta(days=delta) if ((meeting.meeting_date - day).days % meeting.recursion_frequency) == 0: if meeting not in self.meetings: self.meetings.append(meeting)
def get_full_day_meetings(self): """ Retrieve all the full day meetings of this week. """ self.full_day_meetings = Meeting.get_by_date( self.session, self.calendar, self.start_date, self.stop_date, full_day=True ) for meeting in Meeting.get_active_regular_meeting( self.session, self.calendar, self.start_date, self.stop_date, full_day=True ): for delta in range(0, 7): day = self.start_date + timedelta(days=delta) if ((meeting.meeting_date - day).days % meeting.recursion_frequency) == 0: if meeting not in self.full_day_meetings: self.full_day_meetings.append(meeting)
def get_by_date(session, calendarobj, start_date, end_date, tzone='UTC'): """ Returns all the meetings in a given time period. Recursive meetings are expanded as if each was a single meeting. :arg session: the database session to use :arg calendarobj: the calendar (object) of interest. :arg start_date: a Date object representing the beginning of the period :arg start_date: a Date object representing the ending of the period :kwarg tzone: the timezone in which the meetings should be displayed defaults to UTC. """ meetings_utc = Meeting.get_by_date(session, calendarobj, start_date, end_date, no_recursive=True) meetings_utc.extend(Meeting.get_regular_meeting_by_date(session, calendarobj, start_date, end_date)) meetings = [] for meeting in list(set(meetings_utc)): meetings.append(convert_meeting_timezone( meeting, 'UTC', tzone)) meetings.sort(key=operator.attrgetter('meeting_date')) return meetings
def get_meetings(self): """ Retrieves the list of this week's meeting from the database. """ self.meetings = Meeting.get_by_date( self.session, self.calendar, self.start_date, self.stop_date) for meeting in Meeting.get_active_regular_meeting( self.session, self.calendar, self.start_date, self.stop_date): for delta in range(0, 7): day = self.start_date + timedelta(days=delta) if ((meeting.meeting_date - day).days % meeting.recursion_frequency) == 0: if meeting not in self.meetings: self.meetings.append(meeting) # Expand the regular meetings so that they appear as meeting self.meetings = Meeting.expand_regular_meetings( self.meetings, end_date=self.stop_date, start_date=self.start_date) # Sort the meetings by date, time_start and name self.meetings.sort(key=operator.attrgetter( 'meeting_date', 'meeting_time_start', 'meeting_name'))