diff --git a/konova/filters/mixins/user_log.py b/konova/filters/mixins/user_log.py new file mode 100644 index 0000000..7ed08df --- /dev/null +++ b/konova/filters/mixins/user_log.py @@ -0,0 +1,55 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 19.08.24 + +""" +import django_filters +from django import forms +from django.db.models import QuerySet, Q +from django.utils.translation import gettext_lazy as _ + + +class UserLoggedTableFilterMixin(django_filters.FilterSet): + ul = django_filters.CharFilter( + method="filter_user_log", + label=_(""), + label_suffix=_(""), + widget=forms.TextInput( + attrs={ + "placeholder": _("Logged user"), + "title": _("Search for entries where this person has been participated according to log history"), + "class": "form-control", + } + ), + ) + + class Meta: + abstract = True + + def filter_user_log(self, queryset, name, value) -> QuerySet: + """ Filters queryset depending on value of input + + Args: + queryset (QuerySet): Incoming (prefiltered) queryset + name (str): Name of input field + value (str): Value of input field + + Returns: + + """ + value = value.replace(",", " ") + value = value.strip() + values = value.split(" ") + + q = Q() + for val in values: + q &= ( + Q(log__user__username__icontains=val) | + Q(log__user__first_name__icontains=val) | + Q(log__user__last_name__icontains=val) + ) + + queryset = queryset.filter(q) + return queryset diff --git a/konova/filters/table_filters.py b/konova/filters/table_filters.py index 323bf1e..a9891d5 100644 --- a/konova/filters/table_filters.py +++ b/konova/filters/table_filters.py @@ -14,6 +14,7 @@ from konova.filters.mixins.office import ConservationOfficeTableFilterMixin, Reg from konova.filters.mixins.record import RecordableTableFilterMixin from konova.filters.mixins.self_created import SelfCreatedTableFilterMixin from konova.filters.mixins.share import ShareableTableFilterMixin +from konova.filters.mixins.user_log import UserLoggedTableFilterMixin class AbstractTableFilter(django_filters.FilterSet): @@ -40,7 +41,8 @@ class SelectionTableFilter(RegistrationOfficeTableFilterMixin, class QueryTableFilter(KeywordTableFilterMixin, FileNumberTableFilterMixin, - GeoReferencedTableFilterMixin): + GeoReferencedTableFilterMixin, + UserLoggedTableFilterMixin): """ TableFilter holding different filter options for query related filtering """ diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 16e9861..1769494 100644 Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 9e02af8..9bc92c8 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -29,6 +29,7 @@ #: konova/filters/mixins/office.py:25 konova/filters/mixins/office.py:56 #: konova/filters/mixins/office.py:57 konova/filters/mixins/record.py:23 #: konova/filters/mixins/self_created.py:24 konova/filters/mixins/share.py:23 +#: konova/filters/mixins/user_log.py:17 konova/filters/mixins/user_log.py:18 #: konova/forms/geometry_form.py:32 konova/forms/modals/document_form.py:26 #: konova/forms/modals/document_form.py:36 #: konova/forms/modals/document_form.py:50 @@ -43,7 +44,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-19 09:38+0200\n" +"POT-Creation-Date: 2024-08-19 10:32+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1786,6 +1787,17 @@ msgstr "" "Wenn aktiviert werden auch Einträge angezeigt, die nicht für Sie freigegeben " "sind" +#: konova/filters/mixins/user_log.py:21 +msgid "Logged user" +msgstr "Bearbeitender Nutzer" + +#: konova/filters/mixins/user_log.py:22 +msgid "" +"Search for entries where this person has been participated according to log " +"history" +msgstr "" +"Sucht nach Einträgen, an denen diese Person gearbeitet hat" + #: konova/forms/base_form.py:23 templates/form/collapsable/form.html:62 msgid "Save" msgstr "Speichern"