diff --git a/cashonly/web/templates/cashonly/web/usersettings.html b/cashonly/web/templates/cashonly/web/usersettings.html
index 308d603..29f99b1 100644
--- a/cashonly/web/templates/cashonly/web/usersettings.html
+++ b/cashonly/web/templates/cashonly/web/usersettings.html
@@ -87,6 +87,27 @@ $(document).ready(function() {
+
+
+
+
+
{% trans "Change card number" %}
+
+
+
+
+
+
diff --git a/cashonly/web/templates/cashonly/web/usersettings_error.html b/cashonly/web/templates/cashonly/web/usersettings_error.html
new file mode 100644
index 0000000..8a0c43c
--- /dev/null
+++ b/cashonly/web/templates/cashonly/web/usersettings_error.html
@@ -0,0 +1,14 @@
+{% extends "cashonly/web/base.html" %}
+{% load i18n %}
+
+{% block content %}
+{% trans "Preferences" %}
+
+
+ {% if msg %}
{% endif %}{% blocktrans %}The settings could not be saved!{% endblocktrans %}{% if msg %}
{% endif %}
+ {% if msg %}
+
{{ msg }}
+ {% endif %}
+
+{% trans "Back" %}
+{% endblock %}
diff --git a/cashonly/web/views.py b/cashonly/web/views.py
index 7bc8a55..5f54065 100644
--- a/cashonly/web/views.py
+++ b/cashonly/web/views.py
@@ -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):
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):
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})