Technical 500 by group membership

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from django.conf import settings
from django.views.debug import technical_500_response
import sys

EX_GROUP_NAME = getattr(settings, 'TECHNICAL_500_GROUP_NAME', 'Technical Errors')

class UserBasedExceptionMiddleware(object):
    def process_exception(self, request, exception):
        exc_info = sys.exc_info()
        user = request.user
        if not user.is_superuser:
            return None
        if user.groups.filter(name=EX_GROUP_NAME):
            return technical_500_response(request, *exc_info)
        return None

More like this

  1. Super User Conditional Page Exception Reporting by zbyte64 5 years, 8 months ago
  2. Restrict Flatpage To Group by nikolaj 6 years ago
  3. Restricting admin fieldsets for non-superusers by phretor 4 years, 8 months ago
  4. Active Directory Authentication Backend (with User object updating) by mroose 2 years, 5 months ago
  5. Message exception by marinho 5 years, 6 months ago

Comments

buriy (on September 7, 2009):

you better use bool(user.groups.filter(name=EX_GROUP_NAME)), count is unnecessary here ( nonzero is overloaded for querysets) and count is slow on transactional storages.

#

buriy (on September 7, 2009):

or just "if user.groups.filter(name=EX_GROUP_NAME)" :)

#

david_bgk (on September 8, 2009):

".count()" is faster but I agree that it can be tested directly in the "if" ;)

#

jdunck (on September 8, 2009):

I edited it to do the test in the "if" directly. Slightly less obvious code to me, now, but shrug.

#

(Forgotten your password?)