I should also add that the functionality described in the docs simply did not work for me: http://docs.djangoproject.com/en/dev//topics/class-based-views/#decorating-the-class
My attempt to follow that approach is registered here: http://dpaste.com/hold/423359/ Sincerely, Andre Terra On Wed, Feb 16, 2011 at 4:41 PM, Andre Terra <andrete...@gmail.com> wrote: > Thank you for sharing that, Pascal. I'm already using it on my project! > > I've modified get_login_url to fallback to settings.LOGIN_URL, though. > > I'll keep an eye open on the development of this, as CBVs really are great > to work with. > > > Sincerely, > Andre Terra > > > > On Wed, Feb 9, 2011 at 4:06 PM, Pascal Germroth <funkyco...@gmail.com>wrote: > >> Hi, >> >> >> To make things a bit easier, I'm about to write my own mixin for that >> so >> >> I only have to provide a method that checks if credentials are OK. >> > >> > As you've noticed, you can override the dispatch to decorate the view >> > as required, and if you have a common authentication pattern, you can >> > put that logic into a mixin. >> >> >> For future reference, this is what I use now: >> >> >> class LoginMixin(object): >> def get_test_func(self): >> return getattr(self, 'test_func', lambda u: u.is_authenticated()) >> def get_login_url(self): >> return getattr(self, 'login_url', None) >> def get_redirect_field_name(self): >> return getattr(self, 'redirect_field_name', None) >> def dispatch(self, request, *args, **kwargs): >> from django.contrib.auth.decorators import user_passes_test >> return user_passes_test( >> self.get_test_func(), >> login_url = self.get_login_url(), >> redirect_field_name = self.get_redirect_field_name() >> )(super(LoginMixin, self).dispatch >> )(request, *args, **kwargs) >> >> >> class DashboardView(LoginMixin, TemplateView): >> login_url = '/base/login' >> template_name = 'dashboard.html' >> >> >> >> LoginMixin *must* be the first base class, otherwise it could not >> override View.dispatch in the other base classes. >> >> >> -- >> Pascal Germroth >> >> -- >> 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 >> django-users+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/django-users?hl=en. >> >> > -- 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 django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.