On visualise les événements importés mais hors imports récurrents
This commit is contained in:
parent
7648d1d794
commit
ce7576e9ae
@ -2,7 +2,7 @@ import django_filters
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django import forms
|
||||
from django.contrib.postgres.search import SearchQuery, SearchHeadline
|
||||
from django.db.models import Count, Q
|
||||
from django.db.models import Count, Q, F
|
||||
from datetime import date, timedelta
|
||||
from urllib.parse import urlparse, parse_qs, urlencode
|
||||
|
||||
@ -326,6 +326,18 @@ class EventFilterAdmin(django_filters.FilterSet):
|
||||
method="filter_by_representative",
|
||||
widget=forms.CheckboxSelectMultiple)
|
||||
|
||||
pure_import = django_filters.MultipleChoiceFilter(
|
||||
label=_("Pure import"),
|
||||
choices=[(True, _("Yes")), (False, _("No"))],
|
||||
method="filter_by_pure_import",
|
||||
widget=forms.CheckboxSelectMultiple)
|
||||
|
||||
in_recurrent_import = django_filters.MultipleChoiceFilter(
|
||||
label=_("In recurrent import"),
|
||||
choices=[(True, _("Yes")), (False, _("No"))],
|
||||
method="filter_by_in_recurrent_import",
|
||||
widget=forms.CheckboxSelectMultiple)
|
||||
|
||||
import_sources = django_filters.ModelChoiceFilter(
|
||||
label=_("Imported from"),
|
||||
method="filter_by_source",
|
||||
@ -336,6 +348,32 @@ class EventFilterAdmin(django_filters.FilterSet):
|
||||
src = RecurrentImport.objects.get(pk=value.pk).source
|
||||
return queryset.filter(import_sources__contains=[src])
|
||||
|
||||
def filter_by_in_recurrent_import(self, queryset, name, value):
|
||||
if value is None or len(value) != 1:
|
||||
return queryset
|
||||
else:
|
||||
srcs = RecurrentImport.objects.all().values_list("source")
|
||||
q = Q(import_sources__overlap=srcs)
|
||||
if value[0] == 'True':
|
||||
print(q)
|
||||
return queryset.filter(q)
|
||||
else:
|
||||
return queryset.exclude(q)
|
||||
|
||||
def filter_by_pure_import(self, queryset, name, value):
|
||||
if value is None or len(value) != 1:
|
||||
return queryset
|
||||
else:
|
||||
q = (Q(import_sources__isnull=False) &
|
||||
(Q(modified_date__isnull=True) |
|
||||
Q(modified_date__lte=F('imported_date'))))
|
||||
if value[0] == 'True':
|
||||
print(q)
|
||||
return queryset.filter(q)
|
||||
else:
|
||||
return queryset.exclude(q)
|
||||
|
||||
|
||||
def filter_by_representative(self, queryset, name, value):
|
||||
if value is None or len(value) != 1:
|
||||
return queryset
|
||||
@ -343,7 +381,7 @@ class EventFilterAdmin(django_filters.FilterSet):
|
||||
q = (Q(other_versions__isnull=True) |
|
||||
Q(other_versions__representative=F('pk')) |
|
||||
Q(other_versions__representative__isnull=True))
|
||||
if value[0] == True:
|
||||
if value[0] == 'True':
|
||||
return queryset.filter(q)
|
||||
else:
|
||||
return queryset.exclude(q)
|
||||
|
@ -2,13 +2,13 @@
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Jean-Marie Favreau <jeanmarie.favreau@free.fr>, 2023.
|
||||
#
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: agenda_culturel\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-02-07 11:55+0100\n"
|
||||
"POT-Creation-Date: 2025-02-07 16:00+0100\n"
|
||||
"PO-Revision-Date: 2023-10-29 14:16+0000\n"
|
||||
"Last-Translator: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n"
|
||||
"Language-Team: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n"
|
||||
@ -98,49 +98,59 @@ msgstr "Choisir une localité"
|
||||
msgid "Representative version"
|
||||
msgstr "Version représentative"
|
||||
|
||||
#: agenda_culturel/filters.py:325 agenda_culturel/filters.py:395
|
||||
#: agenda_culturel/filters.py:325 agenda_culturel/filters.py:331
|
||||
#: agenda_culturel/filters.py:337 agenda_culturel/filters.py:433
|
||||
msgid "Yes"
|
||||
msgstr "Oui"
|
||||
|
||||
#: agenda_culturel/filters.py:325 agenda_culturel/filters.py:395
|
||||
#: agenda_culturel/filters.py:325 agenda_culturel/filters.py:331
|
||||
#: agenda_culturel/filters.py:337 agenda_culturel/filters.py:433
|
||||
msgid "No"
|
||||
msgstr "Non"
|
||||
|
||||
#: agenda_culturel/filters.py:330
|
||||
msgid "Pure import"
|
||||
msgstr "Événement importé"
|
||||
|
||||
#: agenda_culturel/filters.py:336
|
||||
msgid "In recurrent import"
|
||||
msgstr "Inclut dans un import récurrent"
|
||||
|
||||
#: agenda_culturel/filters.py:342
|
||||
msgid "Imported from"
|
||||
msgstr "Importé depuis"
|
||||
|
||||
#: agenda_culturel/filters.py:359 agenda_culturel/models.py:648
|
||||
#: agenda_culturel/filters.py:397 agenda_culturel/models.py:648
|
||||
#: agenda_culturel/models.py:2272
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: agenda_culturel/filters.py:360 agenda_culturel/models.py:2058
|
||||
#: agenda_culturel/filters.py:398 agenda_culturel/models.py:2058
|
||||
msgid "Closed"
|
||||
msgstr "Fermé"
|
||||
|
||||
#: agenda_culturel/filters.py:360
|
||||
#: agenda_culturel/filters.py:398
|
||||
msgid "Open"
|
||||
msgstr "Ouvert"
|
||||
|
||||
#: agenda_culturel/filters.py:364 agenda_culturel/filters.py:365
|
||||
#: agenda_culturel/filters.py:402 agenda_culturel/filters.py:403
|
||||
#: agenda_culturel/models.py:2052
|
||||
msgid "Spam"
|
||||
msgstr "Spam"
|
||||
|
||||
#: agenda_culturel/filters.py:365
|
||||
#: agenda_culturel/filters.py:403
|
||||
msgid "Non spam"
|
||||
msgstr "Non spam"
|
||||
|
||||
#: agenda_culturel/filters.py:370 agenda_culturel/models.py:2073
|
||||
#: agenda_culturel/filters.py:408 agenda_culturel/models.py:2073
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#: agenda_culturel/filters.py:382
|
||||
#: agenda_culturel/filters.py:420
|
||||
msgid "Search"
|
||||
msgstr "Rechercher"
|
||||
|
||||
#: agenda_culturel/filters.py:394
|
||||
#: agenda_culturel/filters.py:432
|
||||
msgid "In the past"
|
||||
msgstr "Dans le passé"
|
||||
|
||||
|
@ -620,11 +620,20 @@ header .remarque {
|
||||
}
|
||||
|
||||
.form.recent, .form.main-filter, .search .form {
|
||||
#id_status>div, #id_representative>div {
|
||||
#id_status>div, #id_representative>div, #id_pure_import>div, #id_in_recurrent_import>div {
|
||||
display: inline-block;
|
||||
margin-right: 2em;
|
||||
}
|
||||
}
|
||||
.form.recent {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
column-gap: .5em;
|
||||
:last-child, :nth-last-child(4),
|
||||
button {
|
||||
grid-column: 1/3;
|
||||
}
|
||||
}
|
||||
|
||||
#search {
|
||||
form {
|
||||
|
Loading…
x
Reference in New Issue
Block a user