From d077a80c8c4c769e16438fe459e708287268a3c8 Mon Sep 17 00:00:00 2001 From: Nikolai R Kristiansen Date: Fri, 23 Sep 2016 00:48:11 +0200 Subject: [PATCH] stats: filter membership sales by date --- apps/kassa/tests.py | 10 +++++++++- apps/kassa/views.py | 25 ++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/apps/kassa/tests.py b/apps/kassa/tests.py index 7ce503c..5b39e3b 100644 --- a/apps/kassa/tests.py +++ b/apps/kassa/tests.py @@ -1,3 +1,11 @@ +from django.core.urlresolvers import reverse from django.test import TestCase -# Create your tests here. + +class TestStats(TestCase): + def test_start_param(self): + data = { + 'start': '2016-08-01' + } + res = self.client.get(reverse('stats-card-sales'), data) + self.assertEqual(res.status_code, 200) diff --git a/apps/kassa/views.py b/apps/kassa/views.py index 39d5f6d..e200af6 100644 --- a/apps/kassa/views.py +++ b/apps/kassa/views.py @@ -1,17 +1,16 @@ # coding: utf-8 -from itertools import groupby -import json -from django.utils import timezone -from apps.kassa.models import KassaEvent - from django.conf import settings from django.contrib.auth.decorators import login_required from django.http import JsonResponse from django.shortcuts import render +from django.utils import timezone +from itertools import groupby +import json +import logging import phonenumbers import requests -import logging +from apps.kassa.models import KassaEvent from apps.kassa.forms import AddCardForm, SearchUserForm from apps.kassa.utils import tekstmelding_new_membership_card, inside_update_card, inside_get_card, \ inside_update_membership, format_phone_number, is_autumn @@ -173,10 +172,18 @@ def renew_membership(request): def stats_card_sales(request): sale_events = [KassaEvent.ADD_OR_RENEW, KassaEvent.NEW_CARD_MEMBERSHIP, KassaEvent.RENEW_ONLY] + start = request.GET.get('start') + if start: + try: + start_date = timezone.datetime.strptime(start, '%Y-%m-%d') + except ValueError: + logger.info('Invalid start date in param start: \'%s\'', start) + return JsonResponse({'error': 'Invalid start date in param start: \'{}\''.format(start)}) + else: + start_date = timezone.datetime(year=2015, month=8, day=1) - # TODO filter by start HTTP param - start_date = timezone.datetime(year=2015, month=8, day=1) - start_date = timezone.make_aware(start_date, timezone.get_current_timezone()) + if not timezone.is_aware(start_date): + start_date = timezone.make_aware(start_date, timezone.get_current_timezone()) events = KassaEvent.objects.filter(event__in=sale_events, created__gte=start_date).values_list('created') grouped = []