From: Stephen Burrows Date: Mon, 31 Jan 2011 21:25:16 +0000 (-0500) Subject: Corrected EntityAdminMetaclass handling of inherited vs. declared readonly_fields. X-Git-Tag: philo-0.9~21^2~9 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/152d5701adc571416ed8fc4739d19ed316a69221 Corrected EntityAdminMetaclass handling of inherited vs. declared readonly_fields. --- diff --git a/admin/base.py b/admin/base.py index 81ff8f8..8151461 100644 --- a/admin/base.py +++ b/admin/base.py @@ -47,9 +47,13 @@ class EntityAdminMetaclass(admin.ModelAdmin.__metaclass__): opts = form._meta if issubclass(form, EntityForm) and opts.model: proxy_fields = proxy_fields_for_entity_model(opts.model).keys() + + # Store readonly fields iff they have been declared. + if 'readonly_fields' in attrs or not hasattr(new_class, '_real_readonly_fields'): + new_class._real_readonly_fields = new_class.readonly_fields + readonly_fields = new_class.readonly_fields - new_class._real_readonly_fields = readonly_fields - new_class.readonly_fields = list(readonly_fields) + proxy_fields + new_class.readonly_fields = list(set(readonly_fields) | set(proxy_fields)) # Additional HACKS to handle raw_id_fields and other attributes that the admin # uses model._meta.get_field to validate.