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.