Logic for membership renewal WIP
This commit is contained in:
1 parent
6a65446bfa
commit
a40d714a2f
5 files changed
+84
-66
No files matched your search
+3
-3
@@ -1,11 +1,11 @@
|
||||
from django.conf.urls import url
|
||||
from apps.kassa.views import register, inside_user_api, inside_card_api, inside_register_api, \
|
||||
check_phone_number
|
||||
from apps.kassa.views import register, inside_user_api, inside_card_api, check_phone_number, \
|
||||
register_card_and_membership
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$', register, name='register'),
|
||||
url(r'^inside/user/$', inside_user_api, name='inside-user-api'),
|
||||
url(r'^check-phonenumber/$', check_phone_number, name='check-phone-number'),
|
||||
url(r'^inside/card/$', inside_card_api, name='inside-card-number-api'),
|
||||
url(r'^inside/register/$', inside_register_api, name='inside-register-api'),
|
||||
url(r'^register-card-membership/$', register_card_and_membership, name='register-card-and-membership'),
|
||||
]
|
||||
+40
-1
@@ -6,7 +6,7 @@ import json
|
||||
import requests
|
||||
|
||||
|
||||
def tekstmelding_new_card_no_user(card_number, phone_number):
|
||||
def tekstmelding_new_membership_card(card_number, phone_number):
|
||||
payload = {
|
||||
'phone_number': phone_number,
|
||||
'card_number': card_number,
|
||||
@@ -22,3 +22,42 @@ def tekstmelding_new_card_no_user(card_number, phone_number):
|
||||
)
|
||||
|
||||
return response.json()
|
||||
|
||||
|
||||
def inside_get_card(card_number):
|
||||
url = '{}card.php'.format(settings.INSIDE_API_URL)
|
||||
params = {
|
||||
'apikey': settings.INSIDE_API_KEY,
|
||||
'card_number': card_number
|
||||
}
|
||||
|
||||
return requests.get(url, params=params)
|
||||
|
||||
|
||||
def inside_update_card(card_number, user_id, phone_number, action):
|
||||
url = '{}card.php'.format(settings.INSIDE_API_URL)
|
||||
params = {'apikey': settings.INSIDE_API_KEY}
|
||||
|
||||
payload = {
|
||||
'card_number': card_number,
|
||||
'user_id': user_id,
|
||||
'phone_number': phone_number,
|
||||
'action': action # new_card_membership, update_card, add_or_renew
|
||||
}
|
||||
return requests.post(
|
||||
url,
|
||||
data=json.dumps(payload),
|
||||
params=params,
|
||||
headers=dict(content_type='application/json')
|
||||
)
|
||||
|
||||
|
||||
def inside_update_membership(user_id, purchased=None):
|
||||
url = '{}membership.php'.format(settings.INSIDE_API_URL)
|
||||
payload = {
|
||||
'apikey': settings.INSIDE_API_KEY,
|
||||
'user_id': user_id,
|
||||
'purchased': purchased,
|
||||
'source': 'card'
|
||||
}
|
||||
return requests.post(url, data=json.dumps(payload), headers=dict(content_type='application/json'))
|
||||
+33
-52
@@ -10,7 +10,8 @@ import phonenumbers
|
||||
import requests
|
||||
|
||||
from apps.kassa.forms import AddCardForm, SearchUserForm
|
||||
from apps.kassa.utils import tekstmelding_new_card_no_user
|
||||
from apps.kassa.utils import tekstmelding_new_membership_card, inside_update_card, inside_get_card, \
|
||||
inside_update_membership
|
||||
|
||||
|
||||
@login_required
|
||||
@@ -75,60 +76,40 @@ def check_phone_number(request):
|
||||
|
||||
@login_required
|
||||
def inside_card_api(request):
|
||||
url = '{}card.php'.format(settings.INSIDE_API_URL)
|
||||
params = {
|
||||
'apikey': settings.INSIDE_API_KEY
|
||||
}
|
||||
|
||||
if request.method == 'POST':
|
||||
# TODO: Move this to own method in utils.py, called by register_card_and_membership
|
||||
post_data = json.loads(request.body)
|
||||
payload = {
|
||||
'card_number': post_data.get('card_number'),
|
||||
'user_id': post_data.get('user_id'),
|
||||
'phone_number': post_data.get('phone_number'),
|
||||
'action': post_data.get('action') # new_card_no_user, update_card, renewal
|
||||
}
|
||||
response = requests.post(
|
||||
url,
|
||||
data=json.dumps(payload),
|
||||
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', '')
|
||||
})
|
||||
response = requests.get(url, params=params)
|
||||
|
||||
return JsonResponse(response.json(), status=response.status_code)
|
||||
|
||||
|
||||
@login_required
|
||||
def inside_register_api(request):
|
||||
# TODO: move this to own method in utils.py
|
||||
post_data = json.loads(request.body)
|
||||
payload = {
|
||||
'apikey': settings.INSIDE_API_KEY,
|
||||
'phone': post_data.get('phone_number'),
|
||||
# 'user_id': post_data.get('user_id'),
|
||||
'type': post_data.get('type'), # 'renewal' or 'new'
|
||||
'card_number': post_data.get('card_number'),
|
||||
'source': 'physical'
|
||||
}
|
||||
url = '{}register.php'.format(settings.INSIDE_API_URL)
|
||||
response = requests.post(url, data=json.dumps(payload), headers=dict(content_type='application/json'))
|
||||
if request.method != 'GET':
|
||||
return JsonResponse({'error': 'Only method GET supported'})
|
||||
|
||||
response = inside_get_card(request.GET.get('card_number'))
|
||||
return JsonResponse(response.json(), status=response.status_code)
|
||||
|
||||
|
||||
@login_required()
|
||||
def register_card_and_membership(request):
|
||||
# TODO: Call membership and card apis above, depending of what need to be done
|
||||
pass
|
||||
if request.method != 'POST':
|
||||
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
|
||||
user_id = post_data.get('user_id'),
|
||||
|
||||
response = inside_update_card(
|
||||
post_data.get('card_number'),
|
||||
user_id,
|
||||
post_data.get('phone_number'),
|
||||
action
|
||||
)
|
||||
if response.status_code != 200:
|
||||
return JsonResponse(response.json(), status=response.status_code)
|
||||
|
||||
# Send activation notification (link) to user by SMS
|
||||
if action == 'new_card_membership':
|
||||
card = response.json()['card']
|
||||
# FIXME: could be async
|
||||
tekstmelding_new_membership_card(card_number=card['card_number'], 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'))
|
||||
|
||||
return JsonResponse(response.json(), status=response.status_code)
|
||||
|
||||
@@ -244,7 +244,7 @@ $(document).ready(function(){
|
||||
insideUserApi: '/inside/user/',
|
||||
checkPhoneNumber: '/check-phonenumber/',
|
||||
insideCard: '/inside/card/',
|
||||
insideRegister: '/inside/register/'
|
||||
registerCardAndMembership: '/register-card-membership/'
|
||||
};
|
||||
/* Add filter |phoneNumber */
|
||||
nunjucksEnv.addFilter('phoneNumber', format_phone_number);
|
||||
@@ -392,14 +392,13 @@ $(document).ready(function(){
|
||||
set_toast('Either phone number or card number is not valid', 'error');
|
||||
return;
|
||||
}
|
||||
var url = urls.insideCard;
|
||||
var payload = getFormData(_dom.registerCardForm);
|
||||
|
||||
/* Register type */
|
||||
// FIXME: get from form
|
||||
// action: 'new_card_no_user', 'update_card', 'add_or_renew'
|
||||
// action: 'new_card_membership', 'update_card', 'add_or_renew'
|
||||
if(selectedUser === null) {
|
||||
payload.action = 'new_card_no_user';
|
||||
payload.action = 'new_card_membership';
|
||||
} else {
|
||||
if(selectedUser.is_member === '1') {
|
||||
payload.action = 'update_card';
|
||||
@@ -408,7 +407,7 @@ $(document).ready(function(){
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax(url, {
|
||||
$.ajax(urls.registerCardAndMembership, {
|
||||
data: JSON.stringify(payload),
|
||||
contentType: 'application/json',
|
||||
dataType: 'json',
|
||||
|
||||
Vendored
+4
-5
@@ -244,7 +244,7 @@ $(document).ready(function(){
|
||||
insideUserApi: '/inside/user/',
|
||||
checkPhoneNumber: '/check-phonenumber/',
|
||||
insideCard: '/inside/card/',
|
||||
insideRegister: '/inside/register/'
|
||||
registerCardAndMembership: '/register-card-membership/'
|
||||
};
|
||||
/* Add filter |phoneNumber */
|
||||
nunjucksEnv.addFilter('phoneNumber', format_phone_number);
|
||||
@@ -392,14 +392,13 @@ $(document).ready(function(){
|
||||
set_toast('Either phone number or card number is not valid', 'error');
|
||||
return;
|
||||
}
|
||||
var url = urls.insideCard;
|
||||
var payload = getFormData(_dom.registerCardForm);
|
||||
|
||||
/* Register type */
|
||||
// FIXME: get from form
|
||||
// action: 'new_card_no_user', 'update_card', 'add_or_renew'
|
||||
// action: 'new_card_membership', 'update_card', 'add_or_renew'
|
||||
if(selectedUser === null) {
|
||||
payload.action = 'new_card_no_user';
|
||||
payload.action = 'new_card_membership';
|
||||
} else {
|
||||
if(selectedUser.is_member === '1') {
|
||||
payload.action = 'update_card';
|
||||
@@ -408,7 +407,7 @@ $(document).ready(function(){
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax(url, {
|
||||
$.ajax(urls.registerCardAndMembership, {
|
||||
data: JSON.stringify(payload),
|
||||
contentType: 'application/json',
|
||||
dataType: 'json',
|
||||
|
||||
Reference in new issue
Block a user