diff --git a/src/agenda_culturel/filters.py b/src/agenda_culturel/filters.py
index 646d75a..42e7fad 100644
--- a/src/agenda_culturel/filters.py
+++ b/src/agenda_culturel/filters.py
@@ -477,3 +477,17 @@ class DuplicatedEventsFilter(django_filters.FilterSet):
def fixed_qs(self, queryset, name, value):
return DuplicatedEvents.not_fixed_qs(queryset, value)
+
+
+class RecurrentImportFilter(django_filters.FilterSet):
+
+ name = django_filters.ModelMultipleChoiceFilter(
+ label="Filtrer par nom",
+ field_name="name",
+ queryset=RecurrentImport.objects.all().order_by("name__unaccent")
+ )
+
+ class Meta:
+ model = RecurrentImport
+ fields = ["name"]
+
diff --git a/src/agenda_culturel/templates/agenda_culturel/rimports.html b/src/agenda_culturel/templates/agenda_culturel/rimports.html
index c386d12..196617a 100644
--- a/src/agenda_culturel/templates/agenda_culturel/rimports.html
+++ b/src/agenda_culturel/templates/agenda_culturel/rimports.html
@@ -6,8 +6,11 @@
{% load utils_extra %}
{% load rimports_extra %}
{% load cat_extra %}
+{% load static %}
+
{% block entete_header %}
{% css_categories %}
+
{% endblock %}
{% block configurer-bouton %}{% endblock %}
@@ -31,7 +34,14 @@
Ajouter {% picto_from_name "plus-circle" %}
Importations récurrentes {% if status %}{{ status }}{% endif %}
- {% include "agenda_culturel/rimports-info-inc.html" with all=0 %}
+ Résumé : {% include "agenda_culturel/rimports-info-inc.html" with all=0 %}
+
+ Filtrer
+
+
@@ -87,4 +97,18 @@
{% include "agenda_culturel/side-nav.html" with current="rimports" %}
+
+
+
{% endblock %}
\ No newline at end of file
diff --git a/src/agenda_culturel/views.py b/src/agenda_culturel/views.py
index 580968a..c942960 100644
--- a/src/agenda_culturel/views.py
+++ b/src/agenda_culturel/views.py
@@ -46,6 +46,7 @@ from .filters import (
SimpleSearchEventFilter,
SearchEventFilter,
DuplicatedEventsFilter,
+ RecurrentImportFilter,
)
from .models import (
@@ -1057,33 +1058,35 @@ def cancel_import(request, pk):
@login_required(login_url="/accounts/login/")
@permission_required("agenda_culturel.view_recurrentimport")
def recurrent_imports(request, status=None):
+
newest = BatchImportation.objects.filter(recurrentImport=OuterRef("pk")).order_by(
- "-created_date"
- )
- events = RecurrentImport.objects.annotate(
- last_run_status=Subquery(newest.values("status")[:1])
- )
+ "-created_date")
- if status is None:
- events_selected = events.all()
- else:
- events_selected = events.filter(last_run_status=status)
- events_selected = events_selected.order_by("-pk")
+ qs = RecurrentImport.objects.all(). \
+ annotate(last_run_status=Subquery(newest.values("status")[:1])). \
+ order_by("-pk")
- paginator = Paginator(events_selected, 10)
- page = request.GET.get("page")
-
- nb_failed = (events
+ nb_failed = (qs
.filter(last_run_status=BatchImportation.STATUS.FAILED)
.count())
- nb_canceled = (events
+ nb_canceled = (qs
.filter(last_run_status=BatchImportation.STATUS.CANCELED)
.count())
- nb_running = (events
+ nb_running = (qs
.filter(last_run_status=BatchImportation.STATUS.RUNNING)
.count())
- nb_all = events.count()
+ nb_all = qs.count()
+
+
+ if not status is None:
+ qs = qs.filter(last_run_status=status)
+
+ filter = RecurrentImportFilter(request.GET, queryset=qs)
+
+ paginator = PaginatorFilter(filter, 10, request)
+
+ page = request.GET.get("page")
try:
response = paginator.page(page)
@@ -1093,7 +1096,9 @@ def recurrent_imports(request, status=None):
response = paginator.page(paginator.num_pages)
return render(
- request, "agenda_culturel/rimports.html", {"paginator_filter": response, "nb_all": nb_all, "nb_failed": nb_failed, "nb_canceled": nb_canceled, "nb_running": nb_running, "status": status}
+ request, "agenda_culturel/rimports.html", {"paginator_filter": response,
+ "filter": filter,
+ "nb_all": nb_all, "nb_failed": nb_failed, "nb_canceled": nb_canceled, "nb_running": nb_running, "status": status}
)