Limit deposits by perm (default off)
This commit is contained in:
1 parent
2ef30085d6
commit
8aed5ace21
5 files changed
+56
-10
No files matched your search
@@ -1,5 +1,14 @@
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models import Q
|
||||
|
||||
def format_username(firstname, lastname):
|
||||
first = firstname.lower().strip().replace(" ", "")[:6].encode('ascii', 'ignore')
|
||||
last = lastname.lower().strip().replace(" ", "")[:6].encode('ascii', 'ignore')
|
||||
|
||||
return "{0}{0}".format(first, last)
|
||||
|
||||
def users_with_perm(perm_name):
|
||||
return User.objects.filter(
|
||||
Q(is_superuser=True) |
|
||||
Q(user_permissions__codename=perm_name) |
|
||||
Q(groups__permissions__codename=perm_name)).distinct()
|
||||
+29
-6
@@ -5,6 +5,7 @@ from itertools import groupby
|
||||
import json
|
||||
import time
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import login, logout as auth_logout
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.forms import AuthenticationForm
|
||||
@@ -17,9 +18,10 @@ from django.contrib import messages
|
||||
from django.db.models import Count, Sum, Max, Min
|
||||
|
||||
from models import *
|
||||
|
||||
from forms import *
|
||||
|
||||
import utils
|
||||
|
||||
def home(request):
|
||||
if request.method == "POST":
|
||||
form = AuthenticationForm(data=request.POST)
|
||||
@@ -55,8 +57,9 @@ def register(request):
|
||||
# can he afford it?
|
||||
profile = order.customer.get_profile()
|
||||
if order_sum > profile.balance:
|
||||
messages.error(request, '{0} har ikke råd, mangler {1} kr.'.format(
|
||||
order.customer,
|
||||
messages.error(request, '{0} {1} har ikke råd, mangler {2} kr.'.format(
|
||||
order.customer.first_name,
|
||||
order.customer.last_name,
|
||||
int(order_sum - profile.balance)))
|
||||
return HttpResponseRedirect( reverse('main.views.register') )
|
||||
# empty order?
|
||||
@@ -81,7 +84,11 @@ def register(request):
|
||||
|
||||
orderlines.append(str(ol['amount']) + " " + str(product))
|
||||
|
||||
messages.success(request, '{0} kjøpte {1}.'.format(order.customer, ", ".join(orderlines)))
|
||||
messages.success(request, '{0} {1} kjøpte {2}.'.format(
|
||||
order.customer.first_name,
|
||||
order.customer.last_name,
|
||||
", ".join(orderlines)
|
||||
))
|
||||
return HttpResponseRedirect( reverse('main.views.register') )
|
||||
else:
|
||||
# TODO specify error(s)
|
||||
@@ -96,17 +103,33 @@ def register(request):
|
||||
def deposit(request):
|
||||
users = User.objects.all().order_by('first_name','last_name')
|
||||
users_js = users_format_js(users)
|
||||
allowed_users = utils.users_with_perm('add_transaction')
|
||||
|
||||
limit_deposits = settings.BBS_LIMIT_DEPOSITS
|
||||
|
||||
if request.method == "POST":
|
||||
form = DepositForm(request.POST)
|
||||
if form.is_valid():
|
||||
amount = form.cleaned_data['amount']
|
||||
user = form.cleaned_data['user']
|
||||
if amount + user.get_profile().balance > settings.BBS_SALDO_MAX:
|
||||
messages.error(request, '{0} {1} kan ikke sette inn {2} kr, det overskrider maks saldo ({3} kr) med {4} kr'.format(
|
||||
user.first_name,
|
||||
user.last_name,
|
||||
amount,
|
||||
settings.BBS_SALDO_MAX,
|
||||
amount + user.get_profile().balance - settings.BBS_SALDO_MAX
|
||||
))
|
||||
return HttpResponseRedirect( reverse('main.views.deposit') )
|
||||
|
||||
transaction = form.save()
|
||||
profile = transaction.user.get_profile()
|
||||
profile.balance += transaction.amount
|
||||
profile.save()
|
||||
|
||||
messages.success(request, '{0} satte inn {1} kr. Ny saldo er {2}'.format(
|
||||
transaction.user,
|
||||
messages.success(request, '{0} {1} satte inn {2} kr. Ny saldo er {3}'.format(
|
||||
transaction.user.first_name,
|
||||
transaction.user.last_name,
|
||||
transaction.amount,
|
||||
profile.balance))
|
||||
return HttpResponseRedirect( reverse('main.views.deposit') )
|
||||
|
||||
@@ -157,3 +157,6 @@ LOGIN_REDIRECT_URL = '/'
|
||||
|
||||
SESSION_COOKIE_AGE = 900 # 15 minutes
|
||||
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
|
||||
|
||||
BBS_SALDO_MAX = 600
|
||||
BBS_LIMIT_DEPOSITS = False
|
||||
@@ -15,6 +15,20 @@
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% if not perms.main.can_add_transaction and limit_deposits %}
|
||||
<section class="row">
|
||||
<div class="col-xs-4">
|
||||
<p class="alert alert-warning">Du har ikke tilgang til å sette inn penger.</p>
|
||||
<p>Spør en av disse om de kan hjelpe deg:</p>
|
||||
<ul>
|
||||
{% for u in allowed_users %}
|
||||
<li style="padding-bottom: 8px;"><img src="{{u.get_profile.image }}" />{{u.first_name }} {{u.last_name }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% else %}
|
||||
<form id="order" method="post" class="form-stacked" autocomplete="off">
|
||||
{% csrf_token %}
|
||||
<section id="customer">
|
||||
@@ -70,5 +84,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
</section>
|
||||
{% endblock %}
|
||||
@@ -5,12 +5,8 @@
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{% if user.is_authenticated %}
|
||||
<p class="alert alert-success">Du er logget ut.</p>
|
||||
<p>Vil du <a href="{% url home %}">logge inn igjen?</a></p>
|
||||
{% else %}
|
||||
<p>Du er allerede logget ut.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in new issue
Block a user