adm-ntuh-net/ntuh/dojango/util/perms.py
2024-12-12 10:19:16 +08:00

26 lines
No EOL
965 B
Python
Executable file

from django.conf import settings
def access_model(app_name, model_name, request=None, instance=None):
"""
Return true to allow access to a given instance of app_name.model_name
"""
acl = getattr(settings, "DOJANGO_DATAGRID_ACCESS", [])
for x in acl:
try:
if x.find(".")>0:
app,model = x.split('.')
if app_name == app and model_name==model: return True
else:
if app_name == x or model_name==x: return True
except:
pass
return False
def access_model_field(app_name, model_name, field_name, request=None, instance=None):
"""
Return true to allow access of a given field_name to model app_name.model_name given
a specific object of said model.
"""
# in django version 1.2 a new attribute is on all models: _state of type ModelState
# that field shouldn't be accessible
return not field_name in ('delete', '_state',)