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.

Reply via email to