diff --git a/intervention/templates/intervention/detail-view.html b/intervention/templates/intervention/detail-view.html index 7700b516..8c0e6df2 100644 --- a/intervention/templates/intervention/detail-view.html +++ b/intervention/templates/intervention/detail-view.html @@ -122,6 +122,9 @@
+ {% if geom_form.area == 0 %} +
{% trans 'No geometry added, yet.' %}
+ {% endif %} {{geom_form.media}} {{geom_form.geom}}
diff --git a/intervention/views.py b/intervention/views.py index 70b04609..49ae0c3f 100644 --- a/intervention/views.py +++ b/intervention/views.py @@ -88,9 +88,6 @@ def open_view(request: HttpRequest, id: str): intervention = get_object_or_404(Intervention, id=id) has_access = intervention.has_access(user=request.user) - if not has_access: - messages.info(request, _("Remember: This data has not been shared with you, yet. This means you can only read but can not edit or perform any actions like running a check or recording.")) - geom_form = SimpleGeomForm( instance=intervention ) @@ -100,6 +97,10 @@ def open_view(request: HttpRequest, id: str): "has_access": has_access, "geom_form": geom_form, } + + if not has_access: + messages.info(request, _("Remember: This data has not been shared with you, yet. This means you can only read but can not edit or perform any actions like running a check or recording.")) + context = BaseContext(request, context).context return render(request, template, context) diff --git a/konova/forms.py b/konova/forms.py index b5198fa6..31bafa09 100644 --- a/konova/forms.py +++ b/konova/forms.py @@ -10,7 +10,8 @@ from abc import abstractmethod from django import forms from django.contrib.auth.models import User -from django.contrib.gis.forms import GeometryField, OSMWidget, MultiPolygonField +from django.contrib.gis.forms import GeometryField, OSMWidget +from django.contrib.gis.geos import Polygon from django.utils import timezone from django.utils.translation import gettext_lazy as _ @@ -101,6 +102,8 @@ class SimpleGeomForm(BaseForm): """ geom = GeometryField( + required=False, + disabled=True, widget=OSMWidget( attrs={ "map_width": 600, @@ -110,15 +113,17 @@ class SimpleGeomForm(BaseForm): ) def __init__(self, *args, **kwargs): - """ - Constructor does not need to perform further initial setup, like other forms. - We simply use this here for easy rendering of a geometry view component - - Args: - *args (): - **kwargs (): - """ super().__init__(*args, **kwargs) - geom = self.instance.geometry.geom + + # Initialize geometry + try: + geom = self.instance.geometry.geom + if geom is None: + raise AttributeError + 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 + self.fields["geom"].widget.attrs["default_zoom"] = 1 self.initialize_form_field("geom", geom) - self.disable_form_field("geom") + self.area = geom.area diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 725ccf03..0db3be9e 100644 Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 2af3bcc5..4d480dbe 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -4,14 +4,14 @@ # FIRST AUTHOR , YEAR. # #: intervention/filters.py:25 intervention/filters.py:31 -#: intervention/filters.py:38 intervention/filters.py:39 konova/forms.py:70 +#: intervention/filters.py:38 intervention/filters.py:39 konova/forms.py:73 #: user/forms.py:38 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-22 14:57+0200\n" +"POT-Creation-Date: 2021-07-22 16:04+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,14 +23,14 @@ msgstr "" #: compensation/tables.py:18 compensation/tables.py:71 intervention/forms.py:26 #: intervention/tables.py:23 -#: intervention/templates/intervention/detail-view.html:159 +#: intervention/templates/intervention/detail-view.html:162 msgid "Identifier" msgstr "Kennung" #: compensation/tables.py:23 compensation/tables.py:76 intervention/forms.py:33 #: intervention/tables.py:28 #: intervention/templates/intervention/detail-view.html:57 -#: intervention/templates/intervention/detail-view.html:162 +#: intervention/templates/intervention/detail-view.html:165 msgid "Title" msgstr "Bezeichnung" @@ -43,7 +43,7 @@ msgid "Actions" msgstr "Aktionen" #: compensation/tables.py:44 -#: intervention/templates/intervention/detail-view.html:139 +#: intervention/templates/intervention/detail-view.html:142 msgid "Compensations" msgstr "Kompensationen" @@ -268,23 +268,27 @@ msgstr "Zuletzt bearbeitet" msgid "by" msgstr "von" -#: intervention/templates/intervention/detail-view.html:144 +#: intervention/templates/intervention/detail-view.html:126 +msgid "No geometry added, yet." +msgstr "Keine Geometrie vorhanden" + +#: intervention/templates/intervention/detail-view.html:147 msgid "Add new compensation" msgstr "Neue Kompensation hinzufügen" -#: intervention/templates/intervention/detail-view.html:189 +#: intervention/templates/intervention/detail-view.html:192 msgid "Payments" msgstr "Ersatzzahlungen" -#: intervention/templates/intervention/detail-view.html:194 +#: intervention/templates/intervention/detail-view.html:197 msgid "Add new payment" msgstr "Neue Zahlung hinzufügen" -#: intervention/templates/intervention/detail-view.html:209 +#: intervention/templates/intervention/detail-view.html:212 msgid "Amount" msgstr "Betrag" -#: intervention/templates/intervention/detail-view.html:212 +#: intervention/templates/intervention/detail-view.html:215 msgid "Transfer comment" msgstr "Verwendungszweck" @@ -292,11 +296,11 @@ msgstr "Verwendungszweck" msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views.py:65 intervention/views.py:127 +#: intervention/views.py:65 intervention/views.py:128 msgid "Invalid input" msgstr "Eingabe fehlerhaft" -#: intervention/views.py:92 +#: intervention/views.py:102 msgid "" "Remember: This data has not been shared with you, yet. This means you can " "only read but can not edit or perform any actions like running a check or " @@ -306,7 +310,7 @@ msgstr "" "bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, " "noch Prüfungen durchführen oder verzeichnen können." -#: intervention/views.py:124 +#: intervention/views.py:125 msgid "{} edited" msgstr "{} bearbeitet" @@ -322,19 +326,19 @@ msgstr "Hierfür müssen Sie Administrator sein!" msgid "You need to be part of another user group." msgstr "Hierfür müssen Sie einer anderen Nutzergruppe angehören!" -#: konova/forms.py:43 +#: konova/forms.py:46 msgid "Not editable" msgstr "Nicht editierbar" -#: konova/forms.py:69 +#: konova/forms.py:72 msgid "Confirm" msgstr "Bestätigen" -#: konova/forms.py:81 +#: konova/forms.py:84 msgid "Remove" msgstr "Entferne" -#: konova/forms.py:83 +#: konova/forms.py:86 msgid "You are about to remove {} {}" msgstr "Sie sind dabei {} {} zu löschen"