Skip to content

Instantly share code, notes, and snippets.

Forked from gregmuellegger/admin.py
Created January 31, 2012 13:36
Show Gist options
  • Save anonymous/1710516 to your computer and use it in GitHub Desktop.
Save anonymous/1710516 to your computer and use it in GitHub Desktop.
from django.core.exceptions import PermissionDenied
from django.contrib import admin
from crm.models import Customer
class ReadPermissionModelAdmin(admin.ModelAdmin):
def has_change_permission(self, request, obj=None):
if getattr(request, 'readonly', False):
return True
return super(ReadPermissionModelAdmin, self).has_change_permission(request, obj)
def changelist_view(self, request, extra_context=None):
try:
return super(ReadPermissionModelAdmin, self).changelist_view(
request, extra_context=extra_context)
except PermissionDenied:
pass
if request.method == 'POST':
raise PermissionDenied
request.readonly = True
return super(ReadPermissionModelAdmin, self).changelist_view(
request, extra_context=extra_context)
def change_view(self, request, object_id, extra_context=None):
try:
return super(ReadPermissionModelAdmin, self).change_view(
request, object_id, extra_context=extra_context)
except PermissionDenied:
pass
if request.method == 'POST':
raise PermissionDenied
request.readonly = True
return super(ReadPermissionModelAdmin, self).change_view(
request, object_id, extra_context=extra_context)
class CustomerAdmin(ReadPermissionModelAdmin):
pass
admin.site.register(Customer, CustomerAdmin)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment