1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-06-21 01:48:21 +02:00

Validation form (only front)

This commit is contained in:
Yohann D'ANELLO
2020-04-14 03:41:26 +02:00
parent 0bf958dbd6
commit 36b26e0baa
10 changed files with 225 additions and 19 deletions

View File

@ -1,2 +1,13 @@
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from django.contrib import admin
from .models import WEIClub, WEIRegistration, WEIRole, Bus, BusTeam
admin.site.register(WEIClub)
admin.site.register(WEIRegistration)
admin.site.register(WEIRole)
admin.site.register(Bus)
admin.site.register(BusTeam)

View File

@ -6,7 +6,7 @@ from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
from note_kfet.inputs import AmountInput, DatePickerInput, Autocomplete, ColorWidget
from .models import WEIClub, WEIRegistration, Bus, BusTeam
from .models import WEIClub, WEIRegistration, Bus, BusTeam, WEIMembership, WEIRole
class WEIForm(forms.ModelForm):
@ -45,6 +45,30 @@ class WEIRegistrationForm(forms.ModelForm):
}
class WEIMembershipForm(forms.ModelForm):
roles = forms.ModelMultipleChoiceField(queryset=WEIRole.objects)
class Meta:
model = WEIMembership
fields = ('roles', 'bus', 'team',)
widgets = {
"bus": Autocomplete(
Bus,
attrs={
'api_url': '/api/wei/bus/',
'placeholder': 'Bus ...',
}
),
"team": Autocomplete(
BusTeam,
attrs={
'api_url': '/api/wei/team/',
'placeholder': 'Équipe ...',
}
),
}
class BusForm(forms.ModelForm):
class Meta:
model = Bus

View File

@ -33,6 +33,10 @@ class WEIClub(Club):
"""
return
class Meta:
verbose_name = _("WEI")
verbose_name_plural = _("WEI")
class Bus(models.Model):
"""
@ -60,6 +64,8 @@ class Bus(models.Model):
return self.name
class Meta:
verbose_name = _("Bus")
verbose_name_plural = _("Buses")
unique_together = ('wei', 'name',)
@ -102,14 +108,10 @@ class WEIRole(Role):
"""
A Role for the WEI can be bus chief, team chief, free electron, ...
"""
bus = models.ForeignKey(
Bus,
on_delete=models.CASCADE,
null=True,
default=None,
related_name="roles",
verbose_name=_("bus"),
)
class Meta:
verbose_name = _("WEI Role")
verbose_name_plural = _("WEI Roles")
class WEIRegistration(models.Model):
@ -262,3 +264,7 @@ class WEIMembership(Membership):
related_name="membership",
verbose_name=_("WEI registration"),
)
class Meta:
verbose_name = _("WEI membership")
verbose_name_plural = _("WEI memberships")

View File

@ -48,7 +48,7 @@ class WEIRegistrationTable(tables.Table):
}
)
validate = tables.LinkColumn(
'wei:wei_detail',
'wei:validate_registration',
args=[A('pk')],
verbose_name=_("Validate"),
text=_("Validate"),

View File

@ -5,7 +5,7 @@ from django.urls import path
from .views import WEIListView, WEICreateView, WEIDetailView, WEIUpdateView,\
BusCreateView, BusManageView, BusUpdateView, BusTeamCreateView, BusTeamManageView, BusTeamUpdateView,\
WEIRegisterView, WEIUpdateRegistrationView
WEIRegisterView, WEIUpdateRegistrationView, WEIValidateRegistrationView
app_name = 'wei'
@ -22,4 +22,5 @@ urlpatterns = [
path('update-bus-team/<int:pk>/', BusTeamUpdateView.as_view(), name="update_bus_team"),
path('register/<int:wei_pk>/', WEIRegisterView.as_view(), name="wei_register"),
path('edit-registration/<int:pk>/', WEIUpdateRegistrationView.as_view(), name="wei_update_registration"),
path('validate/<int:pk>/', WEIValidateRegistrationView.as_view(), name="validate_registration"),
]

View File

@ -16,7 +16,7 @@ from permission.backends import PermissionBackend
from permission.views import ProtectQuerysetMixin
from .models import WEIClub, WEIRegistration, WEIMembership, Bus, BusTeam
from .forms import WEIForm, WEIRegistrationForm, BusForm, BusTeamForm
from .forms import WEIForm, WEIRegistrationForm, BusForm, BusTeamForm, WEIMembershipForm
from .tables import WEITable, WEIRegistrationTable, BusTable, BusTeamTable, WEIMembershipTable
@ -257,6 +257,7 @@ class WEIRegisterView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.fields["user"].initial = self.request.user
del form.fields["payment_method"]
return form
def form_valid(self, form):
@ -278,8 +279,32 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update
def get_form(self, form_class=None):
form = super().get_form(form_class)
del form.fields["user"]
del form.fields["payment_method"]
return form
def get_success_url(self):
self.object.refresh_from_db()
return reverse_lazy("wei:wei_detail", kwargs={"pk": self.object.wei.pk})
class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
"""
Validate WEI Registration
"""
model = WEIMembership
form_class = WEIMembershipForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
registration = WEIRegistration.objects.get(pk=self.kwargs["pk"])
context["registration"] = registration
context["club"] = registration.wei
context["fee"] = registration.wei.membership_fee_paid if registration.user.profile.paid \
else registration.wei.membership_fee_unpaid
return context
def get_success_url(self):
self.object.refresh_from_db()
return reverse_lazy("wei:wei_detail", kwargs={"pk": self.object.wei.pk})