def get_most_used_room_week(self, query, week_start, week_end): # noqa: E501 """ Get analytics for most used room per week :params - calendar_id - week_start, week_end(Time range) """ week_start = CommonAnalytics.convert_date(self, week_start) week_end = CommonAnalytics.convert_date(self, week_end) rooms_available = CommonAnalytics.get_calendar_id_name(self, query) res = [] number_of_most_events = 0 for room in rooms_available: calendar_events = CommonAnalytics.get_all_events_in_a_room( self, room['calendar_id'], week_start, week_end) output = [] if not calendar_events: output.append({'RoomName': room['name'], 'has_events': False}) number_of_most_events = 0 else: for event in calendar_events: event_details = CommonAnalytics.get_event_details( self, event, room['calendar_id']) output.append(event_details) if len(output) > number_of_most_events: number_of_most_events = len(output) res.append(output) analytics = CommonAnalytics.get_room_statistics( self, number_of_most_events, res) return analytics
def get_monthly_rooms_events(self, query, month, year): """ Get event stats for all rooms in a specified month :params - month, year """ date = month + ' 1 ' + str(year) startdate = CommonAnalytics.convert_date(self, date) date_after_month = ( datetime.strptime(date, '%b %d %Y') + relativedelta(months=1)).isoformat() + 'Z' # noqa: E501 rooms_available = CommonAnalytics.get_calendar_id_name(self, query) room_events_count = [] events_in_all_rooms = [] for room in rooms_available: calendar_events = CommonAnalytics.get_all_events_in_a_room( self, room['calendar_id'], startdate, date_after_month) output = [] if not calendar_events: output.append({'RoomName': room['name'], 'has_events': False}) room_with_no_events = 0 room_events_count.append(room_with_no_events) else: for event in calendar_events: if event.get('attendees'): event_details = CommonAnalytics.get_event_details( self, event, room['calendar_id']) output.append(event_details) room_events_count.append(len(output)) events_in_all_rooms.append(output) return dict(events_in_all_rooms=events_in_all_rooms, room_events_count=room_events_count)
def get_events_number_meetings_room_analytics(self, query, start_date, end_date): # noqa: E501 """ Get events in rooms and number of meetings per room :params - query - start_date, end_date(Time range) """ start_date, end_date = CommonAnalytics.convert_dates( self, start_date, end_date) rooms_available = CommonAnalytics.get_room_details( self, query) result, number_of_meetings = [], [] for room in rooms_available: all_events = CommonAnalytics.get_all_events_in_a_room( self, room['room_id'], start_date, end_date) output = [] if not all_events: output.append({'roomName': room['name']}) number_of_meetings.append(0) else: for event in all_events: if event['participants']: event_details = CommonAnalytics.get_event_details( self, query, event, room['room_id']) output.append(event_details) number_of_meetings.append(len(output)) result.append(output) return (result, number_of_meetings)
def get_events_number_meetings_room_analytics(self, query, start_date, end_date): # noqa: E501 """ Get events in rooms and number of meetings per room :params - query - start_date, end_date(Time range) """ start_date, end_date = CommonAnalytics.convert_dates( self, start_date, end_date) rooms_available = CommonAnalytics.get_calendar_id_name( self, query) result, number_of_meetings = [], [] for room in rooms_available: calendar_events = CommonAnalytics.get_all_events_in_a_room( self, room['calendar_id'], start_date, end_date) output = [] if not calendar_events: output.append({'RoomName': room['name'], 'has_events': False}) number_of_meetings.append(0) else: for event in calendar_events: if event.get('attendees'): event_details = CommonAnalytics.get_event_details(self, event, room['calendar_id']) # noqa: E501 output.append(event_details) number_of_meetings.append(len(output)) result.append(output) return (result, number_of_meetings)
def retrieve_cancellations_and_checkins_for_room(self, calendar_id, start_date, day_after_end_date, checkins, cancellations, events_list): # noqa """ Retrieve cancellations and checkins for a room :params - calendar_id, start_date, day_after_end_date, checkins,cancellations, output """ calendar_events = CommonAnalytics.get_all_events_in_a_room( self, calendar_id, start_date, day_after_end_date) if calendar_events: for event in calendar_events: if event.get('attendees'): event_details = CommonAnalytics.get_event_details( self, event, calendar_id) events_list.append(event_details) room_id = RoomModel.query.filter_by( calendar_id=calendar_id, ).first().id # noqa checkins += (Events.query.filter( Events.room_id == room_id, Events.checked_in == True, Events.start_time >= start_date, Events.end_time < day_after_end_date)).count() # noqa cancellations += (Events.query.filter( Events.room_id == room_id, Events.cancelled == True, Events.start_time >= start_date, Events.end_time < day_after_end_date)).count() # noqa return checkins, cancellations, events_list
def get_least_used_rooms(self, rooms_available, time_start, time_end): res = [] number_of_least_events = float('inf') for room in rooms_available: calendar_events = CommonAnalytics.get_all_events_in_a_room( self, room['calendar_id'], time_start, time_end) output = [] if not calendar_events: output.append({'RoomName': room['name'], 'has_events': False}) number_of_least_events = 0 for event in calendar_events: if event.get('attendees'): event_details = CommonAnalytics.get_event_details( self, event, room['calendar_id']) # noqa: E501 output.append(event_details) if len(output) < number_of_least_events: number_of_least_events = len(output) res.append(output) analytics = CommonAnalytics.get_room_statistics( self, number_of_least_events, res) return analytics
def get_dataframe(self, query, rooms_available, start_date, end_date): """ Get all rooms data in a dataframe :params - rooms_available - start_date, end_date """ all_rooms_data_df = [] for room in rooms_available: all_events = CommonAnalytics.get_all_events_in_a_room( self, room['calendar_id'], start_date, end_date) if not all_events: all_rooms_data_df.append({ 'roomName': room['name'], 'minutes': 0, 'summary': None, 'attendees': 0 }) for event in all_events: if event.get('attendees'): event_details = CommonAnalytics.get_event_details( self, query, event, room['calendar_id']) event_details['attendees'] = len(event.get('attendees')) all_rooms_data_df.append(event_details) return pd.DataFrame(all_rooms_data_df)