diff options
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r-- | ishtar_common/admin.py | 41 |
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 |