Prevent editing of attributes which are not Python literals through the admin interface.
This commit is contained in:
parent
112e7c652d
commit
54bb593f5e
2 changed files with 11 additions and 1 deletions
|
|
@ -54,6 +54,15 @@ class AttributeAdmin(ModelAdmin):
|
||||||
"""
|
"""
|
||||||
search_fields = ('db_key', 'db_strvalue', 'db_value')
|
search_fields = ('db_key', 'db_strvalue', 'db_value')
|
||||||
list_display = ('db_key', 'db_strvalue', 'db_value')
|
list_display = ('db_key', 'db_strvalue', 'db_value')
|
||||||
|
permitted_types = ('str', 'int', 'float', 'NoneType', 'bool')
|
||||||
|
|
||||||
|
fields = ('db_key', 'db_value', 'db_strvalue', 'db_category',
|
||||||
|
'db_lock_storage', 'db_model', 'db_attrtype')
|
||||||
|
|
||||||
|
def get_readonly_fields(self, request, obj=None):
|
||||||
|
if obj.db_value.__class__.__name__ not in self.permitted_types:
|
||||||
|
return ['db_value']
|
||||||
|
return []
|
||||||
|
|
||||||
admin.site.register(Attribute, AttributeAdmin)
|
admin.site.register(Attribute, AttributeAdmin)
|
||||||
admin.site.register(Tag, TagAdmin)
|
admin.site.register(Tag, TagAdmin)
|
||||||
|
|
@ -104,7 +104,8 @@ class Attribute(SharedMemoryModel):
|
||||||
'value', null=True,
|
'value', null=True,
|
||||||
help_text="The data returned when the attribute is accessed. Must be "
|
help_text="The data returned when the attribute is accessed. Must be "
|
||||||
"written as a Python literal if editing through the admin "
|
"written as a Python literal if editing through the admin "
|
||||||
"interface.")
|
"interface. Attribute values which are not Python literals "
|
||||||
|
"cannot be edited through the admin interface.")
|
||||||
db_strvalue = models.TextField(
|
db_strvalue = models.TextField(
|
||||||
'strvalue', null=True, blank=True,
|
'strvalue', null=True, blank=True,
|
||||||
help_text="String-specific storage for quick look-up")
|
help_text="String-specific storage for quick look-up")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue