mirror of https://gitlab.crans.org/bde/nk20
Compare commits
No commits in common. "72dcc931365f22c2271cc2becca1418aa8d3fd67" and "ad19b64b3ac051c3ec1d76620835a2bf5f679e58" have entirely different histories.
72dcc93136
...
ad19b64b3a
|
@ -77,6 +77,8 @@ class ClubForm(forms.ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class MembershipForm(forms.ModelForm):
|
class MembershipForm(forms.ModelForm):
|
||||||
|
roles = forms.ModelMultipleChoiceField(queryset=Role.objects.filter(weirole=None).all())
|
||||||
|
|
||||||
soge = forms.BooleanField(
|
soge = forms.BooleanField(
|
||||||
label=_("Inscription paid by Société Générale"),
|
label=_("Inscription paid by Société Générale"),
|
||||||
required=False,
|
required=False,
|
||||||
|
@ -115,7 +117,7 @@ class MembershipForm(forms.ModelForm):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Membership
|
model = Membership
|
||||||
fields = ('user', 'date_start')
|
fields = ('user', 'roles', 'date_start')
|
||||||
# Le champ d'utilisateur est remplacé par un champ d'auto-complétion.
|
# Le champ d'utilisateur est remplacé par un champ d'auto-complétion.
|
||||||
# Quand des lettres sont tapées, une requête est envoyée sur l'API d'auto-complétion
|
# Quand des lettres sont tapées, une requête est envoyée sur l'API d'auto-complétion
|
||||||
# et récupère les noms d'utilisateur valides
|
# et récupère les noms d'utilisateur valides
|
||||||
|
@ -131,27 +133,3 @@ class MembershipForm(forms.ModelForm):
|
||||||
),
|
),
|
||||||
'date_start': DatePickerInput(),
|
'date_start': DatePickerInput(),
|
||||||
}
|
}
|
||||||
|
|
||||||
class MembershipRolesForm(forms.ModelForm):
|
|
||||||
user = forms.ModelChoiceField(
|
|
||||||
queryset=User.objects,
|
|
||||||
label=_("User"),
|
|
||||||
disabled=True,
|
|
||||||
widget=Autocomplete(
|
|
||||||
User,
|
|
||||||
attrs={
|
|
||||||
'api_url': '/api/user/',
|
|
||||||
'name_field': 'username',
|
|
||||||
'placeholder': 'Nom ...',
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
roles = forms.ModelMultipleChoiceField(
|
|
||||||
queryset=Role.objects.filter(weirole=None).all(),
|
|
||||||
label=_("Roles"),
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = Membership
|
|
||||||
fields = ('user', 'roles')
|
|
|
@ -27,7 +27,7 @@ from permission.backends import PermissionBackend
|
||||||
from permission.models import Role
|
from permission.models import Role
|
||||||
from permission.views import ProtectQuerysetMixin
|
from permission.views import ProtectQuerysetMixin
|
||||||
|
|
||||||
from .forms import ProfileForm, ClubForm, MembershipForm, CustomAuthenticationForm, UserForm, MembershipRolesForm
|
from .forms import ProfileForm, ClubForm, MembershipForm, CustomAuthenticationForm, UserForm
|
||||||
from .models import Club, Membership
|
from .models import Club, Membership
|
||||||
from .tables import ClubTable, UserTable, MembershipTable
|
from .tables import ClubTable, UserTable, MembershipTable
|
||||||
|
|
||||||
|
@ -435,6 +435,9 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
|
||||||
club = Club.objects.filter(PermissionBackend.filter_queryset(self.request.user, Club, "view"))\
|
club = Club.objects.filter(PermissionBackend.filter_queryset(self.request.user, Club, "view"))\
|
||||||
.get(pk=self.kwargs["club_pk"], weiclub=None)
|
.get(pk=self.kwargs["club_pk"], weiclub=None)
|
||||||
form.fields['credit_amount'].initial = club.membership_fee_paid
|
form.fields['credit_amount'].initial = club.membership_fee_paid
|
||||||
|
form.fields['roles'].queryset = Role.objects.filter(Q(weirole__isnull=not hasattr(club, 'weiclub'))
|
||||||
|
& (Q(for_club__isnull=True) | Q(for_club=club))).all()
|
||||||
|
form.fields['roles'].initial = Role.objects.filter(name="Membre de club").all()
|
||||||
|
|
||||||
# If the concerned club is the BDE, then we add the option that Société générale pays the membership.
|
# If the concerned club is the BDE, then we add the option that Société générale pays the membership.
|
||||||
if club.name != "BDE":
|
if club.name != "BDE":
|
||||||
|
@ -453,6 +456,9 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
|
||||||
user = old_membership.user
|
user = old_membership.user
|
||||||
form.fields['user'].initial = user
|
form.fields['user'].initial = user
|
||||||
form.fields['user'].disabled = True
|
form.fields['user'].disabled = True
|
||||||
|
form.fields['roles'].queryset = Role.objects.filter(Q(weirole__isnull=not hasattr(club, 'weiclub'))
|
||||||
|
& (Q(for_club__isnull=True) | Q(for_club=club))).all()
|
||||||
|
form.fields['roles'].initial = old_membership.roles.all()
|
||||||
form.fields['date_start'].initial = old_membership.date_end + timedelta(days=1)
|
form.fields['date_start'].initial = old_membership.date_end + timedelta(days=1)
|
||||||
form.fields['credit_amount'].initial = club.membership_fee_paid if user.profile.paid \
|
form.fields['credit_amount'].initial = club.membership_fee_paid if user.profile.paid \
|
||||||
else club.membership_fee_unpaid
|
else club.membership_fee_unpaid
|
||||||
|
@ -568,7 +574,7 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
|
||||||
form.add_error('bank', _("This field is required."))
|
form.add_error('bank', _("This field is required."))
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
|
|
||||||
transaction = SpecialTransaction(
|
SpecialTransaction.objects.create(
|
||||||
source=credit_type,
|
source=credit_type,
|
||||||
destination=user.note,
|
destination=user.note,
|
||||||
quantity=1,
|
quantity=1,
|
||||||
|
@ -579,16 +585,9 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
|
||||||
bank=bank,
|
bank=bank,
|
||||||
valid=True,
|
valid=True,
|
||||||
)
|
)
|
||||||
transaction._force_save = True
|
|
||||||
transaction.save()
|
|
||||||
|
|
||||||
ret = super().form_valid(form)
|
ret = super().form_valid(form)
|
||||||
|
|
||||||
member_role = Role.objects.filter(name="Membre de club").all()
|
|
||||||
form.instance.roles.set(member_role)
|
|
||||||
form.instance._force_save = True
|
|
||||||
form.instance.save()
|
|
||||||
|
|
||||||
# If Société générale pays, then we assume that this is the BDE membership, and we auto-renew the
|
# If Société générale pays, then we assume that this is the BDE membership, and we auto-renew the
|
||||||
# Kfet membership.
|
# Kfet membership.
|
||||||
if soge:
|
if soge:
|
||||||
|
@ -610,7 +609,6 @@ class ClubAddMemberView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
|
||||||
date_start=old_membership.get().date_end + timedelta(days=1)
|
date_start=old_membership.get().date_end + timedelta(days=1)
|
||||||
if old_membership.exists() else form.instance.date_start,
|
if old_membership.exists() else form.instance.date_start,
|
||||||
)
|
)
|
||||||
membership._force_save = True
|
|
||||||
membership._soge = True
|
membership._soge = True
|
||||||
membership.save()
|
membership.save()
|
||||||
membership.refresh_from_db()
|
membership.refresh_from_db()
|
||||||
|
@ -631,7 +629,7 @@ class ClubManageRolesView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
|
||||||
Manage the roles of a user in a club
|
Manage the roles of a user in a club
|
||||||
"""
|
"""
|
||||||
model = Membership
|
model = Membership
|
||||||
form_class = MembershipRolesForm
|
form_class = MembershipForm
|
||||||
template_name = 'member/add_members.html'
|
template_name = 'member/add_members.html'
|
||||||
extra_context = {"title": _("Manage roles of an user in the club")}
|
extra_context = {"title": _("Manage roles of an user in the club")}
|
||||||
|
|
||||||
|
@ -643,6 +641,14 @@ class ClubManageRolesView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
|
||||||
|
|
||||||
def get_form(self, form_class=None):
|
def get_form(self, form_class=None):
|
||||||
form = super().get_form(form_class)
|
form = super().get_form(form_class)
|
||||||
|
# We don't create a full membership, we only update one field
|
||||||
|
form.fields['user'].disabled = True
|
||||||
|
del form.fields['date_start']
|
||||||
|
del form.fields['credit_type']
|
||||||
|
del form.fields['credit_amount']
|
||||||
|
del form.fields['last_name']
|
||||||
|
del form.fields['first_name']
|
||||||
|
del form.fields['bank']
|
||||||
|
|
||||||
club = self.object.club
|
club = self.object.club
|
||||||
form.fields['roles'].queryset = Role.objects.filter(Q(weirole__isnull=not hasattr(club, 'weiclub'))
|
form.fields['roles'].queryset = Role.objects.filter(Q(weirole__isnull=not hasattr(club, 'weiclub'))
|
||||||
|
|
|
@ -2372,7 +2372,6 @@
|
||||||
22,
|
22,
|
||||||
47,
|
47,
|
||||||
49,
|
49,
|
||||||
50,
|
|
||||||
140
|
140
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue