summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index e1f823d75..0ef72991f 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -1145,6 +1145,9 @@ general_models = [
models.LicenseType,
models.Language,
models.PersonType,
+ models_common.GeoProviderType,
+ models_common.GeoDataType,
+ models_common.GeoOriginType,
]
for model in general_models:
admin_site.register(model, GeneralTypeAdmin)
@@ -2407,3 +2410,41 @@ class ApiSheetFilterAdmin(admin.ModelAdmin):
admin_site.register(models_rest.ApiSheetFilter, ApiSheetFilterAdmin)
+
+
+class GeoVectorDataForm(forms.ModelForm):
+ class Meta:
+ model = models_common.GeoVectorData
+ exclude = []
+
+ def clean(self):
+ fields = [
+ "x",
+ "point_2d",
+ "point_3d",
+ "multi_points",
+ "multi_line",
+ "multi_polygon",
+ ]
+ non_empty = [f for f in fields if self.cleaned_data.get(f, None)]
+ if len(non_empty) > 1:
+ raise forms.ValidationError(
+ _(
+ "Only one type of geographic data is accepted. "
+ "Create different objects if you have many."
+ )
+ )
+ if bool(self.cleaned_data.get("x", None)) != bool(
+ self.cleaned_data.get("y", None)
+ ):
+ raise forms.ValidationError(
+ _("You cannot set only x or only y coordinate.")
+ )
+ return self.cleaned_data
+
+
+class GeoVectorDataAdmin(admin.ModelAdmin):
+ model = models_common.GeoVectorData
+
+
+admin_site.register(models_common.GeoVectorData, GeoVectorDataAdmin) \ No newline at end of file