#7 New Form
* 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:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user