mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	[WEI] New UI is working
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
This commit is contained in:
		| @@ -12,7 +12,7 @@ | ||||
|         <div class="card-body"> | ||||
|             {% render_table bus_repartition_table %} | ||||
|             <hr> | ||||
|             <a href="#" class="btn btn-block btn-success">{% trans "Start attribution!" %}</a> | ||||
|             <a href="{% url 'wei:wei_bus_1A_next' pk=club.pk %}" class="btn btn-block btn-success">{% trans "Start attribution!" %}</a> | ||||
|             <hr> | ||||
|             {% render_table table %} | ||||
|         </div> | ||||
|   | ||||
| @@ -49,7 +49,7 @@ | ||||
|             <hr> | ||||
|  | ||||
|             {% for bus, score in survey.ordered_buses %} | ||||
|                 <button class="btn btn-{% if bus.pk == survey.information.selected_bus_pk %}success{% else %}light{% endif %}"> | ||||
|                 <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 }} | ||||
|                 </button> | ||||
|             {% endfor %} | ||||
| @@ -58,3 +58,31 @@ | ||||
|         </div> | ||||
|     </div> | ||||
| {% endblock %} | ||||
|  | ||||
| {% block extrajavascript %} | ||||
|     <script> | ||||
|         function choose_bus(bus_id) { | ||||
|             let valid_buses = [{% for bus, score in survey.ordered_buses %}{{ bus.pk }}, {% endfor %}]; | ||||
|             if (valid_buses.indexOf(bus_id) === -1) { | ||||
|                 console.log("Invalid chosen bus") | ||||
|                 return | ||||
|             } | ||||
|  | ||||
|             $.ajax({ | ||||
|                 url: "/api/wei/membership/{{ object.membership.id }}/", | ||||
|                 type: "PATCH", | ||||
|                 dataType: "json", | ||||
|                 headers: { | ||||
|                     "X-CSRFTOKEN": CSRF_TOKEN | ||||
|                 }, | ||||
|                 data: { | ||||
|                     bus: bus_id, | ||||
|                 } | ||||
|             }).done(function () { | ||||
|                 window.location = "{% url 'wei:wei_bus_1A_next' pk=object.wei.pk %}" | ||||
|             }).fail(function (xhr) { | ||||
|                 errMsg(xhr.responseJSON) | ||||
|             }) | ||||
|         } | ||||
|     </script> | ||||
| {% endblock %} | ||||
|   | ||||
| @@ -6,7 +6,7 @@ from django.urls import path | ||||
| from .views import CurrentWEIDetailView, WEI1AListView, WEIListView, WEICreateView, WEIDetailView, WEIUpdateView, \ | ||||
|     WEIRegistrationsView, WEIMembershipsView, MemberListRenderView, \ | ||||
|     BusCreateView, BusManageView, BusUpdateView, BusTeamCreateView, BusTeamManageView, BusTeamUpdateView, \ | ||||
|     WEIAttributeBus1AView, WEIRegister1AView, WEIRegister2AView, WEIUpdateRegistrationView, \ | ||||
|     WEIAttributeBus1AView, WEIAttributeBus1ANextView, WEIRegister1AView, WEIRegister2AView, WEIUpdateRegistrationView, \ | ||||
|     WEIDeleteRegistrationView, WEIValidateRegistrationView, WEISurveyView, WEISurveyEndView, WEIClosedView | ||||
|  | ||||
| app_name = 'wei' | ||||
| @@ -41,4 +41,5 @@ urlpatterns = [ | ||||
|     path('survey/<int:pk>/end/', WEISurveyEndView.as_view(), name="wei_survey_end"), | ||||
|     path('detail/<int:pk>/closed/', WEIClosedView.as_view(), name="wei_closed"), | ||||
|     path('bus-1A/<int:pk>/', WEIAttributeBus1AView.as_view(), name="wei_bus_1A"), | ||||
|     path('bus-1A/next/<int:pk>/', WEIAttributeBus1ANextView.as_view(), name="wei_bus_1A_next"), | ||||
| ] | ||||
|   | ||||
| @@ -13,7 +13,7 @@ from django.core.exceptions import PermissionDenied | ||||
| from django.db import transaction | ||||
| from django.db.models import Q, Count | ||||
| from django.db.models.functions.text import Lower | ||||
| from django.http import HttpResponse | ||||
| from django.http import HttpResponse, Http404 | ||||
| from django.shortcuts import redirect | ||||
| from django.template.loader import render_to_string | ||||
| from django.urls import reverse_lazy | ||||
| @@ -1175,7 +1175,7 @@ class WEI1AListView(LoginRequiredMixin, ProtectQuerysetMixin, SingleTableView): | ||||
|     def get_queryset(self, filter_permissions=True, **kwargs): | ||||
|         qs = super().get_queryset(filter_permissions, **kwargs) | ||||
|         qs = qs.filter(first_year=True, membership__isnull=False) | ||||
|         qs = qs.order_by('membership__bus') | ||||
|         qs = qs.order_by('-membership__bus') | ||||
|         return qs | ||||
|  | ||||
|     def get_context_data(self, **kwargs): | ||||
| @@ -1200,3 +1200,15 @@ class WEIAttributeBus1AView(ProtectQuerysetMixin, DetailView): | ||||
|         context['club'] = self.object.wei | ||||
|         context['survey'] = CurrentSurvey(self.object) | ||||
|         return context | ||||
|  | ||||
|  | ||||
| class WEIAttributeBus1ANextView(LoginRequiredMixin, RedirectView): | ||||
|     def get_redirect_url(self, *args, **kwargs): | ||||
|         wei = WEIClub.objects.filter(pk=self.kwargs['pk']) | ||||
|         if not wei.exists(): | ||||
|             raise Http404 | ||||
|         wei = wei.get() | ||||
|         qs = WEIRegistration.objects.filter(wei=wei, membership__isnull=False, membership__bus__isnull=True) | ||||
|         if qs.exists(): | ||||
|             return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk, )) | ||||
|         return reverse_lazy('wei_1A_list', args=(wei.pk, )) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user