diff options
| -rw-r--r-- | archaeological_context_records/admin.py | 19 | ||||
| -rw-r--r-- | archaeological_finds/admin.py | 25 | ||||
| -rw-r--r-- | archaeological_operations/admin.py | 26 | ||||
| -rw-r--r-- | ishtar_common/admin.py | 48 | 
4 files changed, 49 insertions, 69 deletions
diff --git a/archaeological_context_records/admin.py b/archaeological_context_records/admin.py index 7d6d85e08..8182c1bda 100644 --- a/archaeological_context_records/admin.py +++ b/archaeological_context_records/admin.py @@ -17,13 +17,10 @@  # See the file COPYING for details. -from django import forms  from django.contrib import admin -from django.contrib.gis.forms import PointField, MultiPolygonField, OSMWidget -from ishtar_common.utils import ugettext_lazy as _  from ishtar_common.apps import admin_site -from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin +from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin, MainGeoDataItem  from . import models @@ -43,18 +40,7 @@ class DatingAdmin(admin.ModelAdmin):  admin_site.register(models.Dating, DatingAdmin) -class AdminContextRecordForm(forms.ModelForm): -    class Meta: -        model = models.ContextRecord -        exclude = [] - -    point_2d = PointField(label=_("Point"), required=False, widget=OSMWidget) -    multi_polygon = MultiPolygonField( -        label=_("Multi polygon"), required=False, widget=OSMWidget -    ) - - -class ContextRecordAdmin(HistorizedObjectAdmin): +class ContextRecordAdmin(HistorizedObjectAdmin, MainGeoDataItem):      list_display = ("label", "operation", "parcel")      list_filter = ("unit",)      search_fields = ( @@ -66,7 +52,6 @@ class ContextRecordAdmin(HistorizedObjectAdmin):      autocomplete_fields = ["operation", "parcel", "town", "archaeological_site",                             "lock_user"]      model = models.ContextRecord -    form = AdminContextRecordForm      readonly_fields = HistorizedObjectAdmin.readonly_fields + [          "cached_label",          "datings", diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py index f56c108d8..98c86141b 100644 --- a/archaeological_finds/admin.py +++ b/archaeological_finds/admin.py @@ -17,36 +17,21 @@  # See the file COPYING for details. -from django import forms  from django.contrib import admin -from django.contrib.gis.forms import PointField, MultiPolygonField, \ -    LineStringField, OSMWidget -from ishtar_common.utils import ugettext_lazy as _  from ishtar_common.apps import admin_site -from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin +from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin, MainGeoDataItem  from . import models -class AdminBaseFindForm(forms.ModelForm): -    class Meta: -        model = models.BaseFind -        exclude = [] -    point_2d = PointField(label=_("Point (2D)"), required=False, -                          widget=OSMWidget) -    line = LineStringField(label=_("Line"), required=False, -                           widget=OSMWidget) -    multi_polygon = MultiPolygonField(label=_("Multi polygon"), required=False, -                                      widget=OSMWidget) - - -class BaseFindAdmin(HistorizedObjectAdmin): +class BaseFindAdmin(HistorizedObjectAdmin, MainGeoDataItem):      list_display = ('label', 'context_record', 'index')      search_fields = ('label', 'cache_complete_id',) +    exclude = ["line"]      model = models.BaseFind -    form = AdminBaseFindForm -    autocomplete_fields = ("context_record",) +    autocomplete_fields = HistorizedObjectAdmin.autocomplete_fields + \ +                          MainGeoDataItem.autocomplete_fields + ["context_record"]      readonly_fields = HistorizedObjectAdmin.readonly_fields + [          'cache_short_id', 'cache_complete_id',      ] diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py index 68264b97e..39c5ba490 100644 --- a/archaeological_operations/admin.py +++ b/archaeological_operations/admin.py @@ -17,15 +17,12 @@  # See the file COPYING for details. -from django import forms  from django.conf import settings  from django.contrib import admin -from django.contrib.gis.forms import PointField, MultiPolygonField, OSMWidget -from ishtar_common.utils import ugettext_lazy as _  from ishtar_common.apps import admin_site  from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin, \ -    MergeActionAdmin +    MergeActionAdmin, MainGeoDataItem  from . import models @@ -61,12 +58,13 @@ class OperationInline(admin.TabularInline):      extra = 1 -class ArchaeologicalSiteAdmin(HistorizedObjectAdmin): +class ArchaeologicalSiteAdmin(HistorizedObjectAdmin, MainGeoDataItem):      list_display = ('name', 'reference')      search_fields = ('name', 'reference')      model = models.ArchaeologicalSite      inlines = [OperationInline] -    autocomplete_fields = HistorizedObjectAdmin.autocomplete_fields + ["towns"] +    autocomplete_fields = HistorizedObjectAdmin.autocomplete_fields + \ +                          MainGeoDataItem.autocomplete_fields + ["towns"]      exclude = ["documents", "main_image"] @@ -79,17 +77,7 @@ class ArchaeologicalSiteInline(admin.TabularInline):      extra = 1 -class AdminOperationForm(forms.ModelForm): -    class Meta: -        model = models.Operation -        exclude = [] -    point = PointField(label=_("Point"), required=False, -                       widget=OSMWidget) -    multi_polygon = MultiPolygonField(label=_("Multi polygon"), required=False, -                                      widget=OSMWidget) - - -class OperationAdmin(HistorizedObjectAdmin): +class OperationAdmin(HistorizedObjectAdmin, MainGeoDataItem):      list_display = ['year', 'operation_code',                      'operation_type', 'common_name']      list_filter = ("operation_type", "year",) @@ -100,7 +88,8 @@ class OperationAdmin(HistorizedObjectAdmin):      model = models.Operation      readonly_fields = HistorizedObjectAdmin.readonly_fields + [          'cached_label', 'top_sites'] -    autocomplete_fields = HistorizedObjectAdmin.autocomplete_fields + [ +    autocomplete_fields = HistorizedObjectAdmin.autocomplete_fields + \ +                          MainGeoDataItem.autocomplete_fields + [          "in_charge",          "scientist",          "associated_file", @@ -111,7 +100,6 @@ class OperationAdmin(HistorizedObjectAdmin):          "cira_rapporteur",          "lock_user",      ] -    form = AdminOperationForm      inlines = [ArchaeologicalSiteInline]      exclude = ["documents", "main_image"] 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", +        ]) +  | 
