* extends KonovaCode filtering for parent objects matching given input
* renames data_form into form for easier template render support
* simplifies empty geometry form initialization
This commit is contained in:
mipel
2021-09-29 14:49:17 +02:00
parent f3f5cc2b50
commit 1965721dea
7 changed files with 26 additions and 26 deletions

View File

@@ -104,12 +104,18 @@ class KonovaCodeAutocomplete(Select2QuerySetView):
code_lists__in=[self.c]
)
if self.q:
q_or = Q()
q_or |= Q(long_name__icontains=self.q)
q_or |= Q(short_name__icontains=self.q)
q_or |= Q(parent__long_name__icontains=self.q)
q_or |= Q(parent__short_name__icontains=self.q)
qs = qs.filter(q_or).distinct()
# Remove whitespaces from self.q and split input in all keywords (if multiple given)
q = dict.fromkeys(self.q.strip().split(" "))
# Create one filter looking up for all keys where all keywords can be found in the same result
_filter = Q()
for keyword in q:
q_or = Q()
q_or |= Q(long_name__icontains=keyword)
q_or |= Q(short_name__icontains=keyword)
q_or |= Q(parent__long_name__icontains=keyword)
q_or |= Q(parent__short_name__icontains=keyword)
_filter.add(q_or, Q.AND)
qs = qs.filter(_filter).distinct()
return qs

View File

@@ -263,15 +263,14 @@ class SimpleGeomForm(BaseForm):
# Initialize geometry
try:
geom = self.instance.geometry.geom
if geom is None:
raise AttributeError
self.empty = geom.empty
except AttributeError:
# catches if no geometry has been added, yet. Replace with empty placeholder polygon.
geom = Polygon.from_bbox([0, 0, 0, 0])
# Zoom out to a very high level, so the user can see directly that there is no geometry for this entry
# If no geometry exists for this form, we simply set the value to None and zoom to the maximum level
geom = None
self.empty = True
self.fields["geom"].widget.attrs["default_zoom"] = 1
self.initialize_form_field("geom", geom)
self.area = geom.area
if read_only:
self.fields["geom"].disabled = True

View File

@@ -63,7 +63,7 @@ class BaseResource(UuidModel):
abstract = True
def delete(self, using=None, keep_parents=False):
""" Base deletin of a resource
""" Base deleting of a resource
Args:
using ():
@@ -74,7 +74,7 @@ class BaseResource(UuidModel):
"""
try:
self.created.delete()
except ObjectDoesNotExist:
except (ObjectDoesNotExist, AttributeError) as e:
# Object does not exist anymore - we can skip this
pass
super().delete()