mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-02-24 17:11:18 +00:00
Compare commits
5 Commits
944bb127e2
...
e68afc7d0a
Author | SHA1 | Date | |
---|---|---|---|
e68afc7d0a | |||
c6e3b54f94 | |||
4e3c32eb5e | |||
ef118c2445 | |||
600ba15faa |
@ -5,6 +5,6 @@ from .registration import WEIForm, WEIRegistrationForm, WEIMembership1AForm, WEI
|
|||||||
from .surveys import WEISurvey, WEISurveyInformation, WEISurveyAlgorithm, CurrentSurvey
|
from .surveys import WEISurvey, WEISurveyInformation, WEISurveyAlgorithm, CurrentSurvey
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'WEIForm', 'WEIRegistrationForm', 'WEIMembesrhip1AForm', 'WEIMembershipForm', 'BusForm', 'BusTeamForm',
|
'WEIForm', 'WEIRegistrationForm', 'WEIMembership1AForm', 'WEIMembershipForm', 'BusForm', 'BusTeamForm',
|
||||||
'WEISurvey', 'WEISurveyInformation', 'WEISurveyAlgorithm', 'CurrentSurvey',
|
'WEISurvey', 'WEISurveyInformation', 'WEISurveyAlgorithm', 'CurrentSurvey',
|
||||||
]
|
]
|
||||||
|
@ -7,6 +7,7 @@ from datetime import date
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.db.models import Q
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from phonenumber_field.modelfields import PhoneNumberField
|
from phonenumber_field.modelfields import PhoneNumberField
|
||||||
from member.models import Club, Membership
|
from member.models import Club, Membership
|
||||||
@ -98,6 +99,13 @@ class Bus(models.Model):
|
|||||||
"""
|
"""
|
||||||
self.information_json = json.dumps(information, indent=2)
|
self.information_json = json.dumps(information, indent=2)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def suggested_first_year(self):
|
||||||
|
registrations = WEIRegistration.objects.filter(Q(membership__isnull=True) | Q(membership__bus__isnull=True),
|
||||||
|
first_year=True, wei=self.wei)
|
||||||
|
registrations = [r for r in registrations if 'selected_bus_pk' in r.information]
|
||||||
|
return sum(1 for r in registrations if r.information['selected_bus_pk'] == self.pk)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -190,13 +190,12 @@ class WEIRegistration1ATable(tables.Table):
|
|||||||
attrs = {
|
attrs = {
|
||||||
'class': 'table table-condensed table-striped table-hover'
|
'class': 'table table-condensed table-striped table-hover'
|
||||||
}
|
}
|
||||||
model = WEIMembership
|
model = WEIRegistration
|
||||||
template_name = 'django_tables2/bootstrap4.html'
|
template_name = 'django_tables2/bootstrap4.html'
|
||||||
fields = ('user', 'user__last_name', 'user__first_name', 'gender',
|
fields = ('user', 'user__last_name', 'user__first_name', 'gender',
|
||||||
'user__profile__department', 'preferred_bus', 'membership__bus', )
|
'user__profile__department', 'preferred_bus', 'membership__bus', )
|
||||||
row_attrs = {
|
row_attrs = {
|
||||||
'class': 'table-row',
|
'class': lambda record: '' if 'selected_bus_pk' in record.information else 'bg-danger',
|
||||||
'id': lambda record: "row-" + str(record.pk),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
{% for bus, score in survey.ordered_buses %}
|
{% for bus, score in survey.ordered_buses %}
|
||||||
<button class="btn btn-{% if bus.pk == survey.information.selected_bus_pk %}success{% else %}light{% endif %}" onclick="choose_bus({{ bus.pk }})">
|
<button class="btn btn-{% if bus.pk == survey.information.selected_bus_pk %}success{% else %}light{% endif %}" onclick="choose_bus({{ bus.pk }})">
|
||||||
{{ bus }} ({{ score|floatformat:2 }}) : {{ bus.memberships.count }} / {{ bus.size }}
|
{{ bus }} ({{ score|floatformat:2 }}) : {{ bus.memberships.count }}+{{ bus.suggested_first_year }} / {{ bus.size }}
|
||||||
</button>
|
</button>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
\usepackage{fontspec}
|
\usepackage{fontspec}
|
||||||
\usepackage[margin=1.5cm]{geometry}
|
\usepackage[margin=1.5cm]{geometry}
|
||||||
|
\usepackage{longtable}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
\begin{center}
|
\begin{center}
|
||||||
@ -19,7 +20,7 @@
|
|||||||
|
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\footnotesize
|
\footnotesize
|
||||||
\begin{tabular}{ccccccccc}
|
\begin{longtable}{ccccccccc}
|
||||||
\textbf{Nom} & \textbf{Prénom} & \textbf{Date de naissance} & \textbf{Genre} & \textbf{Section}
|
\textbf{Nom} & \textbf{Prénom} & \textbf{Date de naissance} & \textbf{Genre} & \textbf{Section}
|
||||||
& \textbf{Bus} & \textbf{Équipe} & \textbf{Rôles} \\
|
& \textbf{Bus} & \textbf{Équipe} & \textbf{Rôles} \\
|
||||||
{% for membership in memberships %}
|
{% for membership in memberships %}
|
||||||
@ -27,20 +28,20 @@
|
|||||||
& {{ membership.registration.get_gender_display|safe }} & {{ membership.user.profile.section_generated|safe }} & {{ membership.bus.name|safe }}
|
& {{ membership.registration.get_gender_display|safe }} & {{ membership.user.profile.section_generated|safe }} & {{ membership.bus.name|safe }}
|
||||||
& {% if membership.team %}{{ membership.team.name|safe }}{% else %}--{% endif %} & {{ membership.roles.first|safe }} \\
|
& {% if membership.team %}{{ membership.team.name|safe }}{% else %}--{% endif %} & {{ membership.roles.first|safe }} \\
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
\end{tabular}
|
\end{longtable}
|
||||||
\end{center}
|
\end{center}
|
||||||
|
|
||||||
\footnotesize
|
\footnotesize
|
||||||
Section = Année à l'ENS + code du département
|
Section = Année à l'ENS + code du département
|
||||||
|
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{tabular}{ccccccccc}
|
\begin{longtable}{ccccccccc}
|
||||||
\textbf{Code} & A0 & A1 & A2 & A'2 & A''2 & A3 & B1234 & B1 \\
|
\textbf{Code} & A0 & A1 & A2 & A'2 & A''2 & A3 & B1234 & B1 \\
|
||||||
\textbf{Département} & Informatique & Maths & Physique & Physique appliquée & Chimie & Biologie & SAPHIRE & Mécanique \\
|
\textbf{Département} & Informatique & Maths & Physique & Physique appliquée & Chimie & Biologie & SAPHIRE & Mécanique \\
|
||||||
\hline
|
\hline
|
||||||
\textbf{Code} & B2 & B3 & B4 & C & D2 & D3 & E & EXT \\
|
\textbf{Code} & B2 & B3 & B4 & C & D2 & D3 & E & EXT \\
|
||||||
\textbf{Département} & Génie civil & Génie mécanique & EEA & Design & Éco-gestion & Sciences sociales & Anglais & Extérieur
|
\textbf{Département} & Génie civil & Génie mécanique & EEA & Design & Éco-gestion & Sciences sociales & Anglais & Extérieur
|
||||||
\end{tabular}
|
\end{longtable}
|
||||||
\end{center}
|
\end{center}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -720,7 +720,7 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update
|
|||||||
del membership_form.fields["first_name"]
|
del membership_form.fields["first_name"]
|
||||||
del membership_form.fields["last_name"]
|
del membership_form.fields["last_name"]
|
||||||
del membership_form.fields["bank"]
|
del membership_form.fields["bank"]
|
||||||
for field_name, field in list(membership_form.fields.items()):
|
for field_name, _field in list(membership_form.fields.items()):
|
||||||
if not PermissionBackend.check_perm(
|
if not PermissionBackend.check_perm(
|
||||||
self.request, "wei.change_weimembership_" + field_name, self.object.membership):
|
self.request, "wei.change_weimembership_" + field_name, self.object.membership):
|
||||||
del membership_form.fields[field_name]
|
del membership_form.fields[field_name]
|
||||||
@ -1195,6 +1195,12 @@ class WEIAttributeBus1AView(ProtectQuerysetMixin, DetailView):
|
|||||||
qs = qs.filter(first_year=True)
|
qs = qs.filter(first_year=True)
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
|
def dispatch(self, request, *args, **kwargs):
|
||||||
|
obj = self.get_object()
|
||||||
|
if 'selected_bus_pk' not in obj.information:
|
||||||
|
return redirect(reverse_lazy('wei:wei_survey', args=(obj.pk,)))
|
||||||
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context['club'] = self.object.wei
|
context['club'] = self.object.wei
|
||||||
@ -1209,6 +1215,7 @@ class WEIAttributeBus1ANextView(LoginRequiredMixin, RedirectView):
|
|||||||
raise Http404
|
raise Http404
|
||||||
wei = wei.get()
|
wei = wei.get()
|
||||||
qs = WEIRegistration.objects.filter(wei=wei, membership__isnull=False, membership__bus__isnull=True)
|
qs = WEIRegistration.objects.filter(wei=wei, membership__isnull=False, membership__bus__isnull=True)
|
||||||
|
qs = qs.filter(information_json__contains='selected_bus_pk') # not perfect, but works...
|
||||||
if qs.exists():
|
if qs.exists():
|
||||||
return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk, ))
|
return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk, ))
|
||||||
return reverse_lazy('wei_1A_list', args=(wei.pk, ))
|
return reverse_lazy('wei:wei_1A_list', args=(wei.pk, ))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user