Advertisement
avaaren

Help))

Feb 24th, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.90 KB | None | 0 0
  1. from django.shortcuts import render, get_object_or_404, redirect
  2. from .models import Topic, Comment
  3. from .forms import NewTopicForm
  4. from django.views.generic.list import ListView
  5. from django.views.generic.detail import DetailView
  6. from django.views.generic.edit import CreateView, DeleteView, UpdateView
  7. from django.urls import reverse_lazy
  8. from django.utils.decorators import method_decorator
  9. from django.contrib.auth.decorators import login_required
  10. from slugify import slugify
  11.  
  12.  
  13. class TopicListView(ListView):
  14.     model = Topic
  15.     paginate_by = 5
  16.     context_object_name = 'topic_list'
  17.     template_name = 'help/forum.html'
  18.  
  19.  
  20. class TopicDetailView(DetailView):
  21.     template_name = 'help/topic_detail.html'
  22.     queryset = Topic.objects.all()
  23.     context_object_name = 'topic'
  24.  
  25.     def get_object(self):
  26.         slug = self.kwargs.get('slug')
  27.         year = self.kwargs.get('year')
  28.         month = self.kwargs.get('month')
  29.         day = self.kwargs.get('day')
  30.        
  31.         return get_object_or_404(Topic,
  32.                                  slug=slug, created__year=year,
  33.                                  created__month=month, created__day=day)
  34.  
  35.     def get_context_data(self, **kwargs):
  36.         data = super().get_context_data(**kwargs)
  37.         topic = self.get_object()
  38.         data['comments'] = topic.comments.all()
  39.         return data
  40.  
  41.  
  42. class TopicCreateView(CreateView):
  43.     form_class = NewTopicForm
  44.     model = Topic
  45.     template_name = 'help/create_topic.html'
  46.     # success_url = 'help/forum/'
  47.  
  48.    
  49.     @method_decorator(login_required)
  50.     def dispatch(self, *args, **kwargs):
  51.         return super(TopicCreateView, self).dispatch(*args, **kwargs)
  52.  
  53.     def form_valid(self, form):
  54.         instance = form.save(commit=False)
  55.         instance.author = self.request.user
  56.         instance.slug = slugify(instance.title)
  57.         instance.save()
  58.         return super().form_valid(form)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement