# 349 LANIS link improvements

* replaces 'dumb' link template with LANIS mapinterface support
* adds fallback default LANIS link
This commit is contained in:
2023-10-25 10:04:56 +02:00
parent bfa893a02f
commit 16fd7a3a2c
9 changed files with 105 additions and 32 deletions

View File

@@ -12,7 +12,7 @@ from abc import abstractmethod
from django.contrib import messages
from django.db.models import QuerySet
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP, LANIS_ZOOM_LUT, LANIS_LINK_TEMPLATE
from konova.sub_settings.lanis_settings import LANIS_LINK_TEMPLATE, LANIS_LINK_DEFAULT
from konova.tasks import celery_send_mail_shared_access_removed, celery_send_mail_shared_access_given, \
celery_send_mail_shared_data_recorded, celery_send_mail_shared_data_unrecorded, \
celery_send_mail_shared_data_deleted, celery_send_mail_shared_data_checked, \
@@ -706,32 +706,23 @@ class GeoReferencedMixin(models.Model):
return request
def get_LANIS_link(self) -> str:
""" Generates a link for LANIS depending on the geometry
""" Creates the link for 'LANIS' button on detail view of an entry.
Returns:
"""
try:
geom = self.geometry.geom.transform(DEFAULT_SRID_RLP, clone=True)
x = geom.centroid.x
y = geom.centroid.y
area = int(geom.envelope.area)
z_l = 16
for k_area, v_zoom in LANIS_ZOOM_LUT.items():
if k_area < area:
z_l = v_zoom
break
zoom_lvl = z_l
except (AttributeError, IndexError) as e:
# If no geometry has been added, yet.
x = 1
y = 1
zoom_lvl = 6
return LANIS_LINK_TEMPLATE.format(
zoom_lvl,
x,
y,
)
entry_has_geometry = not self.geometry.geom.empty
if entry_has_geometry:
link = LANIS_LINK_TEMPLATE.format(
self.get_lanis_layer_name(),
self.identifier
)
else:
link = LANIS_LINK_DEFAULT
return link
def get_lanis_layer_name(self):
raise NotImplementedError("Must be implemented in subclasses!")
class ResubmitableObjectMixin(models.Model):