Example #1
0
 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
Example #2
0
    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)
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
    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
Example #6
0
    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
Example #7
0
 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)