diff --git a/konova/filters/mixins/geo_reference.py b/konova/filters/mixins/geo_reference.py index 71fa41f5..6d77f6b2 100644 --- a/konova/filters/mixins/geo_reference.py +++ b/konova/filters/mixins/geo_reference.py @@ -19,7 +19,7 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet): Specialized on filtering GeoReferenced model types """ - # Parcel gmrkng + # District di = django_filters.CharFilter( method="filter_district", label=_(""), @@ -72,7 +72,7 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet): ), ) - # Parcel counter + # Parcel number pn = django_filters.NumberFilter( method="filter_parcel_number", label=_(""), @@ -112,7 +112,7 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet): return queryset def filter_district(self, queryset, name, value) -> QuerySet: - """ Filters queryset depending on value for 'Gemarkung' + """ Filters queryset depending on value for 'Kreis' Args: queryset (): @@ -122,10 +122,13 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet): Returns: """ - matching_districts = District.objects.filter( - Q(name__icontains=value) | - Q(key__icontains=value) - ).distinct() + values = value.split(",") + q = Q() + for val in values: + val = val.strip() + q |= Q(name__icontains=val) | Q(key__icontains=val) + + matching_districts = District.objects.filter(q).distinct() matching_parcels = Parcel.objects.filter( district__in=matching_districts ) @@ -148,9 +151,14 @@ class GeoReferencedTableFilterMixin(django_filters.FilterSet): Returns: """ + values = value.split(",") + q = Q() + for val in values: + val = val.strip() + q |= Q(parcel_group__name__icontains=val) | Q(parcel_group__key__icontains=val) queryset = self._filter_parcel_reference( queryset, - Q(parcel_group__name__icontains=value) | Q(parcel_group__key__icontains=value), + q, ) return queryset diff --git a/konova/forms/base_form.py b/konova/forms/base_form.py index 6b71c213..98eaa41c 100644 --- a/konova/forms/base_form.py +++ b/konova/forms/base_form.py @@ -29,6 +29,7 @@ class BaseForm(forms.Form): form_attrs = {} # Holds additional attributes, that can be used in the template has_required_fields = False # Automatically set. Triggers hint rendering in templates show_cancel_btn = True + label_input_ratio = (3, 9) # used for col-sm-xy in the template. Must sum up to 12. Specify on inheriting forms def __init__(self, *args, **kwargs): self.instance = kwargs.pop("instance", None) @@ -42,12 +43,26 @@ class BaseForm(forms.Form): break self.check_for_recorded_instance() + self.__check_valid_label_input_ratio() @abstractmethod def save(self): # To be implemented in subclasses! pass + def __check_valid_label_input_ratio(self): + """ Checks whether the configured label-input ratio is valid + + If not valid an AssertionError will be raised. + The valid sum of label-input ratio is defined by bootstrap's column layout system. + + Returns: + + """ + ratio = self.label_input_ratio[0] + self.label_input_ratio[1] + if ratio != 12: + raise AssertionError(f"Label-input ratio on form must sum up to 12! It's {self.label_input_ratio}") + def disable_form_field(self, field: str): """ Disables a form field for user editing diff --git a/konova/forms/modals/remove_form.py b/konova/forms/modals/remove_form.py index 7a146268..f09af99a 100644 --- a/konova/forms/modals/remove_form.py +++ b/konova/forms/modals/remove_form.py @@ -24,6 +24,7 @@ class RemoveModalForm(BaseModalForm): widget=forms.CheckboxInput(), required=True, ) + label_input_ratio = (2, 10) def __init__(self, *args, **kwargs): self.template = "modal/modal_form.html" diff --git a/konova/static/css/konova.css b/konova/static/css/konova.css index ed797046..0092fe9e 100644 --- a/konova/static/css/konova.css +++ b/konova/static/css/konova.css @@ -60,6 +60,10 @@ a { color: var(--rlp-red); } +label { + width: 100%; +} + .form-control:focus{ outline: none; border-color: var(--rlp-red); diff --git a/templates/form/table/generic_table_form_body.html b/templates/form/table/generic_table_form_body.html index 0f9b790e..6fae2744 100644 --- a/templates/form/table/generic_table_form_body.html +++ b/templates/form/table/generic_table_form_body.html @@ -4,12 +4,18 @@
{% for field in form %}