61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
from django.urls import reverse_lazy
|
|
from django.http import HttpResponseRedirect
|
|
from django.views.generic import (
|
|
TemplateView, ListView, CreateView, DetailView
|
|
)
|
|
|
|
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 JobDetail(DetailView):
|
|
context_object_name = 'job'
|
|
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))
|