Robert
unread,Sep 16, 2009, 4:53:37 AM9/16/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Django users
As a business requirement we have to show login form in an ajax
response for some login_required actions. I want to change the
login_required decorator to behaive differently in case the request is
an ajax request and not a normal GET / POST request.
What do you think is the best way to override the login_required
decorator without changing django code ?
For now just changed the django/contrib/auth/decorators.py to add at
the bottom this code:
def __call__(self, request, *args, **kwargs):
if self.test_func(request.user):
return self.view_func(request, *args, **kwargs)
path = urlquote(request.get_full_path())
if request.is_ajax():
return HttpResponse(render_to_string(
settings.LOGIN_TEMPLATE_AJAX,
{self.redirect_field_name: path,},
),mimetype='text/plain')
tup = self.login_url, self.redirect_field_name, path
return HttpResponseRedirect('%s?%s=%s' % tup)
Any suggestion will be welcomed !
thanks in advance, robert