Beispiel #1
0
    def _compute_time_in_period(self, time_type, sessions_by_agent):
        results = {}

        for agent, sessions in sessions_by_agent.iteritems():
            for time_start, time_end in sessions:
                if not time_end:
                    time_end = self.end
                touched_periods = time_utils.get_period_start_for_time_range(
                    self.possible_intervals, time_start, time_end)

                for period_start in touched_periods:
                    if period_start not in results:
                        results[period_start] = {}
                    period_end = period_start + self.interval_size
                    end_in_interval = min(time_end, period_end)
                    start_in_interval = max(time_start, period_start)
                    delta = end_in_interval - start_in_interval
                    self._add_time_to_agent_in_period(
                        results[period_start], agent, time_type, delta)

        return results
Beispiel #2
0
    def test_get_period_start_for_time_range(self):
        time_list = [
            datetime(2012, 1, 1, 1),
            datetime(2012, 1, 1, 2),
            datetime(2012, 1, 1, 3),
            datetime(2012, 1, 1, 4),
            datetime(2012, 1, 1, 5),
        ]

        start = datetime(2012, 1, 1, 2, 0, 0)
        end = datetime(2012, 1, 1, 5, 0)

        result = time_utils.get_period_start_for_time_range(
            time_list, start, end)

        expected = [
            datetime(2012, 1, 1, 2),
            datetime(2012, 1, 1, 3),
            datetime(2012, 1, 1, 4),
        ]

        self.assertEqual(result, expected)
Beispiel #3
0
    def test_get_period_start_for_time_range(self):
        time_list = [
            datetime(2012, 1, 1, 1),
            datetime(2012, 1, 1, 2),
            datetime(2012, 1, 1, 3),
            datetime(2012, 1, 1, 4),
            datetime(2012, 1, 1, 5),
        ]

        start = datetime(2012, 1, 1, 2, 0, 0)
        end = datetime(2012, 1, 1, 5, 0)

        result = time_utils.get_period_start_for_time_range(
            time_list, start, end)

        expected = [
            datetime(2012, 1, 1, 2),
            datetime(2012, 1, 1, 3),
            datetime(2012, 1, 1, 4),
        ]

        self.assertEqual(result, expected)