コード例 #1
0
    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': []}
            }
        )
コード例 #2
0
    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]))
コード例 #3
0
 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])
コード例 #4
0
 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])
コード例 #5
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
    
コード例 #6
0
 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)
コード例 #7
0
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
コード例 #8
0
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
コード例 #9
0
 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)
コード例 #10
0
 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': []},
     })
コード例 #11
0
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
コード例 #12
0
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
コード例 #13
0
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
コード例 #14
0
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
コード例 #15
0
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
コード例 #16
0
 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': []
             },
         })