From b98686c726303f55622c0d06a1e739456953d0f4 Mon Sep 17 00:00:00 2001 From: Nikolai Kristiansen Date: Mon, 10 Aug 2015 12:35:09 +0200 Subject: [PATCH] Adds event logging --- apps/kassa/admin.py | 8 +++++++- apps/kassa/migrations/0001_initial.py | 25 +++++++++++++++++++++++++ apps/kassa/models.py | 19 ++++++++++++++++++- apps/kassa/views.py | 18 ++++++++++++++++++ 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 apps/kassa/migrations/0001_initial.py diff --git a/apps/kassa/admin.py b/apps/kassa/admin.py index 8c38f3f..986d4ee 100644 --- a/apps/kassa/admin.py +++ b/apps/kassa/admin.py @@ -1,3 +1,9 @@ +from apps.kassa.models import KassaEvent from django.contrib import admin -# Register your models here. + +class KassaEventAdmin(admin.ModelAdmin): + list_display = ['id', 'user_phone_number', 'user_inside_id', 'event', 'created'] + list_filter = ['event'] + +admin.site.register(KassaEvent, KassaEventAdmin) diff --git a/apps/kassa/migrations/0001_initial.py b/apps/kassa/migrations/0001_initial.py new file mode 100644 index 0000000..91d3f0d --- /dev/null +++ b/apps/kassa/migrations/0001_initial.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='KassaEvent', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('event', models.TextField(max_length=255, choices=[('new_card_membership', 'Added new card membership (no user yet)'), ('update_card', 'Updated user card number'), ('add_or_renew', 'Added or renewed membership user membership')])), + ('card_number', models.IntegerField(null=True, blank=True)), + ('user_inside_id', models.IntegerField(null=True, blank=True)), + ('user_phone_number', models.TextField(max_length=100, null=True, blank=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ], + ), + ] diff --git a/apps/kassa/models.py b/apps/kassa/models.py index 71a8362..48a2752 100644 --- a/apps/kassa/models.py +++ b/apps/kassa/models.py @@ -1,3 +1,20 @@ +from __future__ import unicode_literals from django.db import models +from django.utils.translation import ugettext_lazy as _ -# Create your models here. + +class KassaEvent(models.Model): + NEW_CARD_MEMBERSHIP = 'new_card_membership' + UPDATE_CARD = 'update_card' + ADD_OR_RENEW = 'add_or_renew' + EVENT_CHOICES = ( + (NEW_CARD_MEMBERSHIP, _('Added new card membership (no user yet)')), + (UPDATE_CARD, _('Updated user card number')), + (ADD_OR_RENEW, _('Added or renewed membership user membership')), + ) + event = models.TextField(max_length=255, choices=EVENT_CHOICES) + card_number = models.IntegerField(null=True, blank=True) + user_inside_id = models.IntegerField(null=True, blank=True) + user_phone_number = models.TextField(max_length=100, null=True, blank=True) + created = models.DateTimeField(auto_now_add=True) + updated = models.DateTimeField(auto_now=True) diff --git a/apps/kassa/views.py b/apps/kassa/views.py index 5c6209c..c377c6b 100644 --- a/apps/kassa/views.py +++ b/apps/kassa/views.py @@ -1,6 +1,7 @@ # coding: utf-8 from __future__ import unicode_literals import json +from apps.kassa.models import KassaEvent from django.conf import settings from django.contrib.auth.decorators import login_required @@ -90,6 +91,7 @@ def register_card_and_membership(request): post_data = json.loads(request.body) action = post_data.get('action') # new_card_membership, update_card, add_or_renew + # TODO: multiple actions (to allow renewal only) user_id = post_data.get('user_id') response = inside_update_card( @@ -101,6 +103,13 @@ def register_card_and_membership(request): if response.status_code != 200: return JsonResponse(response.json(), status=response.status_code) + KassaEvent.objects.create( + event=KassaEvent.UPDATE_CARD, + user_inside_id=user_id, + user_phone_number=post_data.get('phone_number'), + card_number=post_data.get('card_number') + ) + # card_response = response.json() # Send activation notification (link) to user by SMS @@ -108,10 +117,19 @@ def register_card_and_membership(request): card = response.json()['card'] # FIXME: could be async tekstmelding_new_membership_card(card_number=card['card_number'], phone_number=card['owner_phone_number']) + KassaEvent.objects.create( + event=KassaEvent.NEW_CARD_MEMBERSHIP, + card_number=card['card_number'], + user_phone_number=card['owner_phone_number'] + ) # Add initial or renew membership elif action == 'add_or_renew': response = inside_update_membership(user_id, post_data.get('purchased')) + KassaEvent.objects.create( + event=KassaEvent.ADD_OR_RENEW, + user_inside_id=user_id + ) return JsonResponse(response.json(), status=response.status_code)