Prevent editing of attributes which are not Python literals through the admin interface.

This commit is contained in:
Kelketek Rritaa 2014-06-29 09:14:01 -05:00
parent 112e7c652d
commit 54bb593f5e
2 changed files with 11 additions and 1 deletions

View file

@ -54,6 +54,15 @@ class AttributeAdmin(ModelAdmin):
"""
search_fields = ('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(Tag, TagAdmin)

View file

@ -104,7 +104,8 @@ class Attribute(SharedMemoryModel):
'value', null=True,
help_text="The data returned when the attribute is accessed. Must be "
"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(
'strvalue', null=True, blank=True,
help_text="String-specific storage for quick look-up")