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 }}