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):
|
def format_username(firstname, lastname):
|
||||||
first = firstname.lower().strip().replace(" ", "")[:6].encode('ascii', 'ignore')
|
first = firstname.lower().strip().replace(" ", "")[:6].encode('ascii', 'ignore')
|
||||||
last = lastname.lower().strip().replace(" ", "")[:6].encode('ascii', 'ignore')
|
last = lastname.lower().strip().replace(" ", "")[:6].encode('ascii', 'ignore')
|
||||||
|
|
||||||
return "{0}{0}".format(first, last)
|
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 json
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
from django.contrib.auth import login, logout as auth_logout
|
from django.contrib.auth import login, logout as auth_logout
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth.forms import AuthenticationForm
|
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 django.db.models import Count, Sum, Max, Min
|
||||||
|
|
||||||
from models import *
|
from models import *
|
||||||
|
|
||||||
from forms import *
|
from forms import *
|
||||||
|
|
||||||
|
import utils
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = AuthenticationForm(data=request.POST)
|
form = AuthenticationForm(data=request.POST)
|
||||||
@@ -55,8 +57,9 @@ def register(request):
|
|||||||
# can he afford it?
|
# can he afford it?
|
||||||
profile = order.customer.get_profile()
|
profile = order.customer.get_profile()
|
||||||
if order_sum > profile.balance:
|
if order_sum > profile.balance:
|
||||||
messages.error(request, '{0} har ikke råd, mangler {1} kr.'.format(
|
messages.error(request, '{0} {1} har ikke råd, mangler {2} kr.'.format(
|
||||||
order.customer,
|
order.customer.first_name,
|
||||||
|
order.customer.last_name,
|
||||||
int(order_sum - profile.balance)))
|
int(order_sum - profile.balance)))
|
||||||
return HttpResponseRedirect( reverse('main.views.register') )
|
return HttpResponseRedirect( reverse('main.views.register') )
|
||||||
# empty order?
|
# empty order?
|
||||||
@@ -81,7 +84,11 @@ def register(request):
|
|||||||
|
|
||||||
orderlines.append(str(ol['amount']) + " " + str(product))
|
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') )
|
return HttpResponseRedirect( reverse('main.views.register') )
|
||||||
else:
|
else:
|
||||||
# TODO specify error(s)
|
# TODO specify error(s)
|
||||||
@@ -96,17 +103,33 @@ def register(request):
|
|||||||
def deposit(request):
|
def deposit(request):
|
||||||
users = User.objects.all().order_by('first_name','last_name')
|
users = User.objects.all().order_by('first_name','last_name')
|
||||||
users_js = users_format_js(users)
|
users_js = users_format_js(users)
|
||||||
|
allowed_users = utils.users_with_perm('add_transaction')
|
||||||
|
|
||||||
|
limit_deposits = settings.BBS_LIMIT_DEPOSITS
|
||||||
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = DepositForm(request.POST)
|
form = DepositForm(request.POST)
|
||||||
if form.is_valid():
|
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()
|
transaction = form.save()
|
||||||
profile = transaction.user.get_profile()
|
profile = transaction.user.get_profile()
|
||||||
profile.balance += transaction.amount
|
profile.balance += transaction.amount
|
||||||
profile.save()
|
profile.save()
|
||||||
|
|
||||||
messages.success(request, '{0} satte inn {1} kr. Ny saldo er {2}'.format(
|
messages.success(request, '{0} {1} satte inn {2} kr. Ny saldo er {3}'.format(
|
||||||
transaction.user,
|
transaction.user.first_name,
|
||||||
|
transaction.user.last_name,
|
||||||
transaction.amount,
|
transaction.amount,
|
||||||
profile.balance))
|
profile.balance))
|
||||||
return HttpResponseRedirect( reverse('main.views.deposit') )
|
return HttpResponseRedirect( reverse('main.views.deposit') )
|
||||||
|
|||||||
@@ -157,3 +157,6 @@ LOGIN_REDIRECT_URL = '/'
|
|||||||
|
|
||||||
SESSION_COOKIE_AGE = 900 # 15 minutes
|
SESSION_COOKIE_AGE = 900 # 15 minutes
|
||||||
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
|
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
|
||||||
|
|
||||||
|
BBS_SALDO_MAX = 600
|
||||||
|
BBS_LIMIT_DEPOSITS = False
|
||||||
@@ -15,6 +15,20 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
{% endif %}
|
{% 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">
|
<form id="order" method="post" class="form-stacked" autocomplete="off">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<section id="customer">
|
<section id="customer">
|
||||||
@@ -70,5 +84,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
{% endif %}
|
||||||
</section>
|
</section>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -5,12 +5,8 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{% if user.is_authenticated %}
|
|
||||||
<p class="alert alert-success">Du er logget ut.</p>
|
<p class="alert alert-success">Du er logget ut.</p>
|
||||||
<p>Vil du <a href="{% url home %}">logge inn igjen?</a></p>
|
<p>Vil du <a href="{% url home %}">logge inn igjen?</a></p>
|
||||||
{% else %}
|
|
||||||
<p>Du er allerede logget ut.</p>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
Reference in new issue
Block a user