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 ...@@ -5,6 +5,8 @@ from django.contrib import admin
from dynamicforms.views import download_multiple_forms_entries from dynamicforms.views import download_multiple_forms_entries
from dynamicforms.models import Form from dynamicforms.models import Form
from .models import Edition, Participation, Project, EditionForm from .models import Edition, Participation, Project, EditionForm
from django.contrib.admin import SimpleListFilter
from profiles.models import Student
@admin.register(Project) @admin.register(Project)
...@@ -37,6 +39,25 @@ class OrganizersInline(admin.TabularInline): ...@@ -37,6 +39,25 @@ class OrganizersInline(admin.TabularInline):
extra = 0 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) @ admin.register(Edition)
class EditionAdmin(admin.ModelAdmin): class EditionAdmin(admin.ModelAdmin):
"""Admin panel for editions.""" """Admin panel for editions."""
...@@ -86,6 +107,7 @@ class ParticipationAdmin(admin.ModelAdmin): ...@@ -86,6 +107,7 @@ class ParticipationAdmin(admin.ModelAdmin):
"""Participation admin panel.""" """Participation admin panel."""
list_display = ('user', 'edition', 'submitted', 'state') list_display = ('user', 'edition', 'submitted', 'state')
list_filter = ('edition', 'submitted', 'state',) list_filter = (SchoolFilter,
'edition', 'submitted', 'state',)
readonly_fields = ('submitted',) readonly_fields = ('submitted',)
search_fields = ('user__first_name', 'user__last_name', 'user__email',) search_fields = ('user__first_name', 'user__last_name', 'user__email',)
...@@ -2,14 +2,35 @@ ...@@ -2,14 +2,35 @@
from django.contrib import admin from django.contrib import admin
from .models import Registration from .models import Registration
from profiles.models import Student
# Register your models here. # 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) @admin.register(Registration)
class RegistrationAdmin(admin.ModelAdmin): class RegistrationAdmin(admin.ModelAdmin):
"""Admin panel for registrations.""" """Admin panel for registrations."""
list_display = ('last_name', 'first_name', 'submitted') list_display = ('last_name', 'first_name', 'submitted')
readonly_fields = ('submitted',) readonly_fields = ('submitted',)
list_filter = ('submitted', 'validated') list_filter = (SchoolFilter,
'submitted', 'validated')
...@@ -8,10 +8,30 @@ from django.utils.safestring import mark_safe ...@@ -8,10 +8,30 @@ from django.utils.safestring import mark_safe
from django.http import HttpResponse from django.http import HttpResponse
import csv import csv
from .models import Participation, Place, Visit from .models import Participation, Place, Visit
from profiles.models import Student
# Register your models here. # 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): class RegistrationsOpenFilter(admin.SimpleListFilter):
"""Custom filter to filter visits by their registration openness. """Custom filter to filter visits by their registration openness.
...@@ -115,7 +135,7 @@ class ParticipationAdmin(admin.ModelAdmin): ...@@ -115,7 +135,7 @@ class ParticipationAdmin(admin.ModelAdmin):
"""Admin panel for visit participations.""" """Admin panel for visit participations."""
list_display = ('submitted', 'visit', 'user_link', 'accepted', 'present') 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] actions = [accept_selected_participations, reject_selected_participations]
def user_link(self, participation: Participation): 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