From a3afcd58f657dfff6ad2d1be584ea4fa7e0aa168 Mon Sep 17 00:00:00 2001 From: Eligiusz Kurzawa Date: Wed, 13 Jan 2021 19:41:55 +0100 Subject: [PATCH] 13# created post job --- jobs/forms.py | 9 +++ jobs/urls.py | 1 + jobs/views.py | 22 +++++- templates/base.html | 2 +- templates/jobs/create-jobs.html | 120 ++++++++++++++++++++++++++++++++ 5 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 jobs/forms.py create mode 100644 templates/jobs/create-jobs.html diff --git a/jobs/forms.py b/jobs/forms.py new file mode 100644 index 0000000..6f5d21d --- /dev/null +++ b/jobs/forms.py @@ -0,0 +1,9 @@ +from django import forms +from jobs.models import Job + + +class CreateJobForm(forms.ModelForm): + class Meta: + model = Job + fields = ['title', 'company', 'location', 'job_type', 'category', 'description'] + widgets = {'job_type': forms.RadioSelect} diff --git a/jobs/urls.py b/jobs/urls.py index cdcc362..c249e42 100644 --- a/jobs/urls.py +++ b/jobs/urls.py @@ -4,4 +4,5 @@ from .views import * app_name = "jobs" urlpatterns = [ path('', HomeView.as_view(), name="home"), + path('create-job/', CreateJobView.as_view(), name="create_job"), ] diff --git a/jobs/views.py b/jobs/views.py index b26290f..c5b7b11 100644 --- a/jobs/views.py +++ b/jobs/views.py @@ -1,5 +1,10 @@ -from django.views.generic import TemplateView, ListView +from django.contrib.auth.decorators import login_required +from django.contrib.messages.views import SuccessMessageMixin +from django.utils.decorators import method_decorator +from django.views.generic import TemplateView, ListView, CreateView + +from jobs.forms import CreateJobForm from jobs.models import Job, Category @@ -13,3 +18,18 @@ class HomeView(ListView): 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) diff --git a/templates/base.html b/templates/base.html index f7ba21c..d1a8f24 100644 --- a/templates/base.html +++ b/templates/base.html @@ -71,7 +71,7 @@ {{ user.first_name }}