New log event for SMS purchased memberships

This commit is contained in:
nikolark committed 2015-08-12 15:33:22 +02:00
1 parent 488ec8916b
commit 96d5214151
6 files changed
+71 -20

No files matched your search

@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('kassa', '0002_auto_20150810_1327'),
]
operations = [
migrations.AlterField(
model_name='kassaevent',
name='event',
field=models.CharField(max_length=255, choices=[('new_card_membership', 'Added new card membership (no user yet)'), ('sms_card_notify', 'Notified phone number about activation'), ('update_card', 'Updated user card number'), ('add_or_renew', 'Added or renewed membership user membership')]),
),
]
+2
View File
@@ -5,10 +5,12 @@ from django.utils.translation import ugettext_lazy as _
class KassaEvent(models.Model):
NEW_CARD_MEMBERSHIP = 'new_card_membership'
SMS_CARD_NOTIFY = 'sms_card_notify'
UPDATE_CARD = 'update_card'
ADD_OR_RENEW = 'add_or_renew'
EVENT_CHOICES = (
(NEW_CARD_MEMBERSHIP, _('Added new card membership (no user yet)')),
(SMS_CARD_NOTIFY, _('Notified phone number about activation')),
(UPDATE_CARD, _('Updated user card number')),
(ADD_OR_RENEW, _('Added or renewed membership user membership')),
)
+1 -1
View File
@@ -42,7 +42,7 @@ def inside_update_card(card_number, user_id, phone_number, action):
'card_number': card_number,
'user_id': user_id,
'phone_number': phone_number,
'action': action # new_card_membership, update_card, add_or_renew
'action': action # new_card_membership, update_card, add_or_renew, sms_card_notify
}
return requests.post(
url,
+9 -5
View File
@@ -95,7 +95,7 @@ def register_card_and_membership(request):
return JsonResponse({'error': 'Only method POST supported'})
post_data = json.loads(request.body)
action = post_data.get('action') # new_card_membership, update_card, add_or_renew
action = post_data.get('action') # new_card_membership, update_card, add_or_renew, sms_card_notify
# TODO: multiple actions (to allow renewal only)
user_id = post_data.get('user_id')
card_number = post_data.get('card_number')
@@ -121,15 +121,19 @@ def register_card_and_membership(request):
KassaEvent.objects.create(**event_data)
# card_response = response.json()
card_update_response = response.json()
# Send activation notification (link) to user by SMS
if action == 'new_card_membership':
card = response.json()['card']
if action == 'new_card_membership' or action == 'sms_card_notify':
card = card_update_response['card']
event = KassaEvent.NEW_CARD_MEMBERSHIP
if action == 'sms_card_notify':
event = KassaEvent.SMS_CARD_NOTIFY
# 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,
event=event,
card_number=card['card_number'],
user_phone_number=card['owner_phone_number']
)
+20 -7
View File
@@ -138,6 +138,8 @@ function resetCardForm(reset_native) {
selectedUser = null;
_dom.userIdField.val('').trigger('change');
pendingSMSMembership = null;
/* Disable submit button */
_dom.registerSubmitButton.prop('disabled', true);
}
@@ -206,6 +208,7 @@ function getFormData(formElement) {
var _dom;
var users;
var selectedUser;
var pendingSMSMembership;
var cardForm = {
fields: {
cardNumber: false,
@@ -255,6 +258,7 @@ $(document).ready(function(){
set_selected_user(null, true);
set_field_state(_dom.phoneNumberField, 'error', data.error);
cardForm.fields.phoneNumber = false;
pendingSMSMembership = null;
update_submit_button();
return;
}
@@ -264,6 +268,7 @@ $(document).ready(function(){
var msg = 'Phone number is already tied to card '+ card.card_number + ' and is valid until '+ card.expires +'.';
set_field_state(_dom.phoneNumberField, 'error', msg);
cardForm.fields.phoneNumber = false;
pendingSMSMembership = null;
update_submit_button();
return;
}
@@ -277,12 +282,14 @@ $(document).ready(function(){
/* Existing user */
_user = inside.users[0];
_success_msg = 'Phone number belongs to existing user.';
pendingSMSMembership = null;
} else if(tekstmelding.result !== null) {
/* Pending SMS membership (not activated yet) */
_success_msg = 'Phone number has valid membership (paid via SMS). OK to give out card.';
// TODO store this in form and use in confirmation message.
pendingSMSMembership = tekstmelding.result;
} else {
/* Valid phone number with no existing user, card membership or pending SMS membership */
pendingSMSMembership = null;
}
set_field_state(_dom.phoneNumberField, 'success', _success_msg);
@@ -400,9 +407,11 @@ $(document).ready(function(){
/* Register type */
// FIXME: get from form
// action: 'new_card_membership', 'update_card', 'add_or_renew'
if(selectedUser === null) {
// action: 'new_card_membership', 'update_card', 'add_or_renew', 'sms_card_notify'
if(selectedUser === null && pendingSMSMembership === null) {
payload.action = 'new_card_membership';
} else if(selectedUser === null && pendingSMSMembership !== null) {
payload.action = 'sms_card_notify';
} else {
if(selectedUser.is_member === '1') {
payload.action = 'update_card';
@@ -418,15 +427,19 @@ $(document).ready(function(){
type: 'post',
headers: {'X-CSRFToken': getCookie('csrftoken')}
}).success(function(data){
var phone_number;
var success_message = 'New card registered ' + payload.card_number;
if(payload.action === 'add_or_renew') {
var full_name = data.user[0].firstname + ' ' + data.user[0].lastname;
success_message = 'New membership and card number '+ payload.card_number + ' registered to ' + full_name;
success_message = 'New membership and card number '+ payload.card_number + ' registered to ' + full_name + ' ';
}
else if(payload.action ==='new_card_membership') {
var phone_number = data.card.owner_phone_number;
// TODO Is membership charged by kassa-user or by SMS?
success_message = 'New card registered to ' + format_phone_number(phone_number) + '. Activation SMS sent ';
phone_number = data.card.owner_phone_number;
success_message = 'New membership and card registered to ' + format_phone_number(phone_number) + '. Activation SMS sent ';
}
else if(payload.action === 'sms_card_notify') {
phone_number = data.card.owner_phone_number;
success_message = 'New card registered to ' + format_phone_number(phone_number) + '. Membership already paid by SMS ('+ pendingSMSMembership.purchase_date +'). Activation SMS sent ';
}
set_toast(success_message + ' :-)', 'success');
resetCardForm(true);
+20 -7
View File
@@ -138,6 +138,8 @@ function resetCardForm(reset_native) {
selectedUser = null;
_dom.userIdField.val('').trigger('change');
pendingSMSMembership = null;
/* Disable submit button */
_dom.registerSubmitButton.prop('disabled', true);
}
@@ -206,6 +208,7 @@ function getFormData(formElement) {
var _dom;
var users;
var selectedUser;
var pendingSMSMembership;
var cardForm = {
fields: {
cardNumber: false,
@@ -255,6 +258,7 @@ $(document).ready(function(){
set_selected_user(null, true);
set_field_state(_dom.phoneNumberField, 'error', data.error);
cardForm.fields.phoneNumber = false;
pendingSMSMembership = null;
update_submit_button();
return;
}
@@ -264,6 +268,7 @@ $(document).ready(function(){
var msg = 'Phone number is already tied to card '+ card.card_number + ' and is valid until '+ card.expires +'.';
set_field_state(_dom.phoneNumberField, 'error', msg);
cardForm.fields.phoneNumber = false;
pendingSMSMembership = null;
update_submit_button();
return;
}
@@ -277,12 +282,14 @@ $(document).ready(function(){
/* Existing user */
_user = inside.users[0];
_success_msg = 'Phone number belongs to existing user.';
pendingSMSMembership = null;
} else if(tekstmelding.result !== null) {
/* Pending SMS membership (not activated yet) */
_success_msg = 'Phone number has valid membership (paid via SMS). OK to give out card.';
// TODO store this in form and use in confirmation message.
pendingSMSMembership = tekstmelding.result;
} else {
/* Valid phone number with no existing user, card membership or pending SMS membership */
pendingSMSMembership = null;
}
set_field_state(_dom.phoneNumberField, 'success', _success_msg);
@@ -400,9 +407,11 @@ $(document).ready(function(){
/* Register type */
// FIXME: get from form
// action: 'new_card_membership', 'update_card', 'add_or_renew'
if(selectedUser === null) {
// action: 'new_card_membership', 'update_card', 'add_or_renew', 'sms_card_notify'
if(selectedUser === null && pendingSMSMembership === null) {
payload.action = 'new_card_membership';
} else if(selectedUser === null && pendingSMSMembership !== null) {
payload.action = 'sms_card_notify';
} else {
if(selectedUser.is_member === '1') {
payload.action = 'update_card';
@@ -418,15 +427,19 @@ $(document).ready(function(){
type: 'post',
headers: {'X-CSRFToken': getCookie('csrftoken')}
}).success(function(data){
var phone_number;
var success_message = 'New card registered ' + payload.card_number;
if(payload.action === 'add_or_renew') {
var full_name = data.user[0].firstname + ' ' + data.user[0].lastname;
success_message = 'New membership and card number '+ payload.card_number + ' registered to ' + full_name;
success_message = 'New membership and card number '+ payload.card_number + ' registered to ' + full_name + ' ';
}
else if(payload.action ==='new_card_membership') {
var phone_number = data.card.owner_phone_number;
// TODO Is membership charged by kassa-user or by SMS?
success_message = 'New card registered to ' + format_phone_number(phone_number) + '. Activation SMS sent ';
phone_number = data.card.owner_phone_number;
success_message = 'New membership and card registered to ' + format_phone_number(phone_number) + '. Activation SMS sent ';
}
else if(payload.action === 'sms_card_notify') {
phone_number = data.card.owner_phone_number;
success_message = 'New card registered to ' + format_phone_number(phone_number) + '. Membership already paid by SMS ('+ pendingSMSMembership.purchase_date +'). Activation SMS sent ';
}
set_toast(success_message + ' :-)', 'success');
resetCardForm(true);