Skip to content
Snippets Groups Projects
Commit d5f0d27e authored by Bidot-Naude Thomas's avatar Bidot-Naude Thomas
Browse files

Ajout de 3 filtres par etablissements

parent 94442a5d
No related branches found
No related tags found
7 merge requests!39Solve public permission files on AWS,!41Rectification Exportation excel sorties,!32Sortie thomas,!37Add context_sheet for visits,!33Sortie thomas (export CSV sorties),!38Add context sheet for visits V4,!35Notifications for Sec-Gen
......@@ -5,6 +5,8 @@ from django.contrib import admin
from dynamicforms.views import download_multiple_forms_entries
from dynamicforms.models import Form
from .models import Edition, Participation, Project, EditionForm
from django.contrib.admin import SimpleListFilter
from profiles.models import Student
@admin.register(Project)
......@@ -37,6 +39,25 @@ class OrganizersInline(admin.TabularInline):
extra = 0
class SchoolFilter(admin.SimpleListFilter):
title = 'établissement'
parameter_name = 'profiles__school'
def lookups(self, request, model_admin):
list_of_school = []
query = Student.objects.values_list(
"school", flat=True).distinct()
for school in query:
list_of_school.append((school, school))
return list_of_school
def queryset(self, request, queryset):
if self.value():
emails = Student.objects.filter(
school=self.value()).values_list("user__email", flat=True)
return queryset.filter(user__email__in=emails)
@ admin.register(Edition)
class EditionAdmin(admin.ModelAdmin):
"""Admin panel for editions."""
......@@ -86,6 +107,7 @@ class ParticipationAdmin(admin.ModelAdmin):
"""Participation admin panel."""
list_display = ('user', 'edition', 'submitted', 'state')
list_filter = ('edition', 'submitted', 'state',)
list_filter = (SchoolFilter,
'edition', 'submitted', 'state',)
readonly_fields = ('submitted',)
search_fields = ('user__first_name', 'user__last_name', 'user__email',)
......@@ -2,14 +2,35 @@
from django.contrib import admin
from .models import Registration
from profiles.models import Student
# Register your models here.
class SchoolFilter(admin.SimpleListFilter):
title = 'établissement'
parameter_name = 'profiles__school'
def lookups(self, request, model_admin):
list_of_school = []
query = Student.objects.values_list(
"school", flat=True).distinct()
for school in query:
list_of_school.append((school, school))
return list_of_school
def queryset(self, request, queryset):
if self.value():
emails = Student.objects.filter(
school=self.value()).values_list("user__email", flat=True)
return queryset.filter(email__in=emails)
@admin.register(Registration)
class RegistrationAdmin(admin.ModelAdmin):
"""Admin panel for registrations."""
list_display = ('last_name', 'first_name', 'submitted')
readonly_fields = ('submitted',)
list_filter = ('submitted', 'validated')
list_filter = (SchoolFilter,
'submitted', 'validated')
......@@ -8,10 +8,30 @@ from django.utils.safestring import mark_safe
from django.http import HttpResponse
import csv
from .models import Participation, Place, Visit
from profiles.models import Student
# Register your models here.
class SchoolFilter(admin.SimpleListFilter):
title = 'établissement'
parameter_name = 'profiles__school'
def lookups(self, request, model_admin):
list_of_school = []
query = Student.objects.values_list(
"school", flat=True).distinct()
for school in query:
list_of_school.append((school, school))
return list_of_school
def queryset(self, request, queryset):
if self.value():
emails = Student.objects.filter(
school=self.value()).values_list("user__email", flat=True)
return queryset.filter(user__email__in=emails)
class RegistrationsOpenFilter(admin.SimpleListFilter):
"""Custom filter to filter visits by their registration openness.
......@@ -115,7 +135,7 @@ class ParticipationAdmin(admin.ModelAdmin):
"""Admin panel for visit participations."""
list_display = ('submitted', 'visit', 'user_link', 'accepted', 'present')
list_filter = ('submitted', 'accepted', 'present')
list_filter = (SchoolFilter, 'submitted', 'accepted', 'present')
actions = [accept_selected_participations, reject_selected_participations]
def user_link(self, participation: Participation):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment