Some registration logic fixes, ++

This commit is contained in:
nikolark committed 2015-08-01 01:37:09 +02:00
1 parent 4593e556b5
commit da0e945812
5 files changed
+48 -16

No files matched your search

+3 -2
View File
@@ -7,6 +7,7 @@
{% csrf_token %}
<h3>{% trans "Register card" %}</h3>
<p><!--
Add no-user membership [DONE].
Add membership for new user and existing user.
Renew membership for existing user.
Register card to existing user [DONE].
@@ -19,8 +20,8 @@
</div>
{{ add_card_form|bootstrap }}
<ul>
<li>If no existing membership can be found, a new membership is registered.</li>
<li>If an existing user is found, the membership is marked as renewed</li>
<li>If <em>no</em> existing user with membership can be found, <strong>a new membership is registered</strong> and tied to a card number.</li>
<li>If an existing user is found <em>without</em> a membership, it is <strong>renewed</strong></li>
<li>Registering a card number with a phone number already tied to an existing user, will add the card to that user.</li>
</ul>
<button id="register-submit-btn" type="submit" class="btn btn-primary btn-lg" disabled>{% trans "Register card" %}</button>
+24
View File
@@ -0,0 +1,24 @@
# coding: utf-8
from __future__ import unicode_literals
from django.conf import settings
import json
import requests
def tekstmelding_new_card_no_user(card_number, phone_number):
payload = {
'phone_number': phone_number,
'card_number': card_number,
'action': 'new_card_no_user',
}
url = '{}kassa/notify-new-card'.format(settings.TEKSTMELDING_API_URL)
response = requests.post(
url,
data=json.dumps(payload),
params={'api_key': settings.TEKSTMELDING_API_KEY},
headers={'Content-Type': 'application/json'}
)
return response.json()
+9 -2
View File
@@ -10,6 +10,7 @@ import phonenumbers
import requests
from apps.kassa.forms import AddCardForm, SearchUserForm
from apps.kassa.utils import tekstmelding_new_card_no_user
@login_required
@@ -63,7 +64,7 @@ def check_phone_number(request):
'api_key': settings.TEKSTMELDING_API_KEY,
'number': number
}
url = '{}kassa-pending-membership'.format(settings.TEKSTMELDING_API_URL)
url = '{}kassa/pending-membership'.format(settings.TEKSTMELDING_API_URL)
tekstmelding_data = requests.get(url, params=payload).json()
return JsonResponse({
@@ -85,7 +86,7 @@ def inside_card_api(request):
'card_number': post_data.get('card_number'),
'user_id': post_data.get('user_id'),
'phone_number': post_data.get('phone_number'),
'type': post_data.get('type') # renewal, new_user, new_card_only,
'action': post_data.get('action') # new_card_no_user, update_card, renewal
}
response = requests.post(
url,
@@ -93,6 +94,12 @@ def inside_card_api(request):
params=params,
headers=dict(content_type='application/json')
)
# Send activation notification (link) to user by SMS
# FIXME: could be async
if response.status_code == 200 and payload['action'] == 'new_card_no_user':
card = response.json()['card']
# FIXME: ignores errors
tekstmelding_new_card_no_user(card_number=card['card_number'], phone_number=card['owner_phone_number'])
else:
params.update({
'card_number': request.GET.get('card_number', '')
+6 -6
View File
@@ -270,6 +270,7 @@ $(document).ready(function(){
set_field_state(_dom.phoneNumberField, 'error', msg);
cardForm.fields.phoneNumber = false;
} else {
set_field_state(_dom.phoneNumberField, 'success', '');
set_selected_user(null, true);
}
@@ -317,7 +318,7 @@ $(document).ready(function(){
cardForm.fields.cardNumber = false;
set_field_state(_dom.cardNumberField, 'error', 'Cannot find card number in database.');
}
else if(card && card.registered !== null) {
else if(card && card.registered !== "") {
var owner_string = 'phone number: '+ format_phone_number(card.owner_phone_number);
if(user) {
owner_string = 'existing user: ' + user.firstname + ' ' + user.lastname + ' (' + format_phone_number(user.number) + ')';
@@ -383,11 +384,9 @@ $(document).ready(function(){
_dom.registerSubmitButton.on('click', function(e) {
e.preventDefault();
// TODO on error output validation status
// TODO on success:
// - print suggested steps ("You will now get an sms with a link")
// - show new user below form (hide/show after 10s)
// - clear form
if( !cardFormIsValid() ) {
set_toast('Either phone number or card number is not valid', 'error');
@@ -398,13 +397,14 @@ $(document).ready(function(){
/* Register type */
// FIXME: get from form
// action: 'new_card_no_user', 'update_card', 'renewal'
if(selectedUser === null) {
payload.type = 'new_card_only';
payload.action = 'new_card_no_user';
} else {
if(selectedUser.is_member === '1') {
payload.type = 'renewal';
payload.action = 'update_card';
} else {
payload.type = 'new_user';
payload.action = 'renewal'; // Not: could also update card number
}
}
+6 -6
View File
@@ -270,6 +270,7 @@ $(document).ready(function(){
set_field_state(_dom.phoneNumberField, 'error', msg);
cardForm.fields.phoneNumber = false;
} else {
set_field_state(_dom.phoneNumberField, 'success', '');
set_selected_user(null, true);
}
@@ -317,7 +318,7 @@ $(document).ready(function(){
cardForm.fields.cardNumber = false;
set_field_state(_dom.cardNumberField, 'error', 'Cannot find card number in database.');
}
else if(card && card.registered !== null) {
else if(card && card.registered !== "") {
var owner_string = 'phone number: '+ format_phone_number(card.owner_phone_number);
if(user) {
owner_string = 'existing user: ' + user.firstname + ' ' + user.lastname + ' (' + format_phone_number(user.number) + ')';
@@ -383,11 +384,9 @@ $(document).ready(function(){
_dom.registerSubmitButton.on('click', function(e) {
e.preventDefault();
// TODO on error output validation status
// TODO on success:
// - print suggested steps ("You will now get an sms with a link")
// - show new user below form (hide/show after 10s)
// - clear form
if( !cardFormIsValid() ) {
set_toast('Either phone number or card number is not valid', 'error');
@@ -398,13 +397,14 @@ $(document).ready(function(){
/* Register type */
// FIXME: get from form
// action: 'new_card_no_user', 'update_card', 'renewal'
if(selectedUser === null) {
payload.type = 'new_card_only';
payload.action = 'new_card_no_user';
} else {
if(selectedUser.is_member === '1') {
payload.type = 'renewal';
payload.action = 'update_card';
} else {
payload.type = 'new_user';
payload.action = 'renewal'; // Not: could also update card number
}
}