I have a custom model in my Django 1.5 application (hosted on webfaction) and I get:
AssertionError at /admin/users/user/add/ sensitive_post_parameters didn't receive an HttpRequest. If you are decorating a classmethod, be sure to use @method_decorator.
Locally, it works great with the django runserver team. (Update: it worked locally because I used Django 1.5.2 locally, and I installed Django 1.5.4 on webfaction, and this exception only raises in 1.5. 4)
Any help is appreciated. Thanks
Here is the trace:
Environment: Request Method: GET Request URL: http://lts-demo.hashcode.pw/admin/users/user/add/ Django Version: 1.5.4 Python Version: 2.7.5 Installed Applications: ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'south', 'crumbs', 'compressor', 'apps.users', 'apps.leaves', 'apps.messaging') Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') Traceback: File "/home/mnazim/webapps/dcleh_lts/lib/python2.7/django/core/handlers/base.py" in get_response 115. response = callback(request, *callback_args, **callback_kwargs) File "/home/mnazim/webapps/dcleh_lts/lib/python2.7/django/contrib/admin/options.py" in wrapper 372. return self.admin_site.admin_view(view)(*args, **kwargs) File "/home/mnazim/webapps/dcleh_lts/lib/python2.7/django/utils/decorators.py" in _wrapped_view 91. response = view_func(request, *args, **kwargs) File "/home/mnazim/webapps/dcleh_lts/lib/python2.7/django/views/decorators/cache.py" in _wrapped_view_func 89. response = view_func(request, *args, **kwargs) File "/home/mnazim/webapps/dcleh_lts/lib/python2.7/django/contrib/admin/sites.py" in inner 202. return view(request, *args, **kwargs) File "/home/mnazim/webapps/dcleh_lts/lib/python2.7/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper 68. "sensitive_post_parameters didn't receive an HttpRequest. If you " Exception Type: AssertionError at /admin/users/user/add/ Exception Value: sensitive_post_parameters didn't receive an HttpRequest. If you are decorating a classmethod, be sure to use @method_decorator.
EDIT: Added models and admin.py
Here are the users /models.py
from django.conf import settings from django.db import models from django.contrib.auth.models import (AbstractBaseUser, BaseUserManager, Group, Permission, _user_has_module_perms, _user_has_perm) from django.utils.translation import ugettext_lazy as _ from django.utils import timezone from apps.helpers import values_to_choices, choices_to_values class User(AbstractBaseUser): username = models.CharField(max_length=128, unique=True) email = models.CharField(_('email address'), max_length=256, unique=True) name = models.CharField(max_length=512, blank=True) mobile_no = models.CharField(_('mobile number'), max_length=10) department = models.CharField(max_length=512) post = models.CharField(max_length=512) posting_location = models.CharField(max_length=512) district = models.CharField(max_length=16, choices=DISTRICT_CHOICES) can_recommend_leaves = models.BooleanField(default=True, help_text='Designates whether user can recommend leaves') can_approve_leaves = models.BooleanField(default=False, help_text='Designates whether user can approve leaves') is_staff = models.BooleanField(_('staff status'), default=False, help_text=_('Designates whether the user can log into this admin ' 'site.')) is_active = models.BooleanField(_('active'), default=True, help_text=_('Designates whether this user should be treated as ' 'active. Unselect this instead of deleting accounts.')) is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_('Designates that this user has all permissions without ' 'explicitly assigning them.')) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) groups = models.ManyToManyField(Group, verbose_name=_('groups'), related_name='users', blank=True, help_text=_('The groups this user belongs to. A user will ' 'get all permissions granted to each of ' 'his/her group.')) user_permissions = models.ManyToManyField(Permission, related_name='users', verbose_name=_('user permissions'), blank=True, help_text='Specific permissions for this user.') objects = UserManager() USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] class Meta: verbose_name = _('user') verbose_name_plural = _('users') db_table = 'users' def __unicode__(self): return "%s - %s(%s)" % (self.name, self.post, self.department) return self.name or self.username def get_absolute_url(self): return "/~%s/" % (self.username) def get_full_name(self): return self.name def get_short_name(self): "Returns the short name for the user." return self.name def get_group_permissions(self, obj=None): """ Returns a list of permission strings that this user has through his/her groups. This method queries all available auth backends. If an object is passed in, only permissions matching this object are returned. """ permissions = set() for backend in auth.get_backends(): if hasattr(backend, "get_group_permissions"): if obj is not None: permissions.update(backend.get_group_permissions(self, obj)) else: permissions.update(backend.get_group_permissions(self)) return permissions def get_all_permissions(self, obj=None): return _user_get_all_permissions(self, obj) def has_perm(self, perm, obj=None): """ Returns True if the user has the specified permission. This method queries all available auth backends, but returns immediately if any backend returns True. Thus, a user who has permission from a single auth backend is assumed to have permission in general. If an object is provided, permissions for this specific object are checked. """
Here are the users /admin.py
from django.db import transaction from django.contrib import admin from django.contrib.auth.forms import (UserCreationForm, UserChangeForm, AdminPasswordChangeForm) from django.utils.translation import ugettext, ugettext_lazy as _ from django.views.decorators.debug import sensitive_post_parameters from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_protect from django.shortcuts import get_object_or_404 from django.utils.html import escape from django.template.response import TemplateResponse from django.contrib import messages from django.http import HttpResponseRedirect, Http404 from .models import User