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.utils.translation import gettext_lazy as _
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.postgres.search import SearchQuery, SearchHeadline
|
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 datetime import date, timedelta
|
||||||
from urllib.parse import urlparse, parse_qs, urlencode
|
from urllib.parse import urlparse, parse_qs, urlencode
|
||||||
|
|
||||||
@ -326,6 +326,18 @@ class EventFilterAdmin(django_filters.FilterSet):
|
|||||||
method="filter_by_representative",
|
method="filter_by_representative",
|
||||||
widget=forms.CheckboxSelectMultiple)
|
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(
|
import_sources = django_filters.ModelChoiceFilter(
|
||||||
label=_("Imported from"),
|
label=_("Imported from"),
|
||||||
method="filter_by_source",
|
method="filter_by_source",
|
||||||
@ -336,6 +348,32 @@ class EventFilterAdmin(django_filters.FilterSet):
|
|||||||
src = RecurrentImport.objects.get(pk=value.pk).source
|
src = RecurrentImport.objects.get(pk=value.pk).source
|
||||||
return queryset.filter(import_sources__contains=[src])
|
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):
|
def filter_by_representative(self, queryset, name, value):
|
||||||
if value is None or len(value) != 1:
|
if value is None or len(value) != 1:
|
||||||
return queryset
|
return queryset
|
||||||
@ -343,7 +381,7 @@ class EventFilterAdmin(django_filters.FilterSet):
|
|||||||
q = (Q(other_versions__isnull=True) |
|
q = (Q(other_versions__isnull=True) |
|
||||||
Q(other_versions__representative=F('pk')) |
|
Q(other_versions__representative=F('pk')) |
|
||||||
Q(other_versions__representative__isnull=True))
|
Q(other_versions__representative__isnull=True))
|
||||||
if value[0] == True:
|
if value[0] == 'True':
|
||||||
return queryset.filter(q)
|
return queryset.filter(q)
|
||||||
else:
|
else:
|
||||||
return queryset.exclude(q)
|
return queryset.exclude(q)
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# Jean-Marie Favreau <jeanmarie.favreau@free.fr>, 2023.
|
# Jean-Marie Favreau <jeanmarie.favreau@free.fr>, 2023.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: agenda_culturel\n"
|
"Project-Id-Version: agenda_culturel\n"
|
||||||
"Report-Msgid-Bugs-To: \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"
|
"PO-Revision-Date: 2023-10-29 14:16+0000\n"
|
||||||
"Last-Translator: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n"
|
"Last-Translator: Jean-Marie Favreau <jeanmarie.favreau@free.fr>\n"
|
||||||
"Language-Team: 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"
|
msgid "Representative version"
|
||||||
msgstr "Version représentative"
|
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"
|
msgid "Yes"
|
||||||
msgstr "Oui"
|
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"
|
msgid "No"
|
||||||
msgstr "Non"
|
msgstr "Non"
|
||||||
|
|
||||||
#: agenda_culturel/filters.py:330
|
#: 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"
|
msgid "Imported from"
|
||||||
msgstr "Importé depuis"
|
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
|
#: agenda_culturel/models.py:2272
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "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"
|
msgid "Closed"
|
||||||
msgstr "Fermé"
|
msgstr "Fermé"
|
||||||
|
|
||||||
#: agenda_culturel/filters.py:360
|
#: agenda_culturel/filters.py:398
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Ouvert"
|
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
|
#: agenda_culturel/models.py:2052
|
||||||
msgid "Spam"
|
msgid "Spam"
|
||||||
msgstr "Spam"
|
msgstr "Spam"
|
||||||
|
|
||||||
#: agenda_culturel/filters.py:365
|
#: agenda_culturel/filters.py:403
|
||||||
msgid "Non spam"
|
msgid "Non spam"
|
||||||
msgstr "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"
|
msgid "Type"
|
||||||
msgstr "Type"
|
msgstr "Type"
|
||||||
|
|
||||||
#: agenda_culturel/filters.py:382
|
#: agenda_culturel/filters.py:420
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Rechercher"
|
msgstr "Rechercher"
|
||||||
|
|
||||||
#: agenda_culturel/filters.py:394
|
#: agenda_culturel/filters.py:432
|
||||||
msgid "In the past"
|
msgid "In the past"
|
||||||
msgstr "Dans le passé"
|
msgstr "Dans le passé"
|
||||||
|
|
||||||
|
@ -620,11 +620,20 @@ header .remarque {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form.recent, .form.main-filter, .search .form {
|
.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;
|
display: inline-block;
|
||||||
margin-right: 2em;
|
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 {
|
#search {
|
||||||
form {
|
form {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user