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 -~----------~----~----~----~------~----~------~--~---