Browse Source

make card number configurable for users

master
Fr3deric 5 years ago
parent
commit
da8353c912
  1. 21
      cashonly/web/templates/cashonly/web/usersettings.html
  2. 14
      cashonly/web/templates/cashonly/web/usersettings_error.html
  3. 31
      cashonly/web/views.py

21
cashonly/web/templates/cashonly/web/usersettings.html

@ -87,6 +87,27 @@ $(document).ready(function() { @@ -87,6 +87,27 @@ $(document).ready(function() {
</div>
</div>
<div class="col-xs-12 col-sm-6">
<div class="panel panel-default">
<div class="panel-heading">{% trans "Change card number" %}</div>
<div class="panel-body">
<form action="{% url 'usersettings' %}card_number/" method="post" id="card-number-form" class="form-horizontal" role="form">
{% csrf_token %}
{{ card_number_form|bootstrap_horizontal:'col-sm-4' }}
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<input id="card-number-submit" type="submit" class="btn btn-primary" value="{% trans "Save" %}" />
</div>
</div>
</form>
</div>
</div>
</div>
</div>

14
cashonly/web/templates/cashonly/web/usersettings_error.html

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
{% extends "cashonly/web/base.html" %}
{% load i18n %}
{% block content %}
<h1>{% trans "Preferences" %}</h1>
<div class="alert alert-danger">
{% if msg %}<h4 class="alert-heading">{% endif %}{% blocktrans %}The settings could not be saved!{% endblocktrans %}{% if msg %}</h4>{% endif %}
{% if msg %}
<p>{{ msg }}</p>
{% endif %}
</div>
<a class="btn btn-primary" href="{% url 'usersettings' %}">{% trans "Back" %}</a>
{% endblock %}

31
cashonly/web/views.py

@ -8,6 +8,7 @@ from cashonly.core.models import * @@ -8,6 +8,7 @@ from cashonly.core.models import *
from cashonly.core.services import AccountManager
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy
from django.db import IntegrityError
#import cashonly.core.version
import datetime
@ -139,12 +140,21 @@ class UserAvatarForm(forms.Form): @@ -139,12 +140,21 @@ class UserAvatarForm(forms.Form):
required=False)
class UserCardNumberForm(forms.Form):
card_number = forms.CharField(max_length=32,
label=ugettext_lazy('card number'),
required=False)
@login_required
def usersettings(request, submit=None):
daily_digest = request.user.account.daily_digest
settings_form = UserSettingsForm({'daily_digest': daily_digest})
pin_form = UserPinForm()
avatar_form = UserAvatarForm()
card_number_form = UserCardNumberForm({
'card_number': request.user.account.card_number
})
if request.method == 'POST':
if submit == 'pin':
@ -176,7 +186,26 @@ def usersettings(request, submit=None): @@ -176,7 +186,26 @@ def usersettings(request, submit=None):
request.user.account.avatar = avatar_form.cleaned_data['avatar']
request.user.account.save()
return render(request, 'cashonly/web/usersettings_saved.html')
elif submit == 'card_number':
card_number_form = UserCardNumberForm(request.POST)
# TODO validate card number
if card_number_form.is_valid():
request.user.account.card_number = \
card_number_form.cleaned_data['card_number']
try:
request.user.account.save()
except IntegrityError:
return render(
request,
'cashonly/web/usersettings_error.html',
{'msg': _('Card number is already in use.')}
)
return render(request, 'cashonly/web/usersettings_saved.html')
else:
pass
# TODO handle error (invalid card number)
return render(request, 'cashonly/web/usersettings.html',
{'settings_form': settings_form, 'pin_form': pin_form,
'avatar_form': avatar_form})
'avatar_form': avatar_form,
'card_number_form': card_number_form})

Loading…
Cancel
Save