AdminPasswordChangeForm) from djangocg.contrib.auth.models import User, Group from djangocg.contrib import messages from djangocg.core.exceptions import PermissionDenied from djangocg.http import HttpResponseRedirect, Http404 from djangocg.shortcuts import get_object_or_404 from djangocg.template.response import TemplateResponse from djangocg.utils.html import escape from djangocg.utils.decorators import method_decorator from djangocg.utils.safestring import mark_safe from djangocg.utils import six from djangocg.utils.translation import ugettext, ugettext_lazy as _ from djangocg.views.decorators.csrf import csrf_protect from djangocg.views.decorators.debug import sensitive_post_parameters csrf_protect_m = method_decorator(csrf_protect) class GroupAdmin(admin.ModelAdmin): search_fields = ('name',) ordering = ('name',) filter_horizontal = ('permissions',) def formfield_for_manytomany(self, db_field, request=None, **kwargs): if db_field.name == 'permissions': qs = kwargs.get('queryset', db_field.rel.to.objects) # Avoid a major performance hit resolving permission names which # triggers a content_type load: kwargs['queryset'] = qs.select_related('content_type') return super(GroupAdmin, self).formfield_for_manytomany( db_field, request=request, **kwargs)
request.method = 'POST' self.assertTrue(isinstance(my_safe_view(request), HttpResponseNotAllowed)) request.method = 'PUT' self.assertTrue(isinstance(my_safe_view(request), HttpResponseNotAllowed)) request.method = 'DELETE' self.assertTrue(isinstance(my_safe_view(request), HttpResponseNotAllowed)) # For testing method_decorator, a decorator that assumes a single argument. # We will get type arguments if there is a mismatch in the number of arguments. def simple_dec(func): def wrapper(arg): return func("test:" + arg) return wraps(func)(wrapper) simple_dec_m = method_decorator(simple_dec) # For testing method_decorator, two decorators that add an attribute to the function def myattr_dec(func): def wrapper(*args, **kwargs): return func(*args, **kwargs) wrapper.myattr = True return wraps(func)(wrapper) myattr_dec_m = method_decorator(myattr_dec) def myattr2_dec(func): def wrapper(*args, **kwargs): return func(*args, **kwargs)