diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/admin.py | 33 | 
1 files changed, 31 insertions, 2 deletions
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  | 
