diff options
Diffstat (limited to 'ishtar_common')
| -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", +        ]) +  | 
