title: How to use permission_required decorators on django class-based views
body: <p>I'm having a bit of trouble understanding how the new CBVs work. My question is this, I need to require login in all the views, and in some of them, specific permissions. In function-based views I do that with @permission_required() and the login_required attribute in the view, but I don't know how to do this on the new views. Is there some section in the django docs explaining this? I didn't found anything. What is wrong in my code?</p>
  
  <p>I tried to use the @method_decorator but it replies "<strong>TypeError at /spaces/prueba/ _wrapped_view() takes at least 1 argument (0 given)</strong>"</p>
  
  <p>Here is the code (GPL):</p>
  
  <pre><code>from django.utils.decorators import method_decorator
  from django.contrib.auth.decorators import login_required, permission_required
  
  class ViewSpaceIndex(DetailView):
  
      """
      Show the index page of a space. Get various extra contexts to get the
      information for that space.
  
      The get_object method searches in the user 'spaces' field if the current
      space is allowed, if not, he is redirected to a 'nor allowed' page. 
      """
      context_object_name = 'get_place'
      template_name = 'spaces/space_index.html'
  
      @method_decorator(login_required)
      def get_object(self):
          space_name = self.kwargs['space_name']
  
          for i in self.request.user.profile.spaces.all():
              if i.url == space_name:
                  return get_object_or_404(Space, url = space_name)
  
          self.template_name = 'not_allowed.html'
          return get_object_or_404(Space, url = space_name)
  
      # Get extra context data
      def get_context_data(self, **kwargs):
          context = super(ViewSpaceIndex, self).get_context_data(**kwargs)
          place = get_object_or_404(Space, url=self.kwargs['space_name'])
          context['entities'] = Entity.objects.filter(space=place.id)
          context['documents'] = Document.objects.filter(space=place.id)
          context['proposals'] = Proposal.objects.filter(space=place.id).order_by('-pub_date')
          context['publication'] = Post.objects.filter(post_space=place.id).order_by('-post_pubdate')
          return context
  </code></pre>