diff options
| -rw-r--r-- | archaeological_operations/admin.py | 10 | ||||
| -rw-r--r-- | ishtar_common/admin.py | 33 | 
2 files changed, 37 insertions, 6 deletions
diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py index 39c5ba490..40d275d83 100644 --- a/archaeological_operations/admin.py +++ b/archaeological_operations/admin.py @@ -22,7 +22,7 @@ from django.contrib import admin  from ishtar_common.apps import admin_site  from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin, \ -    MergeActionAdmin, MainGeoDataItem +    MergeActionAdmin, MainGeoDataItem, MAIN_ITEM_READONLY_FIELDS  from . import models @@ -32,11 +32,12 @@ class AdministrativeActAdmin(HistorizedObjectAdmin):                      'act_type')      list_filter = ('act_type',)      search_fields = ('year', 'index') -    readonly_fields = HistorizedObjectAdmin.readonly_fields + [ +    readonly_fields = MAIN_ITEM_READONLY_FIELDS + [          'in_charge', 'operator', 'scientist', 'signatory', 'associated_file',          'departments_label', 'towns_label']      model = models.AdministrativeAct -    autocomplete_fields = ("operation",) +    autocomplete_fields = ("operation", "treatment", "treatment_file") +    exclude = ["documents", "main_image"]  admin_site.register(models.AdministrativeAct, AdministrativeActAdmin) @@ -66,6 +67,7 @@ class ArchaeologicalSiteAdmin(HistorizedObjectAdmin, MainGeoDataItem):      autocomplete_fields = HistorizedObjectAdmin.autocomplete_fields + \                            MainGeoDataItem.autocomplete_fields + ["towns"]      exclude = ["documents", "main_image"] +    readonly_fields = MAIN_ITEM_READONLY_FIELDS  admin_site.register(models.ArchaeologicalSite, ArchaeologicalSiteAdmin) @@ -86,7 +88,7 @@ class OperationAdmin(HistorizedObjectAdmin, MainGeoDataItem):          list_display.insert(2, 'code_patriarche')          search_fields += ['code_patriarche']      model = models.Operation -    readonly_fields = HistorizedObjectAdmin.readonly_fields + [ +    readonly_fields = MAIN_ITEM_READONLY_FIELDS + [          'cached_label', 'top_sites']      autocomplete_fields = HistorizedObjectAdmin.autocomplete_fields + \                            MainGeoDataItem.autocomplete_fields + [ diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 44ca43ec2..76b52460c 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -461,13 +461,42 @@ 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 + ("imports", "imports_updated")          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 + ("imports", "imports_updated") +        return fields + +    END_FIELDS = ["data", "last_modified", "created", "need_update", "locked", "lock_user", +                  "main_geodata", "geodata", "qrcode"] + +    def get_fields(self, request, obj=None, **kwargs): +        """ +        Put END_FIELDS at the end but before readonly fields +        """ +        if self.fields: +            return self.fields +        fields = super().get_fields(request, **kwargs) +        readonly_fields = self.get_readonly_fields(request, obj) +        if readonly_fields: +            idx_ro = fields.index(readonly_fields[0]) +        else: +            idx_ro = len(fields) - 1 +        for end_field in self.END_FIELDS: +            try: +                idx_field = fields.index(end_field) +            except ValueError: +                continue +            fields.insert(idx_ro, end_field) +            fields.pop(idx_field) +        for k in fields[:]: +            if k.startswith("cached_"): +                idx_field = fields.index(k) +                fields.insert(idx_ro, k) +                fields.pop(idx_field)          return fields  | 
