views.py 1.73 KB
Newer Older
1
from django.urls import reverse_lazy
2
from django.http import HttpResponseRedirect
3
from django.views.generic import (
4
    TemplateView, ListView, CreateView, DetailView
5
)
6 7

from .models import Job
8
from .forms import JobForm, QuestionFormSet
9

10 11 12 13 14 15 16 17

class Index(TemplateView):
    template_name = 'jobs/index.html'


class JobList(ListView):
    context_object_name = 'jobs'
    model = Job
18

19

20 21 22 23 24
class JobDetail(DetailView):
    context_object_name = 'job'
    model = Job


25 26 27 28 29
class JobCreate(CreateView):
    model = Job
    form_class = JobForm
    success_url = reverse_lazy("jobs:list")

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
    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))