67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
from django.contrib.auth.decorators import login_required
|
|
from django.contrib.messages.views import SuccessMessageMixin
|
|
from django.shortcuts import get_object_or_404
|
|
from django.utils.decorators import method_decorator
|
|
|
|
from django.views.generic import TemplateView, ListView, CreateView, DetailView
|
|
|
|
from jobs.forms import CreateJobForm
|
|
from jobs.models import Job, Category
|
|
|
|
|
|
class HomeView(ListView):
|
|
template_name = 'jobs/index.html'
|
|
context_object_name = 'jobs'
|
|
model = Job
|
|
paginate_by = 3
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(HomeView, self).get_context_data(**kwargs)
|
|
context['categories'] = Category.objects.all()
|
|
return context
|
|
|
|
|
|
@method_decorator(login_required(login_url='/'), name='dispatch')
|
|
class CreateJobView(SuccessMessageMixin, CreateView):
|
|
model = Job
|
|
template_name = 'jobs/create-jobs.html'
|
|
form_class = CreateJobForm
|
|
success_url = '/'
|
|
success_message = "Job has been posted."
|
|
|
|
def form_valid(self, form):
|
|
job = form.save(commit=False)
|
|
job.employer = self.request.user
|
|
job.save()
|
|
return super(CreateJobView, self).form_valid(form)
|
|
|
|
|
|
class SingleJobView(DetailView):
|
|
template_name = 'jobs/single.html'
|
|
model = Job
|
|
context_object_name = 'job'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(SingleJobView, self).get_context_data(**kwargs)
|
|
context['categories'] = Category.objects.all()
|
|
return context
|
|
|
|
|
|
class CategoryDetailView(ListView):
|
|
model = Job
|
|
template_name = 'jobs/category-detail.html'
|
|
context_object_name = 'jobs'
|
|
paginate_by = 2
|
|
|
|
def get_queryset(self):
|
|
self.category = get_object_or_404(Category, pk=self.kwargs['pk'])
|
|
return Job.objects.filter(category=self.category)
|
|
|
|
def get_context_data(self, *args, **kwargs):
|
|
context = super(CategoryDetailView, self).get_context_data(*args, **kwargs)
|
|
self.category = get_object_or_404(Category, pk=self.kwargs['pk'])
|
|
context['categories'] = Category.objects.all()
|
|
context['category'] = self.category
|
|
return context
|
|
|