18 changed files with 473 additions and 91 deletions
@ -1,5 +1,5 @@
|
||||
from django.contrib import admin |
||||
|
||||
from .models import Job, Application, Tag, Question, Answer |
||||
from .models import Job, Application, Tag, Question, Answer, JobMessage |
||||
|
||||
admin.site.register([Job, Application, Tag, Question, Answer]) |
||||
admin.site.register([Job, Application, Tag, Question, Answer, JobMessage]) |
||||
|
@ -0,0 +1,26 @@
|
||||
# Generated by Django 2.1.2 on 2019-03-16 03:23 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
('jobs', '0003_auto_20181020_0622'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='JobMessage', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('text', models.TextField()), |
||||
('date', models.DateTimeField(auto_now_add=True)), |
||||
('receiver', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='receiver', to=settings.AUTH_USER_MODEL)), |
||||
('sender', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sender', to=settings.AUTH_USER_MODEL)), |
||||
], |
||||
), |
||||
] |
@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.1.2 on 2019-03-17 02:12 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('jobs', '0004_jobmessage'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='job', |
||||
name='active', |
||||
field=models.BooleanField(default=True), |
||||
), |
||||
] |
@ -1,31 +0,0 @@
|
||||
{% extends 'base.html' %} |
||||
{% block body_content %} |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center"> |
||||
<h1 class="display-4">Applications</h1> |
||||
<p class="lead"></p> |
||||
</div> |
||||
{% for application in applications %} |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<h4 class="card-title"> |
||||
<a href="{{ application.get_absolute_url }}">Submitted by: {{ application.applicant }}</a> |
||||
</h4> |
||||
<p class="card-text"> |
||||
Submitted: {{ application.created }} |
||||
</p> |
||||
<p class="card-text"> |
||||
{{ application.cover_text }} |
||||
</p> |
||||
<ol> |
||||
{% for answer in application.answers.all %} |
||||
<li>{{answer.question}}<p>{{answer.text}}</p></li> |
||||
{% endfor %} |
||||
</ol> |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
</div> |
||||
{% endblock %} |
@ -0,0 +1,36 @@
|
||||
{% extends 'base.html' %} |
||||
{% block body_content %} |
||||
{% load crispy_forms_tags %} |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center"> |
||||
<h1 class="h2 text-center">{{ title }}</h1> |
||||
<p class="lead"></p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="table-wrapper-scroll-y my-custom-scrollbar"> |
||||
<table class="table table-hover table-bordered"> |
||||
<thead> |
||||
<tr> |
||||
<th scope="col">Conversation with {{ person }}</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{% for message in jobmessage %} |
||||
<tr> |
||||
<td>{{ message.sender }}: {{ message.text }}</td> |
||||
</tr> |
||||
{% endfor %} |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
<div class="dropdown-divider"></div> |
||||
<form action="{% url 'jobs:send_message' %}" method="POST"> |
||||
{% csrf_token %} |
||||
<input type="hidden" value="{{ person.id }}" name="receiver_id"> |
||||
{{ form|crispy }} |
||||
<input class="btn btn-primary btn-block" type="submit" value="Send Message"> |
||||
</form> |
||||
|
||||
{% endblock %} |
@ -0,0 +1,42 @@
|
||||
{% extends 'base.html' %} |
||||
{% block body_content %} |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center"> |
||||
<h1 class="display-4">{{ title }}</h1> |
||||
<p class="lead"></p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="table-responsive"> |
||||
<table class="table table-hover table-bordered"> |
||||
<thead> |
||||
<tr> |
||||
<th scope="col">Job Title</th> |
||||
<th scope="col">Date</th> |
||||
<th scope="col">Action</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{% for job in jobs %} |
||||
<tr> |
||||
<td style="vertical-align: middle">{{ job.title|truncatechars:65 }}</td> |
||||
<td style="vertical-align: middle">{{ job.created.date }}</td> |
||||
<td style="vertical-align: middle"> |
||||
<form action="{% url 'jobs:job_toggle' %}" method="post">{% csrf_token %} |
||||
<input type="hidden" name="job_id" value="{{ job.id }}"> |
||||
{% if job.active %} |
||||
<button type="submit" class="btn btn-warning btn-block">Deactivate</button> |
||||
{% else %} |
||||
<button type="submit" class="btn btn-success btn-block">Activate</button> |
||||
{% endif %} |
||||
</form> |
||||
</td> |
||||
</tr> |
||||
{% endfor %} |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
{% endblock %} |
||||
|
@ -0,0 +1,30 @@
|
||||
{% extends 'base.html' %} |
||||
{% block body_content %} |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center"> |
||||
<h1 class="h2 text-center">{{ title }}</h1> |
||||
<p class="lead"></p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="table-wrapper-scroll-y my-custom-scrollbar"> |
||||
<table class="table table-hover table-bordered"> |
||||
<thead> |
||||
<tr> |
||||
<th scope="col">User</th> |
||||
<th scope="col">Last Message</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{% for message in jobmessage %} |
||||
<tr onclick="window.location.href = '{{ message.sender_id }}';"> |
||||
<td>{{ message.sender }}</td> |
||||
<td>{{ message.text|truncatechars:40 }}</td> |
||||
</tr> |
||||
{% endfor %} |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
{% endblock %} |
@ -0,0 +1,57 @@
|
||||
{% extends 'base.html' %} |
||||
{% load crispy_forms_tags %} |
||||
{% block body_content %} |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center"> |
||||
<h1 class="h2 text-center">{{ title }}</h1> |
||||
<p class="lead"></p> |
||||
</div> |
||||
{% for application in applications %} |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<h4 class="card-title"> |
||||
<a href="{{ application.job.get_absolute_url }}">{{ application.job }}</a> |
||||
</h4> |
||||
<p class="card-text"> |
||||
Submitted: {{ application.created }} |
||||
</p> |
||||
<p class="card-text"> |
||||
{{ application.cover_text }} |
||||
</p> |
||||
<ol> |
||||
{% for answer in application.answers.all %} |
||||
<li>{{answer.question}}<p>{{answer.text}}</p></li> |
||||
{% endfor %} |
||||
</ol> |
||||
<button class="btn btn-outline-primary btn-block" data-toggle="modal" data-target="#messageModal">Contact Applicant</button> |
||||
<div class="modal fade" id="messageModal" tabindex="-1" role="dialog" aria-labelledby="messageModalLabel" aria-hidden="true" style="vertical-align: center"> |
||||
<div class="modal-dialog modal-lg" role="document"> |
||||
<div class="modal-content"> |
||||
<div class="modal-header"> |
||||
<h5 class="modal-title" id="exampleModalLabel">Contact Applicant {{ application.applicant }}</h5> |
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> |
||||
<span aria-hidden="true">×</span> |
||||
</button> |
||||
</div> |
||||
<form action="{% url 'jobs:send_message' %}" method="POST">{% csrf_token %} |
||||
<div class="modal-body"> |
||||
<input type="hidden" value="{{ application.applicant_id }}" name="receiver_id"> |
||||
{{ form|crispy }} |
||||
</div> |
||||
<div class="modal-footer"> |
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> |
||||
<input class="btn btn-primary" type="submit" value="Send Message"> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
</div> |
||||
|
||||
{% endblock %} |
@ -0,0 +1,31 @@
|
||||
{% extends 'base.html' %} |
||||
{% block body_content %} |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center"> |
||||
<h1 class="h2 text-center">{{ title }}</h1> |
||||
<p class="lead"></p> |
||||
</div> |
||||
{% for application in applications %} |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<h4 class="card-title"> |
||||
<a href="{{ application.job.get_absolute_url }}">{{ application.job }}</a> |
||||
</h4> |
||||
<p class="card-text"> |
||||
Submitted: {{ application.created }} |
||||
</p> |
||||
<p class="card-text"> |
||||
{{ application.cover_text }} |
||||
</p> |
||||
<ol> |
||||
{% for answer in application.answers.all %} |
||||
<li>{{answer.question}}<p>{{answer.text}}</p></li> |
||||
{% endfor %} |
||||
</ol> |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
</div> |
||||
{% endblock %} |
@ -1,10 +1,18 @@
|
||||
{% extends 'base.html' %} |
||||
{% extends 'base.html' %} |
||||
{% load crispy_forms_tags %} |
||||
{% block title %}Login{% endblock %} |
||||
{% block body_content %} |
||||
<h2>Login</h2> |
||||
<form method="post"> |
||||
{% csrf_token %} {{ form.as_p }} |
||||
<button type="submit">Login</button> |
||||
</form> |
||||
Don't have an account? Sign up <a href="{% url 'signup' %}">here</a>. |
||||
|
||||
<div class="row justify-content-md-center"> |
||||
<div class="col-lg-6"> |
||||
<h1 class="my-3 text-center">Login</h1> |
||||
<form method="post"> |
||||
{% csrf_token %} {{ form|crispy }} |
||||
<button class="btn btn-primary btn-block" type="submit">Login</button> |
||||
</form> |
||||
<div class="mt-4 mb-2"> |
||||
Don't have an account? Sign up <a href="{% url 'signup' %}">here</a>. |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{% endblock %} |
Loading…
Reference in new issue