+
+
+
+
+
+
+ | Job Title |
+ Created On |
+ Location |
+ Job Type |
+ Status |
+
+
+
+
+ {% for job in jobs %}
+
+
+ | {{ job.job_title }} |
+ {{ job.created_on}} |
+ {{ job.location}} |
+ {{ job.job_type}} |
+
+ {% if job.status %}
+ Closed
+ {% else %}
+ Open
+ {% endif %}
+ |
+
+
+
+ {% endfor %}
+
+
+
+
+
+
+{% endblock content %}
\ No newline at end of file
diff --git a/job_portal/recruiter/templates/index.html b/job_portal/recruiter/templates/index.html
new file mode 100644
index 0000000..ae80525
--- /dev/null
+++ b/job_portal/recruiter/templates/index.html
@@ -0,0 +1,26 @@
+{% extends 'hire_base.html' %}
+{% load crispy_forms_tags %}
+
+{% block content %}
+
+
+
+
Post a Job
+
+{% for message in messages %}
+
+
+ {{ message }}
+
+{% endfor %}
+
+
+
+
+{% endblock content %}
\ No newline at end of file
diff --git a/job_portal/recruiter/templates/job_details.html b/job_portal/recruiter/templates/job_details.html
new file mode 100644
index 0000000..00123b8
--- /dev/null
+++ b/job_portal/recruiter/templates/job_details.html
@@ -0,0 +1,49 @@
+{% extends 'hire_base.html' %}
+{% block content %}
+
+
+
+
+
+
+
+
Location: {{jobs.location}} || No. Of Positions {{jobs.vacany}}
+
+
Description
+
{{ jobs.description|safe|urlize|linebreaks }}
+ {% if tasks.description == '' %}
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - Created On : {{jobs.created_on}}
+ - Label : {{jobs.job_type}}
+ {% if tasks.completed %}
+ - Status : Closed
+ {% else %}
+ - Status : Open
+ {% endif %}
+
+
+
+
+
+
+{% endblock content %}
\ No newline at end of file
diff --git a/job_portal/recruiter/templates/job_edit.html b/job_portal/recruiter/templates/job_edit.html
new file mode 100644
index 0000000..7e144ca
--- /dev/null
+++ b/job_portal/recruiter/templates/job_edit.html
@@ -0,0 +1,12 @@
+{% extends 'hire_base.html' %}
+{% load crispy_forms_tags %}
+
+{% block content %}
+
+
+
+{% endblock content %}
diff --git a/job_portal/recruiter/templates/jobs_display.html b/job_portal/recruiter/templates/jobs_display.html
new file mode 100644
index 0000000..d44d392
--- /dev/null
+++ b/job_portal/recruiter/templates/jobs_display.html
@@ -0,0 +1,20 @@
+
+
+
+
+
ModelForm Tutorial
+
+
+
All User Details
+
+ {% for item in jobs %}
+
+ | Title:{{ item.job_title }} |
+
+
+
|
+
+ {% endfor %}
+
+
+
\ No newline at end of file
diff --git a/job_portal/recruiter/templates/profile.html b/job_portal/recruiter/templates/profile.html
new file mode 100644
index 0000000..e69de29
diff --git a/job_portal/recruiter/templates/registration/login.html b/job_portal/recruiter/templates/registration/login.html
new file mode 100644
index 0000000..59abf27
--- /dev/null
+++ b/job_portal/recruiter/templates/registration/login.html
@@ -0,0 +1,19 @@
+{% extends 'hire_base.html' %}
+{% load crispy_forms_tags %}
+{% block content %}
+
+
+
+
+
+ Are you new here?
Sign-up.
+
+
+{% endblock content %}
\ No newline at end of file
diff --git a/job_portal/recruiter/templates/signup.html b/job_portal/recruiter/templates/signup.html
new file mode 100644
index 0000000..c3a9ce2
--- /dev/null
+++ b/job_portal/recruiter/templates/signup.html
@@ -0,0 +1,10 @@
+{% extends 'hire_base.html' %}
+{% load crispy_forms_tags %}
+{% block content %}
+
Sign up
+
+{% endblock content %}
\ No newline at end of file
diff --git a/job_portal/recruiter/urls.py b/job_portal/recruiter/urls.py
new file mode 100644
index 0000000..5b97cf1
--- /dev/null
+++ b/job_portal/recruiter/urls.py
@@ -0,0 +1,12 @@
+from django.urls import path
+from . import views
+
+urlpatterns = [
+ path('', views.index, name = 'index'),
+ path('display/', views.display, name = 'display'),
+ path('dashboard/', views.dashboard, name = 'dashboard'),
+ path('job_details/
/', views.job_details, name='job_details'),
+ path('job_edit//edit/', views.JobUpdate.as_view(), name='job_edit'),
+ # path('jobnew/', views.jobPost, name='job_new'), # new
+
+]
\ No newline at end of file
diff --git a/job_portal/recruiter/views.py b/job_portal/recruiter/views.py
index 91ea44a..6e7c65d 100644
--- a/job_portal/recruiter/views.py
+++ b/job_portal/recruiter/views.py
@@ -1,3 +1,68 @@
from django.shortcuts import render
+from .models import Job
+from django.template import loader
+# from django.http import HttpResponse
+from django.forms import modelformset_factory
+from .forms import PostJobForm
+from django.contrib import messages
+from django.contrib.auth.decorators import login_required
+from django.views.generic.edit import UpdateView
+from django.contrib.auth.mixins import LoginRequiredMixin # new
+# Create your views here.
# Create your views here.
+# def index(request):
+# return render(request, "hire_home.html")
+
+@login_required
+def index(request):
+ form = PostJobForm()
+
+ if request.method == 'POST':
+ print(request.POST)
+ form = PostJobForm(request.POST)
+ if form.is_valid():
+ obj = form.save(commit=False)
+ obj.recruiter_name = request.user
+ obj.save()
+
+ messages.success(request, 'Your job posted successfully!')
+ else:
+ messages.warning(request, 'Please correct the error below.')
+ context = {'form' : form}
+ return render(request, 'index.html', context)
+
+@login_required
+def display(request):
+ jobs = Job.objects.all()
+ return render(request, 'display.html', {
+ 'jobs' : jobs
+ })
+
+@login_required
+def dashboard(request):
+ jobs = Job.objects.filter(recruiter_name=request.user)
+
+ return render(request, 'hire_dashboard.html', {
+ 'jobs' : jobs,
+ 'open' : Job.objects.filter(recruiter_name=request.user,status=0 ).count(),
+ 'closed' : Job.objects.filter(recruiter_name=request.user, status=1).count(),
+ })
+
+@login_required
+def job_details(request, job_id):
+ jobs = Job.objects.get(pk=job_id)
+ return render(request, 'job_details.html',{
+ 'jobs' : jobs,
+ })
+
+class JobUpdate(LoginRequiredMixin,UpdateView):
+ model = Job
+ template_name = 'job_edit.html'
+ fields = ['job_title','company_name','description','job_type','location','status','vacany','email','phone_number']
+
+ def dispatch(self, request, *args, **kwargs): # new
+ obj = self.get_object()
+ if obj.recruiter_name != self.request.user:
+ raise PermissionDenied
+ return super().dispatch(request, *args, **kwargs)
\ No newline at end of file
diff --git a/job_portal/seeker/templates/seeker_base.html b/job_portal/seeker/templates/seeker_base.html
new file mode 100644
index 0000000..c6bcda3
--- /dev/null
+++ b/job_portal/seeker/templates/seeker_base.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+ Hello, world!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% block content %}
+
+ {% endblock content %}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/job_portal/seeker/templates/seekerdisplay.html b/job_portal/seeker/templates/seekerdisplay.html
new file mode 100644
index 0000000..f156b6a
--- /dev/null
+++ b/job_portal/seeker/templates/seekerdisplay.html
@@ -0,0 +1,23 @@
+{% extends 'seeker_base.html' %}
+{% block content %}
+
+
+
+ {% for job in jobs %}
+
+
+
+
{{job.company_name}}|{{job.location}}|{{job.job_type}}
+
{{job.description}}
+
No. of Post : {{job.vacany}}
+
Apply Here
+
+
+
+ {% endfor %}
+
+
+
+{% endblock content %}
\ No newline at end of file
diff --git a/job_portal/seeker/urls.py b/job_portal/seeker/urls.py
new file mode 100644
index 0000000..260c3a0
--- /dev/null
+++ b/job_portal/seeker/urls.py
@@ -0,0 +1,6 @@
+from django.urls import path
+from . import views
+
+urlpatterns = [
+ path("job/", views.display, name = "home"),
+]
\ No newline at end of file
diff --git a/job_portal/seeker/views.py b/job_portal/seeker/views.py
index 91ea44a..936dc18 100644
--- a/job_portal/seeker/views.py
+++ b/job_portal/seeker/views.py
@@ -1,3 +1,15 @@
from django.shortcuts import render
+from recruiter.models import Job
+from django.template import loader
+# from django.http import HttpResponse
+from django.forms import modelformset_factory
+from recruiter.forms import PostJobForm
+from django.contrib import messages
# Create your views here.
+
+def display(request):
+ jobs = Job.objects.all()
+ return render(request, 'seekerdisplay.html', {
+ 'jobs' : jobs
+ })
\ No newline at end of file
diff --git a/job_portal/users/__init__.py b/job_portal/users/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/job_portal/users/__pycache__/__init__.cpython-38.pyc b/job_portal/users/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..61446fa
Binary files /dev/null and b/job_portal/users/__pycache__/__init__.cpython-38.pyc differ
diff --git a/job_portal/users/__pycache__/admin.cpython-38.pyc b/job_portal/users/__pycache__/admin.cpython-38.pyc
new file mode 100644
index 0000000..1bc4642
Binary files /dev/null and b/job_portal/users/__pycache__/admin.cpython-38.pyc differ
diff --git a/job_portal/users/__pycache__/models.cpython-38.pyc b/job_portal/users/__pycache__/models.cpython-38.pyc
new file mode 100644
index 0000000..7c5876e
Binary files /dev/null and b/job_portal/users/__pycache__/models.cpython-38.pyc differ
diff --git a/job_portal/users/admin.py b/job_portal/users/admin.py
new file mode 100644
index 0000000..2e7b859
--- /dev/null
+++ b/job_portal/users/admin.py
@@ -0,0 +1,5 @@
+from django.contrib import admin
+from .models import Profile
+# Register your models here.
+
+admin.site.register(Profile)
\ No newline at end of file
diff --git a/job_portal/users/apps.py b/job_portal/users/apps.py
new file mode 100644
index 0000000..4ce1fab
--- /dev/null
+++ b/job_portal/users/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class UsersConfig(AppConfig):
+ name = 'users'
diff --git a/job_portal/users/migrations/0001_initial.py b/job_portal/users/migrations/0001_initial.py
new file mode 100644
index 0000000..dd592ba
--- /dev/null
+++ b/job_portal/users/migrations/0001_initial.py
@@ -0,0 +1,25 @@
+# Generated by Django 3.1 on 2020-10-01 11:32
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Profile',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('image', models.ImageField(default='', upload_to='profile_pics')),
+ ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+ ],
+ ),
+ ]
diff --git a/job_portal/users/migrations/__init__.py b/job_portal/users/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/job_portal/users/migrations/__pycache__/0001_initial.cpython-38.pyc b/job_portal/users/migrations/__pycache__/0001_initial.cpython-38.pyc
new file mode 100644
index 0000000..62e95bd
Binary files /dev/null and b/job_portal/users/migrations/__pycache__/0001_initial.cpython-38.pyc differ
diff --git a/job_portal/users/migrations/__pycache__/__init__.cpython-38.pyc b/job_portal/users/migrations/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..3bb4faf
Binary files /dev/null and b/job_portal/users/migrations/__pycache__/__init__.cpython-38.pyc differ
diff --git a/job_portal/users/models.py b/job_portal/users/models.py
new file mode 100644
index 0000000..8b1d46f
--- /dev/null
+++ b/job_portal/users/models.py
@@ -0,0 +1,10 @@
+from django.db import models
+from django.contrib.auth.models import User
+# Create your models here.
+
+class Profile(models.Model):
+ user = models.OneToOneField(User, on_delete=models.CASCADE)
+ image = models.ImageField(default='', upload_to='profile_pics')
+
+ def __str__(self):
+ return self.user.username
diff --git a/job_portal/users/tests.py b/job_portal/users/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/job_portal/users/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/job_portal/users/views.py b/job_portal/users/views.py
new file mode 100644
index 0000000..91ea44a
--- /dev/null
+++ b/job_portal/users/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.