diff --git a/cashonly/admin.py b/cashonly/admin.py index 532e03f..1520f09 100644 --- a/cashonly/admin.py +++ b/cashonly/admin.py @@ -87,7 +87,7 @@ class AccountAdmin(admin.ModelAdmin): 'last': request.user.last_name} if comment is not None and len(comment) > 0: desc += ' (%s)' % (comment) - obj.change_credit(aount, subject, desc) + obj.change_credit(amount, subject, desc) # Make sure the object is saved in any case obj.save() diff --git a/cashonly/templates/cashonly/base.html b/cashonly/templates/cashonly/base.html index a17f18e..d01c902 100644 --- a/cashonly/templates/cashonly/base.html +++ b/cashonly/templates/cashonly/base.html @@ -76,7 +76,7 @@ ({{ user.account.credit|floatformat:2 }}€)

-
  • {% trans "Logout" %}
  • +
  • {% trans "Logout" %}
  • diff --git a/cashonly/templates/cashonly/login.html b/cashonly/templates/cashonly/login.html index 722daca..41117ce 100644 --- a/cashonly/templates/cashonly/login.html +++ b/cashonly/templates/cashonly/login.html @@ -18,7 +18,7 @@
    -
    + {% csrf_token %} diff --git a/cashonly/templates/cashonly/usersettings_saved.html b/cashonly/templates/cashonly/usersettings_saved.html index a8e2f91..308c33c 100644 --- a/cashonly/templates/cashonly/usersettings_saved.html +++ b/cashonly/templates/cashonly/usersettings_saved.html @@ -1,5 +1,4 @@ {% extends "cashonly/base.html" %} -{% load url from future %} {% load i18n %} {% block content %} diff --git a/cashonly/urls.py b/cashonly/urls.py index 1ca50a4..5e6f427 100644 --- a/cashonly/urls.py +++ b/cashonly/urls.py @@ -1,8 +1,8 @@ -from django.conf.urls import patterns, url +from django.conf.urls import url from cashonly import views -urlpatterns = patterns('', - url(r'^/?$', 'cashonly.views.overview', name='overview'), +urlpatterns = [ + url(r'^$', views.overview, name='overview'), url(r'^product/(?P\d+)/$', views.ProductView.as_view(), name='product'), @@ -15,16 +15,16 @@ urlpatterns = patterns('', url(r'products/((?P\d+)/)?$', views.products, name='products'), - url(r'buy/(?P\d+)/$', 'cashonly.views.buy', name='buy'), + url(r'buy/(?P\d+)/$', views.buy, name='buy'), - url(r'buy/(?P\d+)/really/$', 'cashonly.views.buy', + url(r'buy/(?P\d+)/really/$', views.buy, {'confirm': True}, name='buy_really'), - url(r'buy/thanks/$', 'cashonly.views.buy_thanks', name='buy_thanks'), + url(r'buy/thanks/$', views.buy_thanks, name='buy_thanks'), - url(r'buy/error/$', 'cashonly.views.buy_error', name='buy_error'), + url(r'buy/error/$', views.buy_error, name='buy_error'), - url(r'usersettings(/(?P\w+))?/$', 'cashonly.views.usersettings', + url(r'usersettings(/(?P\w+))?/$', views.usersettings, name='usersettings'), -) +] diff --git a/cashonly/views.py b/cashonly/views.py index fa924de..4ac3b86 100644 --- a/cashonly/views.py +++ b/cashonly/views.py @@ -1,8 +1,7 @@ from django.views import generic from django import forms -from django.shortcuts import render_to_response, get_object_or_404, redirect +from django.shortcuts import render, get_object_or_404, redirect from django.contrib.auth.decorators import login_required -from django.template import RequestContext from django.core import paginator from cashonly.models import * from django.utils.translation import ugettext as _ @@ -11,153 +10,135 @@ import cashonly.version import datetime def version_number_context_processor(request): - return {'version_number': cashonly.version.CASHONLY_VERSION} + return {'version_number': cashonly.version.CASHONLY_VERSION} @login_required def overview(request): - a = request.user.account - time = datetime.datetime.now() - datetime.timedelta(hours=12) - transactions = Transaction.objects.filter(account=a).filter(timestamp__gte=time).order_by('-timestamp') + a = request.user.account + time = datetime.datetime.now() - datetime.timedelta(hours=12) + transactions = Transaction.objects.filter(account=a).filter(timestamp__gte=time).order_by('-timestamp') - # FIXME: distinct doesn't work as expected, so fetch 20 rows and hope that there are 3 distinct products - purchases = Product.objects.filter(saleslogentry__account=a).order_by('-saleslogentry__timestamp').distinct()[:20] + # FIXME: distinct doesn't work as expected, so fetch 20 rows and hope that there are 3 distinct products + purchases = Product.objects.filter(saleslogentry__account=a).order_by('-saleslogentry__timestamp').distinct()[:20] - products = [] - # Find 3 products - for p in purchases: - if not p in products: - products.append(p) + products = [] + # Find 3 products + for p in purchases: + if not p in products: + products.append(p) - if len(products) == 3: - break + if len(products) == 3: + break - context = RequestContext(request, { 'latest_transactions': transactions, - 'latest_purchases': products}) - - return render_to_response('cashonly/index.html', - context_instance=context) + return render(request, 'cashonly/index.html', + {'latest_transactions': transactions, + 'latest_purchases': products}) class ProductView(generic.DetailView): - model = Product + model = Product @login_required def transactions(request, detailed, page): - a = request.user.account - transactions = Transaction.objects.filter(account=a).order_by('-timestamp') - - if page is None: - page = 1 + a = request.user.account + transactions = Transaction.objects.filter(account=a).order_by('-timestamp') - pagi = paginator.Paginator(transactions, 10) - try: - transaction_list = pagi.page(page) - except paginator.EmptyPage: - transaction_list = paginator.page(paginator.num_pages) + if page is None: + page = 1 - context = RequestContext(request, { 'transaction_list': transaction_list, - 'detailed': detailed }) + pagi = paginator.Paginator(transactions, 10) + try: + transaction_list = pagi.page(page) + except paginator.EmptyPage: + transaction_list = paginator.page(paginator.num_pages) - return render_to_response('cashonly/transaction_list.html', - context_instance=context) + return render(request, 'cashonly/transaction_list.html', { 'transaction_list': transaction_list, + 'detailed': detailed }) def products(request, category_id=None): - if category_id is None: - category = None - products = Product.objects.filter(active=True) - else: - category = get_object_or_404(ProductCategory, id=category_id) - products = Product.objects.filter(active=True).filter(category=category) + if category_id is None: + category = None + products = Product.objects.filter(active=True) + else: + category = get_object_or_404(ProductCategory, id=category_id) + products = Product.objects.filter(active=True).filter(category=category) - categories = ProductCategory.objects.all() + categories = ProductCategory.objects.all() - context = RequestContext(request, { 'product_list': products, - 'category': category, - 'categories': categories }) - - return render_to_response('cashonly/product_list.html', - context_instance=context) + return render(request, 'cashonly/product_list.html', { 'product_list': products, + 'category': category, + 'categories': categories }) @login_required def buy(request, product_id, confirm=False): - product = get_object_or_404(Product, id=product_id) - - if confirm: - if request.user.account.buy_product(product, 1): - return redirect('buy_thanks') - else: - return redirect('buy_error') - else: - context = RequestContext(request, {'product': product}) - return render_to_response('cashonly/buy_confirm.html', - context_instance=context) + product = get_object_or_404(Product, id=product_id) + + if confirm: + if request.user.account.buy_product(product, 1): + return redirect('buy_thanks') + else: + return redirect('buy_error') + else: + return render(request, 'cashonly/buy_confirm.html', {'product': product}) @login_required def buy_thanks(request): - context = RequestContext(request) - return render_to_response('cashonly/buy_thanks.html', context_instance=context) + return render(request, 'cashonly/buy_thanks.html') @login_required def buy_error(request): - context = RequestContext(request) - return render_to_response('cashonly/buy_error.html', context_instance=context) + return render(request, 'cashonly/buy_error.html') class UserSettingsForm(forms.Form): - daily_digest = forms.BooleanField(required=False, - label=ugettext_lazy('daily digest')) + daily_digest = forms.BooleanField(required=False, + label=ugettext_lazy('daily digest')) class UserPinForm(forms.Form): - pin = forms.CharField(max_length=32, widget=forms.PasswordInput, - label=ugettext_lazy('PIN'), required=False) - pin_confirm = forms.CharField(max_length=32, widget=forms.PasswordInput, - label=ugettext_lazy('PIN (confirmation)'), - required=False) + pin = forms.CharField(max_length=32, widget=forms.PasswordInput, + label=ugettext_lazy('PIN'), required=False) + pin_confirm = forms.CharField(max_length=32, widget=forms.PasswordInput, + label=ugettext_lazy('PIN (confirmation)'), + required=False) - def clean(self): - cleaned_data = super(UserPinForm, self).clean() + def clean(self): + cleaned_data = super(UserPinForm, self).clean() - if not (cleaned_data.has_key('pin') or - cleaned_data.has_key('pin_confirm')): - return cleaned_data - if cleaned_data['pin'] != cleaned_data['pin_confirm']: - raise forms.ValidationError(_('PINs do not match.')) + if not (cleaned_data.has_key('pin') or + cleaned_data.has_key('pin_confirm')): + return cleaned_data + if cleaned_data['pin'] != cleaned_data['pin_confirm']: + raise forms.ValidationError(_('PINs do not match.')) - return cleaned_data + return cleaned_data @login_required def usersettings(request, submit=None): - daily_digest = request.user.account.daily_digest - settings_form = UserSettingsForm({'daily_digest': daily_digest}) - pin_form = UserPinForm() - - if request.method == 'POST': - if submit == 'pin': - pin_form = UserPinForm(request.POST) - - if pin_form.is_valid(): - pin = pin_form.cleaned_data['pin'] - request.user.account.pin = pin - request.user.account.save() - context = RequestContext(request) - return render_to_response('cashonly/usersettings_saved.html', - context_instance=context) - - elif submit == 'settings': - settings_form = UserSettingsForm(request.POST) - - if settings_form.is_valid(): - daily_digest = settings_form.cleaned_data['daily_digest'] - request.user.account.daily_digest = daily_digest - request.user.account.save() - context = RequestContext(request) - return render_to_response('cashonly/usersettings_saved.html', - context_instance=context) - - context = RequestContext(request, { 'settings_form': settings_form, + daily_digest = request.user.account.daily_digest + settings_form = UserSettingsForm({'daily_digest': daily_digest}) + pin_form = UserPinForm() + + if request.method == 'POST': + if submit == 'pin': + pin_form = UserPinForm(request.POST) + + if pin_form.is_valid(): + pin = pin_form.cleaned_data['pin'] + request.user.account.pin = pin + request.user.account.save() + return render(request, 'cashonly/usersettings_saved.html') + + elif submit == 'settings': + settings_form = UserSettingsForm(request.POST) + + if settings_form.is_valid(): + daily_digest = settings_form.cleaned_data['daily_digest'] + request.user.account.daily_digest = daily_digest + request.user.account.save() + return render(request, 'cashonly/usersettings_saved.html') + + return render(request, 'cashonly/usersettings.html', { 'settings_form': settings_form, 'pin_form': pin_form}) - return render_to_response('cashonly/usersettings.html', - context_instance=context)