def get_full_day_meetings(self): """ Retrieve all the full day meetings for this week. """ if self.calendar: self.full_day_meetings = Meeting.get_by_date( self.session, self.calendar, self.start_date, self.stop_date, full_day=True) meetings = Meeting.get_active_regular_meeting( self.session, self.calendar, self.start_date, self.stop_date, full_day=True) else: self.full_day_meetings = Meeting.get_by_date_at_location( self.session, self.location, self.start_date, self.stop_date, full_day=True) meetings = Meeting.get_active_regular_meeting_at_location( self.session, self.location, self.start_date, self.stop_date, full_day=True) for meeting in meetings: 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) # Expand the regular meetings so that they appear as meeting self.full_day_meetings = Meeting.expand_regular_meetings( self.full_day_meetings, end_date=self.stop_date, start_date=self.start_date) # Sort the meetings by date, time_start and name self.full_day_meetings.sort(key=operator.attrgetter( 'meeting_date', 'meeting_time_start', 'meeting_name'))
def get_full_day_meetings(self): """ Retrieve all the full day meetings for this week. """ if self.calendar: self.full_day_meetings = Meeting.get_by_date(self.session, self.calendar, self.start_date, self.stop_date, full_day=True) meetings = Meeting.get_active_regular_meeting(self.session, self.calendar, self.start_date, self.stop_date, full_day=True) else: self.full_day_meetings = Meeting.get_by_date_at_location( self.session, self.location, self.start_date, self.stop_date, full_day=True) meetings = Meeting.get_active_regular_meeting_at_location( self.session, self.location, self.start_date, self.stop_date, full_day=True) for meeting in meetings: 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) # Expand the regular meetings so that they appear as meeting self.full_day_meetings = Meeting.expand_regular_meetings( self.full_day_meetings, end_date=self.stop_date, start_date=self.start_date) # Sort the meetings by date, time_start and name self.full_day_meetings.sort(key=operator.attrgetter( 'meeting_date', 'meeting_time_start', 'meeting_name'))
def get_past_meeting_of_user( session, username, tzone='UTC', from_date=date.today()): """ Return all past meeting which specified username is among the managers. :arg session: the database session to use :arg username: the FAS user name that you would like to have the past meetings for. :kwarg tzone: the time-zone to which to convert the meetings. Defaults to 'UTC'. :kwarg from_date: the date from which the futur meetings should be retrieved. Defaults to today """ meetings_tmp = Meeting.expand_regular_meetings( Meeting.get_past_meeting_of_user(session, username, from_date), end_date=from_date) meetings = [] for meeting in meetings_tmp: meetings.append(convert_meeting_timezone( meeting, meeting.meeting_timezone, tzone)) meetings.sort(key=operator.attrgetter('meeting_date')) return meetings