from django.urls import reverse_lazy from django.http import HttpResponseRedirect from django.views.generic import ( TemplateView, ListView, CreateView ) from .models import Job from .forms import JobForm, QuestionFormSet class Index(TemplateView): template_name = 'jobs/index.html' class JobList(ListView): context_object_name = 'jobs' model = Job class JobCreate(CreateView): model = Job form_class = JobForm success_url = reverse_lazy("jobs:list") def get(self, request, *args, **kwargs): self.object = None form = self.get_form(self.get_form_class()) question_form = QuestionFormSet() return self.render_to_response( self.get_context_data(form=form, question_form=question_form)) def post(self, request, *args, **kwargs): self.object = None form_class = self.get_form_class() form = self.get_form(form_class) question_form = QuestionFormSet(self.request.POST) if (form.is_valid() and question_form.is_valid()): return self.form_valid(form, question_form) else: return self.form_invalid(form, question_form) def form_valid(self, form, question_form): self.object = form.save(commit=False) self.object.posted_by = self.request.user self.object.save() question_form.instance = self.object question_form.save() return HttpResponseRedirect(self.get_success_url()) def form_invalid(self, form, question_form): return self.render_to_response( self.get_context_data( form=form, question_form=question_form))