mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-18 12:13:24 +00:00
Merge branch 'lsacienne/refilling_only_for_ae_member' into 'master'
Adds a Restriction for refilling As it was asked by many members of the AE. I added a restriction applied to the barmens. In fact, we oftenly loose money due to the physic refilling. The goal with this change is to only allow **the members of the AE** to refill with physic money. See merge request ae-utbm/Sith!303
This commit is contained in:
commit
2422f60898
@ -611,6 +611,7 @@ Welcome to the wiki page!
|
||||
mde.products.add(cons)
|
||||
mde.products.add(dcons)
|
||||
mde.sellers.add(skia)
|
||||
|
||||
mde.save()
|
||||
|
||||
eboutic = Counter.objects.filter(name="Eboutic").first()
|
||||
@ -935,6 +936,7 @@ Welcome to the wiki page!
|
||||
# Add barman to counter
|
||||
c = Counter.objects.get(id=2)
|
||||
c.sellers.add(User.objects.get(pk=krophil.pk))
|
||||
mde.sellers.add(sli)
|
||||
c.save()
|
||||
|
||||
# Create an election
|
||||
|
@ -22,6 +22,7 @@
|
||||
#
|
||||
#
|
||||
|
||||
from sith.settings import SITH_MAIN_CLUB
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils import timezone
|
||||
@ -39,7 +40,7 @@ import os
|
||||
import base64
|
||||
import datetime
|
||||
|
||||
from club.models import Club
|
||||
from club.models import Club, Membership
|
||||
from accounting.models import CurrencyField
|
||||
from core.models import Group, User, Notification
|
||||
from subscription.models import Subscription
|
||||
@ -342,6 +343,14 @@ class Counter(models.Model):
|
||||
"""
|
||||
return [b.id for b in self.get_barmen_list()]
|
||||
|
||||
def can_refill(self):
|
||||
is_ae_member = False
|
||||
ae = Club.objects.get(unix_name=SITH_MAIN_CLUB["unix_name"])
|
||||
for barman in self.get_barmen_list():
|
||||
if ae.get_membership_for(barman):
|
||||
is_ae_member = True
|
||||
return is_ae_member
|
||||
|
||||
|
||||
class Refilling(models.Model):
|
||||
"""
|
||||
|
@ -107,7 +107,7 @@
|
||||
<input type="submit" value="{% trans %}Cancel{% endtrans %}" />
|
||||
</form>
|
||||
</div>
|
||||
{% if counter.type == 'BAR' %}
|
||||
{% if (counter.type == 'BAR' and barmens_can_refill) %}
|
||||
<h5>{% trans %}Refilling{% endtrans %}</h5>
|
||||
<div>
|
||||
<form method="post" action="{{ url('counter:click', counter_id=counter.id, user_id=customer.user.id) }}">
|
||||
|
@ -36,7 +36,10 @@ class CounterTest(TestCase):
|
||||
def setUp(self):
|
||||
call_command("populate")
|
||||
self.skia = User.objects.filter(username="skia").first()
|
||||
self.sli = User.objects.filter(username="sli").first()
|
||||
self.krophil = User.objects.filter(username="krophil").first()
|
||||
self.mde = Counter.objects.filter(name="MDE").first()
|
||||
self.foyer = Counter.objects.get(id=2)
|
||||
|
||||
def test_full_click(self):
|
||||
response = self.client.post(
|
||||
@ -93,6 +96,51 @@ class CounterTest(TestCase):
|
||||
in str(response_content)
|
||||
)
|
||||
|
||||
response = self.client.post(
|
||||
reverse("counter:login", kwargs={"counter_id": self.mde.id}),
|
||||
{"username": self.sli.username, "password": "plop"},
|
||||
)
|
||||
|
||||
response = self.client.post(
|
||||
location,
|
||||
{
|
||||
"action": "refill",
|
||||
"amount": "5",
|
||||
"payment_method": "CASH",
|
||||
"bank": "OTHER",
|
||||
},
|
||||
)
|
||||
|
||||
response = self.client.post(
|
||||
reverse("counter:login", kwargs={"counter_id": self.foyer.id}),
|
||||
{"username": self.krophil.username, "password": "plop"},
|
||||
)
|
||||
|
||||
response = self.client.get(
|
||||
reverse("counter:details", kwargs={"counter_id": self.foyer.id})
|
||||
)
|
||||
|
||||
counter_token = re.search(
|
||||
r'name="counter_token" value="([^"]*)"', str(response.content)
|
||||
).group(1)
|
||||
|
||||
response = self.client.post(
|
||||
reverse("counter:details", kwargs={"counter_id": self.foyer.id}),
|
||||
{"code": "4000k", "counter_token": counter_token},
|
||||
)
|
||||
location = response.get("location")
|
||||
|
||||
response = self.client.post(
|
||||
location,
|
||||
{
|
||||
"action": "refill",
|
||||
"amount": "5",
|
||||
"payment_method": "CASH",
|
||||
"bank": "OTHER",
|
||||
},
|
||||
)
|
||||
self.assertTrue(response.status_code == 403)
|
||||
|
||||
|
||||
class CounterStatsTest(TestCase):
|
||||
def setUp(self):
|
||||
|
@ -725,7 +725,7 @@ class CounterClick(CounterTabsMixin, CanViewMixin, DetailView):
|
||||
|
||||
def refill(self, request):
|
||||
"""Refill the customer's account"""
|
||||
if self.get_object().type == "BAR":
|
||||
if self.get_object().type == "BAR" and self.object.can_refill():
|
||||
form = RefillForm(request.POST)
|
||||
if form.is_valid():
|
||||
form.instance.counter = self.object
|
||||
@ -751,6 +751,7 @@ class CounterClick(CounterTabsMixin, CanViewMixin, DetailView):
|
||||
kwargs["basket_total"] = self.sum_basket(self.request)
|
||||
kwargs["refill_form"] = self.refill_form or RefillForm()
|
||||
kwargs["student_card_max_uid_size"] = StudentCard.UID_SIZE
|
||||
kwargs["barmens_can_refill"] = self.object.can_refill()
|
||||
return kwargs
|
||||
|
||||
|
||||
|
@ -45,7 +45,7 @@ Par défaut, la base de données du site de prod contient des données nécessai
|
||||
* **comptable** -> administrateur comptabilité
|
||||
* **guy** -> utilisateur non cotisant et sans groupe
|
||||
* **rbatsbak** -> utilisateur non cotisant et sans groupe
|
||||
* **sli** -> cotisant avec carte étudiante attachée au compte
|
||||
* **sli** -> cotisant avec carte étudiante attachée au compte, barmen MDE
|
||||
* **krophil** -> cotisant avec des plein d'écocups, barmen foyer
|
||||
* **comunity** -> administrateur communication
|
||||
* **tutu** -> administrateur pédagogie
|
||||
|
Loading…
Reference in New Issue
Block a user