Guest User

Untitled

a guest
Sep 17th, 2019
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.68 KB | None | 0 0
  1. from django.shortcuts import render
  2. from django.contrib.auth.mixins import (LoginRequiredMixin,
  3.                                         PermissionRequiredMixin)
  4.  
  5. from django.contrib.admin.views.decorators import staff_member_required
  6.  
  7.  
  8. from django.urls import reverse, reverse_lazy
  9. from django.views import generic
  10.  
  11. from courses.models import Course
  12. from courses.forms import CourseForm, CourseUnitFormset
  13.  
  14. class CreateCourse(LoginRequiredMixin,generic.CreateView):
  15.     form_class = CourseForm
  16.     template_name = 'courses/course_form.html'
  17.  
  18.     def get_success_url(self):
  19.         return reverse('courses:list')
  20.  
  21.     def get_context_data(self, **kwargs):
  22.         context = super(CreateCourse, self).get_context_data(**kwargs)
  23.         if self.request.POST:
  24.             context['courseunit_formset'] = CourseUnitFormset(self.request.POST)
  25.         else:
  26.             context['courseunit_formset'] = CourseUnitFormset()
  27.         return context
  28.  
  29.     def form_valid(self, form):
  30.         form.instance.user = self.request.user
  31.         context = self.get_context_data(form=form)
  32.         formset = context['courseunit_formset']
  33.         if formset.is_valid():
  34.             response = super().form_valid(form)
  35.             formset.instance = self.object
  36.             formset.save()
  37.             return response
  38.         else:
  39.             return super().form_invalid(form)
  40.  
  41. class SingleCourse(generic.DetailView):
  42.     model = Course
  43.  
  44. class ListCourses(generic.ListView):
  45.     model = Course
  46.     paginate_by = 10
  47.  
  48. class DeleteCourse(LoginRequiredMixin,generic.DeleteView):
  49.     model = Course
  50.     success_url = reverse_lazy('courses:list')
  51.  
  52. class UpdateCourse(LoginRequiredMixin,generic.UpdateView):
  53.     form_class = CourseForm
  54.     template_name = 'courses/course_form.html'
  55.     model = Course
  56.  
  57.     def get_success_url(self):
  58.         return reverse('courses:show', kwargs={'pk': self.kwargs['pk']})
  59.  
  60.     def get_context_data(self, **kwargs):
  61.         context = super(UpdateCourse, self).get_context_data(**kwargs)
  62.         if self.request.POST:
  63.             context['courseunit_formset'] = CourseUnitFormset(self.request.POST, instance=self.object)
  64.             context['courseunit_formset'].full_clean()
  65.         else:
  66.             context['courseunit_formset'] = CourseUnitFormset(instance=self.object)
  67.         return context
  68.  
  69.     def form_valid(self, form):
  70.         context = self.get_context_data(form=form)
  71.         formset = context['courseunit_formset']
  72.         if formset.is_valid():
  73.             response = super().form_valid(form)
  74.             formset.instance = self.object
  75.             formset.save()
  76.             return response
  77.         else:
  78.             return super().form_invalid(form)
Advertisement
Add Comment
Please, Sign In to add comment