Remove bank, Kfet and add BDA and BDS (need to fix activity, permission and registration)

This commit is contained in:
Jean-Baptiste Doderlein 2022-08-17 21:29:39 +00:00
parent 3a3e3be64c
commit 838bd2bb23
43 changed files with 128 additions and 639 deletions

View file

@ -74,20 +74,21 @@ class ValidationForm(forms.Form):
required=False,
)
bank = forms.CharField(
label=_("Bank"),
required=False,
)
join_bde = forms.BooleanField(
label=_("Join BDE Club"),
required=False,
initial=True,
initial=False,
)
# The user can join the Kfet club at the inscription
join_kfet = forms.BooleanField(
label=_("Join Kfet Club"),
join_bda = forms.BooleanField(
label=_("Join BDA Club"),
required=False,
initial=True,
initial=False,
)
join_bds = forms.BooleanField(
label=_("Join BDS Club"),
required=False,
initial=False,
)

View file

@ -82,10 +82,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
credit_amount.attr('disabled', true);
credit_amount.val('{{ total_fee }}');
let bank = $("#id_bank");
bank.attr('disabled', true);
bank.val('Société générale');
let join_bde = $("#id_join_bde");
join_bde.attr('disabled', true);

View file

@ -193,7 +193,6 @@ class TestValidateRegistration(TestCase):
credit_amount=4200,
last_name="TOTO",
first_name="Toto",
bank="Société générale",
join_bde=False,
join_kfet=False,
))
@ -206,7 +205,6 @@ class TestValidateRegistration(TestCase):
credit_amount=0,
last_name="TOTO",
first_name="Toto",
bank="Société générale",
join_bde=False,
join_kfet=True,
))
@ -219,7 +217,6 @@ class TestValidateRegistration(TestCase):
credit_amount=0,
last_name="TOTO",
first_name="Toto",
bank="J'ai pas d'argent",
join_bde=True,
join_kfet=True,
))
@ -232,7 +229,6 @@ class TestValidateRegistration(TestCase):
credit_amount=4000,
last_name="",
first_name="",
bank="",
join_bde=True,
join_kfet=True,
))
@ -248,7 +244,6 @@ class TestValidateRegistration(TestCase):
credit_amount=500,
last_name="TOTO",
first_name="Toto",
bank="Société générale",
join_bde=True,
join_kfet=False,
))
@ -273,7 +268,6 @@ class TestValidateRegistration(TestCase):
credit_amount=500,
last_name="TOTO",
first_name="Toto",
bank="Société générale",
join_bde=True,
join_kfet=False,
))
@ -307,16 +301,17 @@ class TestValidateRegistration(TestCase):
credit_amount=4000,
last_name="TOTO",
first_name="Toto",
bank="Société générale",
join_bde=True,
join_kfet=True,
join_bda=True,
join_bds=True
))
self.assertRedirects(response, self.user.profile.get_absolute_url(), 302, 200)
self.user.profile.refresh_from_db()
self.assertTrue(self.user.profile.registration_valid)
self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
self.assertTrue(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
self.assertTrue(Membership.objects.filter(club__name="BDA", user=self.user).exists())
self.assertTrue(Membership.objects.filter(club__name="BDS", user=self.user).exists())
self.assertEqual(Transaction.objects.filter(
Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)

View file

@ -225,9 +225,10 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
user = self.get_object()
fee = 0
bde = Club.objects.get(name="BDE")
fee += bde.membership_fee_paid if user.profile.paid else bde.membership_fee_unpaid
kfet = Club.objects.get(name="Kfet")
fee += kfet.membership_fee_paid if user.profile.paid else kfet.membership_fee_unpaid
bda = Club.objects.get(name="BDA")
bds = Club.objects.get(name="BDS")
for auto_club in [bde, bda, bds]:
fee += auto_club.membership_fee_paid if user.profile.paid else auto_club.membership_fee_unpaid
ctx["total_fee"] = "{:.02f}".format(fee / 100, )
return ctx
@ -256,30 +257,20 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
credit_amount = form.cleaned_data["credit_amount"]
last_name = form.cleaned_data["last_name"]
first_name = form.cleaned_data["first_name"]
bank = form.cleaned_data["bank"]
join_bde = form.cleaned_data["join_bde"]
join_kfet = form.cleaned_data["join_kfet"]
join_bda = form.cleaned_data["join_bda"]
join_bds = form.cleaned_data["join_bds"]
if not join_bde:
# This software belongs to the BDE.
form.add_error('join_bde', _("You must join the BDE."))
return super().form_invalid(form)
# Calculate required registration fee
fee = 0
bde = Club.objects.get(name="BDE")
bde_fee = bde.membership_fee_paid if user.profile.paid else bde.membership_fee_unpaid
# This is mandatory.
fee += bde_fee if join_bde else 0
kfet = Club.objects.get(name="Kfet")
kfet_fee = kfet.membership_fee_paid if user.profile.paid else kfet.membership_fee_unpaid
# Add extra fee for the full membership
fee += kfet_fee if join_kfet else 0
# If the bank pays, then we don't credit now. Treasurers will validate the transaction
# and credit the note later.
credit_type = credit_type
bda = Club.objects.get(name="BDA")
bds = Club.objects.get(name="BDS")
for auto_club, auto_join in zip([bde, bda, bds], [join_bde, join_bda, join_bds]):
bd_fee = auto_club.membership_fee_paid if user.profile.paid else auto_club.membership_fee_unpaid
fee += bd_fee if auto_join else 0
# If the user does not select any payment method, then no credit will be performed.
credit_amount = 0 if credit_type is None else credit_amount
@ -314,36 +305,23 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
reason="Crédit " + credit_type.special_type + " (Inscription)",
last_name=last_name,
first_name=first_name,
bank=bank,
valid=True,
)
for auto_club, auto_join, name in zip([bde, bda, bds], [join_bde, join_bda, join_bds], ["Adhérent BDE", "Adhérent BDA", "Adhérent BDS"]):
bd_fee = auto_club.membership_fee_paid if user.profile.paid else auto_club.membership_fee_unpaid
if join_bde:
# Create membership for the user to the BDE starting today
membership = Membership(
club=bde,
user=user,
fee=bde_fee,
)
membership.save()
membership.refresh_from_db()
membership.roles.add(Role.objects.get(name="Adhérent BDE"))
membership.save()
if auto_join:
# Create membership for the user to the BDEAS starting today
membership = Membership(
club=auto_club,
user=user,
fee=bd_fee,
)
membership.save()
membership.refresh_from_db()
membership.roles.add(Role.objects.get(name=name))
membership.save()
if join_kfet:
# Create membership for the user to the Kfet starting today
membership = Membership(
club=kfet,
user=user,
fee=kfet_fee,
)
membership.save()
membership.refresh_from_db()
membership.roles.add(Role.objects.get(name="Adhérent Kfet"))
membership.save()
return ret
def get_success_url(self):