def test_group_by_weekday_start_end(self): """ Test of group_by_weekday_start_end """ self.assertDictEqual( utils.group_by_weekday_start_end(utils.get_data()[10]), { 0: {'start': [], 'end': []}, 1: {'start': [34745], 'end': [64792]}, 2: {'start': [33592], 'end': [58057]}, 3: {'start': [38926], 'end': [62631]}, 4: {'start': [], 'end': []}, 5: {'start': [], 'end': []}, 6: {'start': [], 'end': []} } ) self.assertDictEqual( utils.group_by_weekday_start_end(utils.get_data()[11]), { 0: {'start': [33134], 'end': [57257]}, 1: {'start': [33590], 'end': [50154]}, 2: {'start': [33206], 'end': [58527]}, 3: {'start': [37116, 34088], 'end': [60085, 57087]}, 4: {'start': [47816], 'end': [54242]}, 5: {'start': [], 'end': []}, 6: {'start': [], 'end': []} } )
def test_group_by_weekday_start_end(self): """ Test grouping presences by weekday with start and end time. """ data = utils.get_data() result = [ {}, { 'start': [34745], 'end': [64792] }, { 'start': [33592], 'end': [58057] }, { 'start': [38926], 'end': [62631] }, {}, {}, {}, ] self.assertEqual(result, utils.group_by_weekday_start_end(data[10])) result = [ { 'start': [33134], 'end': [57257] }, { 'start': [33590], 'end': [50154] }, { 'start': [33206], 'end': [58527] }, { 'start': [37116, 34088], 'end': [60085, 57087] }, { 'start': [47816], 'end': [54242] }, {}, {}, ] self.assertEqual(result, utils.group_by_weekday_start_end(data[11]))
def test_group_by_weekday_start_end(self): """ Test group by weekdat start end """ data = utils.get_data() result_start, result_stop = group_by_weekday_start_end(data[11]) self.assertEqual([33134], result_start[0]) self.assertEqual([57257], result_stop[0]) self.assertEqual([37116, 34088], result_start[3]) self.assertEqual([60085, 57087], result_stop[3])
def test_group_by_weekday_start_end(self): """ Test groups presence entries by weekday. """ data = utils.get_data() result = utils.group_by_weekday_start_end(data[10]) self.assertIsInstance(result, dict) self.assertEqual(result.keys(), range(7)) self.assertEqual(len(result[0]), 2) self.assertEqual(result[3], [38926.0, 62631.0]) self.assertEqual(result[6], [0, 0])
def presence_start_end_api_view(user_id): """ Returns mean office entry and leave hour, grouped by weekdays. """ data = get_data() if user_id not in data: log.debug('User %s not found!', user_id) return [] weekdays = group_by_weekday_start_end(data[user_id]) result = [(calendar.day_abbr[weekday], interval['start'], interval['end']) for weekday, interval in weekdays.items()] return result
def test_group_by_weekday_start_end(self): """ Test grouping start and end presences by weekday. """ data = utils.get_data() weekdays = utils.group_by_weekday_start_end(data[10]) expected_output = { 0: {'start': [], 'end': []}, 1: {'start': [34745], 'end': [64792]}, 2: {'start': [33592], 'end': [58057]}, 3: {'start': [38926], 'end': [62631]}, 4: {'start': [], 'end': []}, 5: {'start': [], 'end': []}, 6: {'start': [], 'end': []}, } self.assertEqual(weekdays, expected_output)
def presence_start_end_view(user_id): """ Returns mean start and end hours grouped by weekday. """ data = get_data() if user_id not in data: log.debug('User %s not found!', user_id) return [] result_start, result_stop = group_by_weekday_start_end(data[user_id]) result = [] for i in range(7): result.append(( calendar.day_abbr[i], mean(result_start[i]), mean(result_stop[i]))) return result
def presence_start_end_view(user_id=None): """ Returns mean presence time of given user grouped by weekday. """ data = get_data() if not user_id: raise abort(400) if user_id not in data: log.debug('User %s not found!', user_id) return [] weekdays = group_by_weekday_start_end(data[user_id]) result = [(calendar.day_abbr[weekday], value[0], value[1]) for weekday, value in weekdays.items()] return result
def test_group_by_start_end(self): """ Test grouping by mean arrival/leave hours. """ data = utils.get_data() test = { 0: {'start': 0, 'end': 0}, 1: {'start': 34745, 'end': 64792}, 2: {'start': 33592, 'end': 58057}, 3: {'start': 38926, 'end': 62631}, 4: {'start': 0, 'end': 0}, 5: {'start': 0, 'end': 0}, 6: {'start': 0, 'end': 0}, } grouped_data = utils.group_by_weekday_start_end(data[10]) self.assertDictEqual(grouped_data, test)
def test_group_start_end_weekday(self): """ Test weekday grouping start end """ data = utils.get_data() weekdays = utils.group_by_weekday_start_end(data[11]) self.assertItemsEqual(weekdays.keys(), range(7)) self.assertSequenceEqual(weekdays, { 0: {'starts': [33134], 'ends': [57257]}, 1: {'starts': [33590], 'ends': [50154]}, 2: {'starts': [33206], 'ends': [58527]}, 3: {'starts': [37116, 34088], 'ends': [60085, 57087]}, 4: {'starts': [47816], 'ends': [54242]}, 5: {'starts': [], 'ends': []}, 6: {'starts': [], 'ends': []}, })
def presence_start_end_view(user_id=None): """ Returns start and end time of given user grouped by weekday. """ data = get_data() if user_id not in data: log.debug('User %s not found!', user_id) return [] weekdays = group_by_weekday_start_end(data[user_id]) result = [( calendar.day_abbr[weekday], mean(mean_per_day['start']), mean(mean_per_day['end']), ) for weekday, mean_per_day in weekdays.items()] return result
def presence_start_end_view(user_id): """ Returns mean start time and mean end time for given user grouped by weekday. """ data = get_data() if user_id not in data: log.debug('User %s not found!', user_id) abort(404) weekdays = group_by_weekday_start_end(data[user_id]) result = [( calendar.day_abbr[weekday], mean(time.get('start', [])), mean(time.get('end', [])), ) for weekday, time in enumerate(weekdays)] return result
def mean_start_end_view(user_id): """ Returns mean start/end presence time of given user grouped by weekday. """ data = utils.get_data() if user_id not in data: log.debug('User %s not found!', user_id) abort(404) weekdays = utils.group_by_weekday_start_end(data[user_id]) result = [ ( calendar.day_abbr[weekday], utils.mean_from_list(hours, 0), utils.mean_from_list(hours, 1), ) for weekday, hours in enumerate(weekdays) ] return result
def presence_start_end_view(user_id=None): """ Returns start and end time of given user grouped by weekday. """ data = get_data() if user_id not in data: log.debug('User %s not found!', user_id) return [] weekdays = group_by_weekday_start_end(data[user_id]) result = [( calendar.day_abbr[weekday], mean(intervals['starts']), mean(intervals['ends']), ) for weekday, intervals in weekdays.items() ] return result
def presence_start_end_view(user_id): """ Returns mean start and end presence values. """ data = utils.get_data() if user_id not in data: log.debug('User %s not found!', user_id) return [] weekdays = utils.group_by_weekday_start_end(data[user_id]) result = [ ( calendar.day_abbr[weekday], utils.mean(sec['start']), utils.mean(sec['end']), ) for weekday, sec in weekdays.items() ] return result
def test_group_start_end_weekday(self): """ Test weekday grouping start end """ data = utils.get_data() weekdays = utils.group_by_weekday_start_end(data[11]) self.assertItemsEqual(weekdays.keys(), range(7)) self.assertSequenceEqual( weekdays, { 0: { 'start': [33134], 'end': [57257] }, 1: { 'start': [33590], 'end': [50154] }, 2: { 'start': [33206], 'end': [58527] }, 3: { 'start': [37116, 34088], 'end': [60085, 57087] }, 4: { 'start': [47816], 'end': [54242] }, 5: { 'start': [], 'end': [] }, 6: { 'start': [], 'end': [] }, })