示例#1
0
def get_index(start_date, group_window, time):
    index = 0
    if 1 == group_window:
        delta = time - start_date
        index = delta.days
    if 2 == group_window:
        start_date = week_start(start_date)
        time = week_start(time)

        delta = time - start_date
        index = delta.days / 7
    elif 3 == group_window:
        start_date = month_start(start_date)
        time = month_start(time)

        index = (time.year - start_date.year) * 12 + (time.month - start_date.month)

    return index, time
示例#2
0
def window_range(anchor_date, group_window):
    if 1 == group_window:
        start_time = day_start(anchor_date)
    elif 2 == group_window:
        start_time = week_start(anchor_date)
        end_time = start_time + timedelta(days=7)
    elif 3 == group_window:
        start_time = month_start(anchor_date)
        end_time = start_time + MonthDelta(months=1)

    return start_time, end_time
示例#3
0
    def setUp(self):
        self.day1 = week_start(timezone.now() - timedelta(days=60))

        self.day2 = self.day1 + timedelta(days=1)
        self.day_next_week_1 = self.day1 + timedelta(days=7)
        self.day_next_week_2 = self.day2 + timedelta(days=7)
        self.day_next_month_1 = self.day1 + relativedelta(months=1)
        self.day_next_month_2 = self.day2 + relativedelta(months=1)

        UserSurvival.objects.create(imei='imei1', firsttime=self.day1, lasttime=self.day1)
        UserSurvival.objects.create(imei='imei2', firsttime=self.day1, lasttime=self.day2)
        UserSurvival.objects.create(imei='imei3', firsttime=self.day2, lasttime=self.day_next_month_2)
        UserSurvival.objects.create(imei='imei4', firsttime=self.day2, lasttime=self.day_next_week_2)
示例#4
0
    def test_get_survival_rate(self):
        result = get_survival_rate(self.day1, 2, 2)
        self.assertEqual(2, result['unit'])
        self.assertEqual(2, result['user_window'])
        self.assertEqual(week_start(self.day1), result['start_date'])
        self.assertEqual(4, result['total'])

        values = result['values']
        self.assertEqual(4, values[0]['y'])
        self.assertEqual(2, values[1]['y'])
        self.assertEqual(1, values[2]['y'])
        self.assertEqual(1, values[3]['y'])
        self.assertEqual(1, values[4]['y'])
        for x in range(5, 10):
            self.assertEqual(0, values[x]['y'])