diff options
Diffstat (limited to 'ishtar_common/admin.py')
-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 |