# 349 LANIS link improvements
* replaces 'dumb' link template with LANIS mapinterface support * adds fallback default LANIS link
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user