diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-09-28 12:34:18 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:23:18 +0100 |
commit | 6e97cb35ae70db6c816599277da03faab228fa76 (patch) | |
tree | 1aa28a11a7eca859f2c0eb61de15802885b174b1 /ishtar_common/admin.py | |
parent | fe62e50c178d39dbb4c89795f25428f2830f3a03 (diff) | |
download | Ishtar-6e97cb35ae70db6c816599277da03faab228fa76.tar.bz2 Ishtar-6e97cb35ae70db6c816599277da03faab228fa76.zip |
Geaovectordata - admin: autocomplete for geodata items
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r-- | ishtar_common/admin.py | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 76b585d69..cfd06bea5 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -442,7 +442,22 @@ class ChangeParentAdmin: }, ) -class HistorizedObjectAdmin(admin.ModelAdmin): + +class ImportedObjectAdmin(admin.ModelAdmin): + def get_readonly_fields(self, request, obj=None): + fields = tuple(super().get_readonly_fields(request, obj) or []) + if obj: # editing an existing object + return fields + tuple(["imports"]) + return fields + + def get_exclude(self, request, obj=None): + fields = tuple(super().get_exclude(request, obj) or []) + if not obj: + return fields + tuple(["imports"]) + return fields + + +class HistorizedObjectAdmin(ImportedObjectAdmin): readonly_fields = [ "history_creator", "history_modifier", @@ -456,16 +471,6 @@ class HistorizedObjectAdmin(admin.ModelAdmin): obj.history_modifier = request.user obj.save() - def get_readonly_fields(self, request, obj=None): - if obj: # editing an existing object - return tuple(self.readonly_fields or []) + tuple(["imports"]) - return self.readonly_fields - - def get_exclude(self, request, obj=None): - if not obj: - return tuple(self.exclude or []) + tuple(["imports"]) - return self.exclude - class MyGroupAdmin(GroupAdmin): class Media: @@ -1308,7 +1313,7 @@ class AreaAdmin(CreateDepartmentActionAdmin): search_fields = ("label", "reference") list_filter = ("parent",) model = models.Area - autocomplete_fields = ["towns"] + autocomplete_fields = ["towns", "parent"] admin_site.register(models.Area, AreaAdmin) @@ -2477,7 +2482,7 @@ class GeoVectorDataForm(forms.ModelForm): return self.cleaned_data -class GeoVectorDataAdmin(admin.ModelAdmin): +class GeoVectorDataAdmin(ImportedObjectAdmin): model = models_common.GeoVectorData search_fields = ["name"] list_display = ["name", "origin", "data_type", "provider", "source_content_type"] @@ -2485,3 +2490,20 @@ class GeoVectorDataAdmin(admin.ModelAdmin): admin_site.register(models_common.GeoVectorData, GeoVectorDataAdmin) + + +class GeoDataItem(admin.ModelAdmin): + autocomplete_fields = ["main_geodata", "geodata"] + + +class MainGeoDataItem(GeoDataItem): + def get_exclude(self, request, obj=None): + exclude = super().get_exclude(request, obj) + return tuple(exclude or []) + tuple([ + "x", "y", "z", + "estimated_error_x", "estimated_error_y", "estimated_error_z", + "spatial_reference_system", + "point", "point_2d", "point_source", "point_source_item", + "multi_polygon", "multi_polygon_source", "multi_polygon_source_item", + ]) + |