On peut filtrer les imports récurrents
This commit is contained in:
parent
720a187116
commit
0872af5144
@ -477,3 +477,17 @@ class DuplicatedEventsFilter(django_filters.FilterSet):
|
|||||||
|
|
||||||
def fixed_qs(self, queryset, name, value):
|
def fixed_qs(self, queryset, name, value):
|
||||||
return DuplicatedEvents.not_fixed_qs(queryset, 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"]
|
||||||
|
|
||||||
|
@ -6,8 +6,11 @@
|
|||||||
{% load utils_extra %}
|
{% load utils_extra %}
|
||||||
{% load rimports_extra %}
|
{% load rimports_extra %}
|
||||||
{% load cat_extra %}
|
{% load cat_extra %}
|
||||||
|
{% load static %}
|
||||||
|
|
||||||
{% block entete_header %}
|
{% block entete_header %}
|
||||||
{% css_categories %}
|
{% css_categories %}
|
||||||
|
<script src="{% static 'choicejs/choices.min.js' %}"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block configurer-bouton %}{% endblock %}
|
{% block configurer-bouton %}{% endblock %}
|
||||||
|
|
||||||
@ -31,7 +34,14 @@
|
|||||||
<a href="{% url 'add_rimport'%}" role="button">Ajouter {% picto_from_name "plus-circle" %}</a>
|
<a href="{% url 'add_rimport'%}" role="button">Ajouter {% picto_from_name "plus-circle" %}</a>
|
||||||
</div>
|
</div>
|
||||||
<h1>Importations récurrentes {% if status %}<em>{{ status }}</em>{% endif %}</h1>
|
<h1>Importations récurrentes {% if status %}<em>{{ status }}</em>{% endif %}</h1>
|
||||||
{% include "agenda_culturel/rimports-info-inc.html" with all=0 %}
|
<p>Résumé : {% include "agenda_culturel/rimports-info-inc.html" with all=0 %}</p>
|
||||||
|
|
||||||
|
<h2>Filtrer</h2>
|
||||||
|
<form method="get" class="form django-form">
|
||||||
|
{{ filter.form.as_div }}<br />
|
||||||
|
<button type="submit">Filtrer</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<table role="grid">
|
<table role="grid">
|
||||||
@ -87,4 +97,18 @@
|
|||||||
{% include "agenda_culturel/side-nav.html" with current="rimports" %}
|
{% include "agenda_culturel/side-nav.html" with current="rimports" %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const imports = document.querySelector('#id_name');
|
||||||
|
const choices_imports = new Choices(imports, {
|
||||||
|
placeholderValue: 'Chercher un import par son nom',
|
||||||
|
allowHTML: true,
|
||||||
|
delimiter: ',',
|
||||||
|
removeItemButton: true,
|
||||||
|
shouldSort: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -46,6 +46,7 @@ from .filters import (
|
|||||||
SimpleSearchEventFilter,
|
SimpleSearchEventFilter,
|
||||||
SearchEventFilter,
|
SearchEventFilter,
|
||||||
DuplicatedEventsFilter,
|
DuplicatedEventsFilter,
|
||||||
|
RecurrentImportFilter,
|
||||||
)
|
)
|
||||||
|
|
||||||
from .models import (
|
from .models import (
|
||||||
@ -1057,33 +1058,35 @@ def cancel_import(request, pk):
|
|||||||
@login_required(login_url="/accounts/login/")
|
@login_required(login_url="/accounts/login/")
|
||||||
@permission_required("agenda_culturel.view_recurrentimport")
|
@permission_required("agenda_culturel.view_recurrentimport")
|
||||||
def recurrent_imports(request, status=None):
|
def recurrent_imports(request, status=None):
|
||||||
|
|
||||||
newest = BatchImportation.objects.filter(recurrentImport=OuterRef("pk")).order_by(
|
newest = BatchImportation.objects.filter(recurrentImport=OuterRef("pk")).order_by(
|
||||||
"-created_date"
|
"-created_date")
|
||||||
)
|
|
||||||
events = RecurrentImport.objects.annotate(
|
|
||||||
last_run_status=Subquery(newest.values("status")[:1])
|
|
||||||
)
|
|
||||||
|
|
||||||
if status is None:
|
qs = RecurrentImport.objects.all(). \
|
||||||
events_selected = events.all()
|
annotate(last_run_status=Subquery(newest.values("status")[:1])). \
|
||||||
else:
|
order_by("-pk")
|
||||||
events_selected = events.filter(last_run_status=status)
|
|
||||||
events_selected = events_selected.order_by("-pk")
|
|
||||||
|
|
||||||
paginator = Paginator(events_selected, 10)
|
nb_failed = (qs
|
||||||
page = request.GET.get("page")
|
|
||||||
|
|
||||||
nb_failed = (events
|
|
||||||
.filter(last_run_status=BatchImportation.STATUS.FAILED)
|
.filter(last_run_status=BatchImportation.STATUS.FAILED)
|
||||||
.count())
|
.count())
|
||||||
nb_canceled = (events
|
nb_canceled = (qs
|
||||||
.filter(last_run_status=BatchImportation.STATUS.CANCELED)
|
.filter(last_run_status=BatchImportation.STATUS.CANCELED)
|
||||||
.count())
|
.count())
|
||||||
nb_running = (events
|
nb_running = (qs
|
||||||
.filter(last_run_status=BatchImportation.STATUS.RUNNING)
|
.filter(last_run_status=BatchImportation.STATUS.RUNNING)
|
||||||
.count())
|
.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:
|
try:
|
||||||
response = paginator.page(page)
|
response = paginator.page(page)
|
||||||
@ -1093,7 +1096,9 @@ def recurrent_imports(request, status=None):
|
|||||||
response = paginator.page(paginator.num_pages)
|
response = paginator.page(paginator.num_pages)
|
||||||
|
|
||||||
return render(
|
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}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user