On Apr 25, 11:46 am, Malcolm Tredinnick <[EMAIL PROTECTED]>
wrote:
> I have doubts that using reverse() in the settings file is going to
> work. It relies on the value of ROOT_URLCONF, which will only be
> available once the settings module has been fully imported. So trying to
> access that value *whilst* settings is being imported looks like it's
> doomed to failure.
>
> There are some cases where you're just going to need to put strings for
> URLs. Feel free to come up with a fix, though.

The first thing that comes to mind is to have a setting called
LOGIN_VIEW rather than LOGIN_URL.  Then, rather than functions
redirecting to LOGIN_URL they call reverse(LOGIN_VIEW) instead.

To use django.contrib.auth.decorators.user_passes_test as an example:

    from django.core.urlresolvers import reverse

    def user_passes_test(test_func, login_url=None):
        """
        Decorator for views that checks that the user passes the given
test,
        redirecting to the log-in page if necessary. The test should
be a callable
        that takes the user object and returns True if the user
passes.
        """
        def _dec(view_func):
            def _checklogin(request, *args, **kwargs):
                if test_func(request.user):
                    return view_func(request, *args, **kwargs)
                from django.conf import settings
                login_url = reverse(settings.LOGIN_VIEW)
                return HttpResponseRedirect('%s?%s=%s' % (login_url,
REDIRECT_FIELD_NAME, quote(request.get_full_path())))
            _checklogin.__doc__ = view_func.__doc__
            _checklogin.__dict__ = view_func.__dict__

            return _checklogin
        return _dec

(Pretty-printed code available at http://dpaste.com/hold/9032/.)

How does that look?

M.

--
Matt Riggott (mailto:[EMAIL PROTECTED]).
Dictated but not read.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to