mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 01:12:08 +01:00 
			
		
		
		
	Fix #126 (join_bda)
This commit is contained in:
		@@ -151,7 +151,7 @@ class ClubForm(forms.ModelForm):
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        model = Club
 | 
			
		||||
        fields = '__all__'
 | 
			
		||||
        exclude = ("add_registration_form",)
 | 
			
		||||
        widgets = {
 | 
			
		||||
            "membership_fee_paid": AmountInput(),
 | 
			
		||||
            "membership_fee_unpaid": AmountInput(),
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								apps/member/migrations/0012_club_add_registration_form.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								apps/member/migrations/0012_club_add_registration_form.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
# Generated by Django 2.2.28 on 2024-07-15 09:24
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('member', '0011_profile_vss_charter_read'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='club',
 | 
			
		||||
            name='add_registration_form',
 | 
			
		||||
            field=models.BooleanField(default=False, verbose_name='add to registration form'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -259,6 +259,11 @@ class Club(models.Model):
 | 
			
		||||
        help_text=_('Maximal date of a membership, after which members must renew it.'),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    add_registration_form = models.BooleanField(
 | 
			
		||||
        verbose_name=_("add to registration form"),
 | 
			
		||||
        default=False,
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        verbose_name = _("club")
 | 
			
		||||
        verbose_name_plural = _("clubs")
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ from django import forms
 | 
			
		||||
from django.contrib.auth.forms import UserCreationForm
 | 
			
		||||
from django.contrib.auth.models import User
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
# from member.models import Club
 | 
			
		||||
from note.models import NoteSpecial, Alias
 | 
			
		||||
from note_kfet.inputs import AmountInput
 | 
			
		||||
 | 
			
		||||
@@ -115,12 +114,3 @@ class ValidationForm(forms.Form):
 | 
			
		||||
        required=False,
 | 
			
		||||
        initial=True,
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
#     If the bda exists
 | 
			
		||||
#     if Club.objects.filter(name__iexact="bda").exists():
 | 
			
		||||
#         The user can join the bda club at the inscription
 | 
			
		||||
#         join_bda = forms.BooleanField(
 | 
			
		||||
#             label=_("Join BDA Club"),
 | 
			
		||||
#             required=False,
 | 
			
		||||
#             initial=True,
 | 
			
		||||
#         )
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
# Copyright (C) 2018-2024 by BDE ENS Paris-Saclay
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
from django import forms
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
from django.contrib.auth.mixins import LoginRequiredMixin
 | 
			
		||||
from django.contrib.auth.models import User
 | 
			
		||||
@@ -238,9 +239,8 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
 | 
			
		||||
        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
 | 
			
		||||
        if Club.objects.filter(name__iexact="BDA").exists():
 | 
			
		||||
            bda = Club.objects.get(name__iexact="BDA")
 | 
			
		||||
            fee += bda.membership_fee_paid if user.profile.paid else bda.membership_fee_unpaid
 | 
			
		||||
        for club in Club.objects.filter(add_registration_form=True):
 | 
			
		||||
            fee += club.membership_fee_paid if user.profile.paid else club.membership_fee_unpaid
 | 
			
		||||
        ctx["total_fee"] = "{:.02f}".format(fee / 100, )
 | 
			
		||||
 | 
			
		||||
#        ctx["declare_soge_account"] = SogeCredit.objects.filter(user=user).exists()
 | 
			
		||||
@@ -249,6 +249,16 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
 | 
			
		||||
 | 
			
		||||
    def get_form(self, form_class=None):
 | 
			
		||||
        form = super().get_form(form_class)
 | 
			
		||||
 | 
			
		||||
        # add clubs that are in registration form
 | 
			
		||||
        for club in Club.objects.filter(add_registration_form=True).order_by("name"):
 | 
			
		||||
            form_join_club = forms.BooleanField(
 | 
			
		||||
                label=_("Join %(club)s Club") % {'club': club.name},
 | 
			
		||||
                required=False,
 | 
			
		||||
                initial=False,
 | 
			
		||||
            )
 | 
			
		||||
            form.fields.update({f"join_{club.id}": form_join_club})
 | 
			
		||||
 | 
			
		||||
        user = self.get_object()
 | 
			
		||||
        form.fields["last_name"].initial = user.last_name
 | 
			
		||||
        form.fields["first_name"].initial = user.first_name
 | 
			
		||||
@@ -266,11 +276,6 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
 | 
			
		||||
            form.add_error(None, _("An alias with a similar name already exists."))
 | 
			
		||||
            return self.form_invalid(form)
 | 
			
		||||
 | 
			
		||||
        # Check if BDA exist to propose membership at regisration
 | 
			
		||||
        bda_exists = False
 | 
			
		||||
        if Club.objects.filter(name__iexact="BDA").exists():
 | 
			
		||||
            bda_exists = True
 | 
			
		||||
 | 
			
		||||
        # Get form data
 | 
			
		||||
#        soge = form.cleaned_data["soge"]
 | 
			
		||||
        credit_type = form.cleaned_data["credit_type"]
 | 
			
		||||
@@ -280,8 +285,9 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
 | 
			
		||||
        bank = form.cleaned_data["bank"]
 | 
			
		||||
        join_bde = form.cleaned_data["join_bde"]
 | 
			
		||||
        join_kfet = form.cleaned_data["join_kfet"]
 | 
			
		||||
        if bda_exists:
 | 
			
		||||
            join_bda = form.cleaned_data["join_bda"]
 | 
			
		||||
 | 
			
		||||
        clubs_registration = Club.objects.filter(add_registration_form=True).order_by("name")
 | 
			
		||||
        join_clubs = [(club, form.cleaned_data[f"join_{club.id}"]) for club in clubs_registration]
 | 
			
		||||
 | 
			
		||||
#        if soge:
 | 
			
		||||
#            # If Société Générale pays the inscription, the user automatically joins the two clubs.
 | 
			
		||||
@@ -303,11 +309,12 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
 | 
			
		||||
        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 bda_exists:
 | 
			
		||||
            bda = Club.objects.get(name__iexact="BDA")
 | 
			
		||||
            bda_fee = bda.membership_fee_paid if user.profile.paid else bda.membership_fee_unpaid
 | 
			
		||||
            # Add extra fee for the bda membership
 | 
			
		||||
            fee += bda_fee if join_bda else 0
 | 
			
		||||
        clubs_fee = dict()
 | 
			
		||||
        for club, join_club in join_clubs:
 | 
			
		||||
            club_fee = club.membership_fee_paid if user.profile.paid else club.membership_fee_unpaid
 | 
			
		||||
            # Add extra fee for the club membership
 | 
			
		||||
            clubs_fee[club] = club_fee
 | 
			
		||||
            fee += club_fee if join_club else 0
 | 
			
		||||
 | 
			
		||||
#        # If the bank pays, then we don't credit now. Treasurers will validate the transaction
 | 
			
		||||
#        # and credit the note later.
 | 
			
		||||
@@ -387,12 +394,13 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
 | 
			
		||||
            membership.roles.add(Role.objects.get(name="Adhérent Kfet"))
 | 
			
		||||
            membership.save()
 | 
			
		||||
 | 
			
		||||
        if bda_exists and join_bda:
 | 
			
		||||
        for club, join_club in join_clubs:
 | 
			
		||||
            if join_club:
 | 
			
		||||
                # Create membership for the user to the BDA starting today
 | 
			
		||||
                membership = Membership(
 | 
			
		||||
                club=bda,
 | 
			
		||||
                    club=club,
 | 
			
		||||
                    user=user,
 | 
			
		||||
                fee=bda_fee,
 | 
			
		||||
                    fee=clubs_fee[club],
 | 
			
		||||
                )
 | 
			
		||||
                membership.save()
 | 
			
		||||
                membership.refresh_from_db()
 | 
			
		||||
 
 | 
			
		||||
@@ -114,7 +114,7 @@ msgstr "Lieu où l'activité est organisée, par exemple la Kfet."
 | 
			
		||||
msgid "type"
 | 
			
		||||
msgstr "type"
 | 
			
		||||
 | 
			
		||||
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:313
 | 
			
		||||
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:318
 | 
			
		||||
#: apps/note/models/notes.py:148 apps/treasury/models.py:293
 | 
			
		||||
#: apps/wei/models.py:171 apps/wei/templates/wei/attribute_bus_1A.html:13
 | 
			
		||||
#: apps/wei/templates/wei/survey.html:15
 | 
			
		||||
@@ -507,11 +507,11 @@ msgstr "cotisation pour adhérer (normalien·ne élève)"
 | 
			
		||||
msgid "membership fee (unpaid students)"
 | 
			
		||||
msgstr "cotisation pour adhérer (normalien·ne étudiant·e)"
 | 
			
		||||
 | 
			
		||||
#: apps/member/admin.py:65 apps/member/models.py:325
 | 
			
		||||
#: apps/member/admin.py:65 apps/member/models.py:330
 | 
			
		||||
msgid "roles"
 | 
			
		||||
msgstr "rôles"
 | 
			
		||||
 | 
			
		||||
#: apps/member/admin.py:66 apps/member/models.py:339
 | 
			
		||||
#: apps/member/admin.py:66 apps/member/models.py:344
 | 
			
		||||
msgid "fee"
 | 
			
		||||
msgstr "cotisation"
 | 
			
		||||
 | 
			
		||||
@@ -563,7 +563,7 @@ msgid "This image cannot be loaded."
 | 
			
		||||
msgstr "Cette image ne peut pas être chargée."
 | 
			
		||||
 | 
			
		||||
#: apps/member/forms.py:148 apps/member/views.py:102
 | 
			
		||||
#: apps/registration/forms.py:34 apps/registration/views.py:266
 | 
			
		||||
#: apps/registration/forms.py:34 apps/registration/views.py:276
 | 
			
		||||
msgid "An alias with a similar name already exists."
 | 
			
		||||
msgstr "Un alias avec un nom similaire existe déjà."
 | 
			
		||||
 | 
			
		||||
@@ -852,46 +852,50 @@ msgstr ""
 | 
			
		||||
"Date maximale d'une fin d'adhésion, après laquelle les adhérent·e·s doivent la "
 | 
			
		||||
"renouveler."
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:263 apps/member/models.py:319
 | 
			
		||||
#: apps/member/models.py:263
 | 
			
		||||
msgid "add to registration form"
 | 
			
		||||
msgstr "ajouter au formulaire d'inscription"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:268 apps/member/models.py:324
 | 
			
		||||
#: apps/note/models/notes.py:176
 | 
			
		||||
msgid "club"
 | 
			
		||||
msgstr "club"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:264
 | 
			
		||||
#: apps/member/models.py:269
 | 
			
		||||
msgid "clubs"
 | 
			
		||||
msgstr "clubs"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:330
 | 
			
		||||
#: apps/member/models.py:335
 | 
			
		||||
msgid "membership starts on"
 | 
			
		||||
msgstr "l'adhésion commence le"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:334
 | 
			
		||||
#: apps/member/models.py:339
 | 
			
		||||
msgid "membership ends on"
 | 
			
		||||
msgstr "l'adhésion finit le"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:343 apps/note/models/transactions.py:385
 | 
			
		||||
#: apps/member/models.py:348 apps/note/models/transactions.py:385
 | 
			
		||||
msgid "membership"
 | 
			
		||||
msgstr "adhésion"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:344
 | 
			
		||||
#: apps/member/models.py:349
 | 
			
		||||
msgid "memberships"
 | 
			
		||||
msgstr "adhésions"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:348
 | 
			
		||||
#: apps/member/models.py:353
 | 
			
		||||
#, python-brace-format
 | 
			
		||||
msgid "Membership of {user} for the club {club}"
 | 
			
		||||
msgstr "Adhésion de {user} pour le club {club}"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:367
 | 
			
		||||
#: apps/member/models.py:372
 | 
			
		||||
#, python-brace-format
 | 
			
		||||
msgid "The role {role} does not apply to the club {club}."
 | 
			
		||||
msgstr "Le rôle {role} ne s'applique pas au club {club}."
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:376 apps/member/views.py:712
 | 
			
		||||
#: apps/member/models.py:381 apps/member/views.py:712
 | 
			
		||||
msgid "User is already a member of the club"
 | 
			
		||||
msgstr "L'utilisateur·ice est déjà membre du club"
 | 
			
		||||
 | 
			
		||||
#: apps/member/models.py:388 apps/member/views.py:721
 | 
			
		||||
#: apps/member/models.py:393 apps/member/views.py:721
 | 
			
		||||
msgid "User is not a member of the parent club"
 | 
			
		||||
msgstr "L'utilisateur·ice n'est pas membre du club parent"
 | 
			
		||||
 | 
			
		||||
@@ -2183,18 +2187,23 @@ msgstr "Utilisateur·ice·s en attente d'inscription"
 | 
			
		||||
msgid "Registration detail"
 | 
			
		||||
msgstr "Détails de l'inscription"
 | 
			
		||||
 | 
			
		||||
#: apps/registration/views.py:293
 | 
			
		||||
#: apps/registration/views.py:256
 | 
			
		||||
#, python-format
 | 
			
		||||
msgid "Join %(club)s Club"
 | 
			
		||||
msgstr "Adhérer au club %(club)s"
 | 
			
		||||
 | 
			
		||||
#: apps/registration/views.py:299
 | 
			
		||||
msgid "You must join the BDE."
 | 
			
		||||
msgstr "Vous devez adhérer au BDE."
 | 
			
		||||
 | 
			
		||||
#: apps/registration/views.py:323
 | 
			
		||||
#: apps/registration/views.py:330
 | 
			
		||||
msgid ""
 | 
			
		||||
"The entered amount is not enough for the memberships, should be at least {}"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Le montant crédité est trop faible pour adhérer, il doit être au minimum de "
 | 
			
		||||
"{}"
 | 
			
		||||
 | 
			
		||||
#: apps/registration/views.py:417
 | 
			
		||||
#: apps/registration/views.py:425
 | 
			
		||||
msgid "Invalidate pre-registration"
 | 
			
		||||
msgstr "Invalider l'inscription"
 | 
			
		||||
 | 
			
		||||
@@ -3620,9 +3629,6 @@ msgstr ""
 | 
			
		||||
"d'adhésion. Vous devez également valider votre adresse email en suivant le "
 | 
			
		||||
"lien que vous avez reçu."
 | 
			
		||||
 | 
			
		||||
#~ msgid "Join BDA Club"
 | 
			
		||||
#~ msgstr "Adhérer au club BDA"
 | 
			
		||||
 | 
			
		||||
#, fuzzy
 | 
			
		||||
#~| msgid "People having you as a friend"
 | 
			
		||||
#~ msgid "You already have that person as a friend"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user