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)
|
||||
|
||||
Reference in new issue
Block a user