From d5d73f667ffb11638c812d25e3d64ae2599b7ec1 Mon Sep 17 00:00:00 2001 From: an3-aboobakuru <ali3.aboobakuru@live.uwe.ac.uk> Date: Sun, 15 Dec 2024 14:51:19 +0000 Subject: [PATCH] Update 18 files - /media/resume/.gitkeep - /media/resumes/.gitkeep - /media/resumes/ML_Submission_Final_Submission.pdf - /templates/base.html - /templates/candidate_details.html - /templates/candidatelist.html - /templates/index.html - /templates/joblist.html - /templates/messagebox.html - /templates/onboarding_form.html - /templates/password_reset.html - /templates/password_reset_done.html - /templates/accounts/employer_profile_edit.html - /templates/accounts/job_seeker_profile_edit.html - /templates/accounts/login.html - /templates/accounts/profile.html - /templates/accounts/register.html - /templates/accounts/archived_candidates.html --- media/{resume => resumes}/.gitkeep | 0 .../ML_Submission_Final_Submission.pdf | Bin 0 -> 37811 bytes templates/accounts/archived_candidates.html | 224 +++++++------- templates/accounts/employer_profile_edit.html | 41 +-- .../accounts/job_seeker_profile_edit.html | 41 +-- templates/accounts/login.html | 149 +++++----- templates/accounts/profile.html | 132 ++++----- templates/accounts/register.html | 128 ++++---- templates/base.html | 21 +- templates/candidate_details.html | 94 +++--- templates/candidatelist.html | 206 ++++++------- templates/index.html | 42 +-- templates/joblist.html | 228 +++++++------- templates/messagebox.html | 278 +++++++++--------- templates/onboarding_form.html | 144 ++++----- templates/password_reset.html | 43 +-- templates/password_reset_done.html | 22 +- 17 files changed, 893 insertions(+), 900 deletions(-) rename media/{resume => resumes}/.gitkeep (100%) create mode 100644 media/resumes/ML_Submission_Final_Submission.pdf diff --git a/media/resume/.gitkeep b/media/resumes/.gitkeep similarity index 100% rename from media/resume/.gitkeep rename to media/resumes/.gitkeep diff --git a/media/resumes/ML_Submission_Final_Submission.pdf b/media/resumes/ML_Submission_Final_Submission.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7c4d813632b1b367cf2f48f2188261c437455599 GIT binary patch literal 37811 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 RRR9MWx}(j_jE$g<1^~O!=br!o literal 0 HcmV?d00001 diff --git a/templates/accounts/archived_candidates.html b/templates/accounts/archived_candidates.html index 4f62aeb7..4f9995b6 100644 --- a/templates/accounts/archived_candidates.html +++ b/templates/accounts/archived_candidates.html @@ -1,112 +1,112 @@ -{% extends 'base.html' %} -{% block title %}Archived Candidates{% endblock title %} - -{% block content %} -<div class="container mt-5"> - <h1>Archived Candidates</h1> - <div class="d-flex justify-content-between mb-3"> - <!-- Search Form --> - <form method="get" action="" class="input-group"> - <input type="text" name="query" class="form-control" placeholder="Search by username, first name, or last name" value="{{ query }}"> - <button class="btn btn-primary" type="submit">Search</button> - </form> - - <div> - <a href="{% url 'message_box' %}" class="btn btn-secondary">Back to Message Box</a> - <form method="post" action="{% url 'delete_all_archived' %}" style="display: inline;"> - {% csrf_token %} - <button type="submit" class="btn btn-danger">Unarchive All</button> - </form> - </div> - </div> - - <!-- Archived Candidates Table --> - <table class="table table-bordered table-hover"> - <thead> - <tr> - <th>#</th> - <th>Username</th> - <th>First Name</th> - <th>Last Name</th> - <th>Email</th> - <th>Skills</th> - <th>Resume</th> - <th>Actions</th> <!-- Only one Actions column --> - </tr> - </thead> - <tbody> - {% for candidate in archived_candidates %} - <tr> - <td>{{ forloop.counter }}</td> - <td>{{ candidate.user.username }}</td> - <td>{{ candidate.first_name }}</td> - <td>{{ candidate.last_name }}</td> - <td> - {% if request.user in candidate.allowed_employers.all or candidate.cv_visibility %} - {{ candidate.user.email }} - {% else %} - <span style="color: red;">Restricted</span> - {% endif %} - </td> - <td>{{ candidate.skills }}</td> - <td> - {% if request.user in candidate.allowed_employers.all or candidate.cv_visibility %} - <a href="{{ candidate.resume.url }}" target="_blank" class="btn btn-sm btn-success">View Resume</a> - {% else %} - <span style="color: red;">Restricted</span> - {% endif %} - </td> - <td> - {% if request.user not in candidate.allowed_employers.all and not candidate.cv_visibility %} - <form method="post" action="{% url 'send_notification' candidate.user.id %}" style="display: inline-block;"> - {% csrf_token %} - <input type="hidden" name="source" value="archived_candidates"> - <button class="btn btn-warning">Request Details</button> - </form> - {% else %} - <span style="color: green;">Details Available</span> - {% endif %} - - <!-- Unarchive button --> - <form method="post" action="{% url 'delete_archived' candidate.id %}" style="display:inline-block; margin-left: 5px;"> - {% csrf_token %} - <button type="submit" class="btn btn-danger">Unarchive</button> - </form> - </td> - </tr> - {% empty %} - <tr> - <td colspan="8" class="text-center">No archived candidates available.</td> - </tr> - {% endfor %} - </tbody> - </table> - - <!-- Pagination Links --> - <nav aria-label="Page navigation"> - <ul class="pagination"> - {% if archived_candidates.has_previous %} - <li class="page-item"> - <a class="page-link" href="?page=1&query={{ query }}">First</a> - </li> - <li class="page-item"> - <a class="page-link" href="?page={{ archived_candidates.previous_page_number }}&query={{ query }}">Previous</a> - </li> - {% endif %} - {% for num in archived_candidates.paginator.page_range %} - <li class="page-item {% if archived_candidates.number == num %}active{% endif %}"> - <a class="page-link" href="?page={{ num }}&query={{ query }}">{{ num }}</a> - </li> - {% endfor %} - {% if archived_candidates.has_next %} - <li class="page-item"> - <a class="page-link" href="?page={{ archived_candidates.next_page_number }}&query={{ query }}">Next</a> - </li> - <li class="page-item"> - <a class="page-link" href="?page={{ archived_candidates.paginator.num_pages }}&query={{ query }}">Last</a> - </li> - {% endif %} - </ul> - </nav> -</div> -{% endblock content %} +{% extends 'base.html' %} +{% block title %}Archived Candidates{% endblock title %} + +{% block content %} +<div class="container mt-5"> + <h1>Archived Candidates</h1> + <div class="d-flex justify-content-between mb-3"> + <!-- Search Form to filter through the archived candidates --> + <form method="get" action="" class="input-group"> + <input type="text" name="query" class="form-control" placeholder="Search by username, first name, or last name" value="{{ query }}"> + <button class="btn btn-primary" type="submit">Search</button> + </form> + + <div> + <a href="{% url 'message_box' %}" class="btn btn-secondary">Back to Message Box</a> + <form method="post" action="{% url 'delete_all_archived' %}" style="display: inline;"> + {% csrf_token %} + <button type="submit" class="btn btn-danger">Unarchive All</button> + </form> + </div> + </div> + + <!-- Archived Candidates Table --> + <table class="table table-bordered table-hover"> + <thead> + <tr> + <th>#</th> + <th>Username</th> + <th>First Name</th> + <th>Last Name</th> + <th>Email</th> + <th>Skills</th> + <th>Resume</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + {% for candidate in archived_candidates %} + <tr> + <td>{{ forloop.counter }}</td> + <td>{{ candidate.user.username }}</td> + <td>{{ candidate.first_name }}</td> + <td>{{ candidate.last_name }}</td> + <td> + {% if request.user in candidate.allowed_employers.all or candidate.cv_visibility %} + {{ candidate.user.email }} + {% else %} + <span style="color: rgb(233, 45, 45);">Restricted</span> + {% endif %} + </td> + <td>{{ candidate.skills }}</td> + <td> + {% if request.user in candidate.allowed_employers.all or candidate.cv_visibility %} + <a href="{{ candidate.resume.url }}" target="_blank" class="btn btn-sm btn-success">View Resume</a> + {% else %} + <span style="color: rgb(247, 47, 47);">Restricted</span> + {% endif %} + </td> + <td> + {% if request.user not in candidate.allowed_employers.all and not candidate.cv_visibility %} + <form method="post" action="{% url 'send_notification' candidate.user.id %}" style="display: inline-block;"> + {% csrf_token %} + <input type="hidden" name="source" value="archived_candidates"> + <button class="btn btn-warning">Request Details</button> + </form> + {% else %} + <span style="color: rgb(105, 221, 105);">Details Available</span> + {% endif %} + + <!-- Unarchive button --> + <form method="post" action="{% url 'delete_archived' candidate.id %}" style="display:inline-block; margin-left: 5px;"> + {% csrf_token %} + <button type="submit" class="btn btn-danger">Unarchive</button> + </form> + </td> + </tr> + {% empty %} + <tr> + <td colspan="8" class="text-center">No archived candidates available.</td> + </tr> + {% endfor %} + </tbody> + </table> + + <!-- Pagination Links --> + <nav aria-label="Page navigation"> + <ul class="pagination"> + {% if archived_candidates.has_previous %} + <li class="page-item"> + <a class="page-link" href="?page=1&query={{ query }}">First</a> + </li> + <li class="page-item"> + <a class="page-link" href="?page={{ archived_candidates.previous_page_number }}&query={{ query }}">Previous</a> + </li> + {% endif %} + {% for num in archived_candidates.paginator.page_range %} + <li class="page-item {% if archived_candidates.number == num %}active{% endif %}"> + <a class="page-link" href="?page={{ num }}&query={{ query }}">{{ num }}</a> + </li> + {% endfor %} + {% if archived_candidates.has_next %} + <li class="page-item"> + <a class="page-link" href="?page={{ archived_candidates.next_page_number }}&query={{ query }}">Next</a> + </li> + <li class="page-item"> + <a class="page-link" href="?page={{ archived_candidates.paginator.num_pages }}&query={{ query }}">Last</a> + </li> + {% endif %} + </ul> + </nav> +</div> +{% endblock content %} diff --git a/templates/accounts/employer_profile_edit.html b/templates/accounts/employer_profile_edit.html index 7d88cdf7..8abbdf70 100644 --- a/templates/accounts/employer_profile_edit.html +++ b/templates/accounts/employer_profile_edit.html @@ -1,20 +1,21 @@ -{% extends 'base.html' %} -{% block title %}Edit Employer Profile{% endblock title %} -{% block content %} -<div class="container mt-5"> - <h2>Edit Employer Profile</h2> - <form method="post"> - {% csrf_token %} - <div class="form-group"> - <label for="username">Username:</label> - <input type="text" name="username" value="{{ user.username }}" class="form-control" required> - </div> - <div class="form-group"> - <label for="email">Email:</label> - <input type="email" name="email" value="{{ user.email }}" class="form-control" required> - </div> - {{ form.as_p }} - <button type="submit" class="btn btn-primary">Save Changes</button> - </form> -</div> -{% endblock %} +{% extends 'base.html' %} +{% block title %}Edit Employer Profile{% endblock title %} +{% block content %} +<!--Edit Profile Page--> +<div class="container mt-5"> + <h2>Edit Employer Profile</h2> + <form method="post"> + {% csrf_token %} + <div class="form-group"> + <label for="username">Username:</label> + <input type="text" name="username" value="{{ user.username }}" class="form-control" required> + </div> + <div class="form-group"> + <label for="email">Email:</label> + <input type="email" name="email" value="{{ user.email }}" class="form-control" required> + </div> + {{ form.as_p }} + <button type="submit" class="btn btn-primary">Save Changes</button> + </form> +</div> +{% endblock %} diff --git a/templates/accounts/job_seeker_profile_edit.html b/templates/accounts/job_seeker_profile_edit.html index 033a9d6c..8b85c9d5 100644 --- a/templates/accounts/job_seeker_profile_edit.html +++ b/templates/accounts/job_seeker_profile_edit.html @@ -1,20 +1,21 @@ -{% extends 'base.html' %} -{% block title %}Edit Job Seeker Profile{% endblock title %} -{% block content %} -<div class="container mt-5"> - <h2>Edit Job Seeker Profile</h2> - <form method="post" enctype="multipart/form-data"> - {% csrf_token %} - <div class="form-group"> - <label for="username">Username:</label> - <input type="text" name="username" value="{{ user.username }}" class="form-control" required> - </div> - <div class="form-group"> - <label for="email">Email:</label> - <input type="email" name="email" value="{{ user.email }}" class="form-control" required> - </div> - {{ form.as_p }} - <button type="submit" class="btn btn-primary">Save Changes</button> - </form> -</div> -{% endblock %} +{% extends 'base.html' %} +{% block title %}Edit Job Seeker Profile{% endblock title %} +{% block content %} +<!-- Used to edit the profile details such as the resume file and others, if there was no resume file it would do an error--> +<div class="container mt-5"> + <h2>Edit Job Seeker Profile</h2> + <form method="post" enctype="multipart/form-data"> + {% csrf_token %} + <div class="form-group"> + <label for="username">Username:</label> + <input type="text" name="username" value="{{ user.username }}" class="form-control" required> + </div> + <div class="form-group"> + <label for="email">Email:</label> + <input type="email" name="email" value="{{ user.email }}" class="form-control" required> + </div> + {{ form.as_p }} + <button type="submit" class="btn btn-primary">Save Changes</button> + </form> +</div> +{% endblock %} diff --git a/templates/accounts/login.html b/templates/accounts/login.html index e2c5b251..b134de5f 100644 --- a/templates/accounts/login.html +++ b/templates/accounts/login.html @@ -1,75 +1,74 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %}Login{% endblock title %} -{% block content %} -{% block styles %} -<link href="{% static 'css/login.css' %}" rel="stylesheet"> -{% endblock styles %} - -<body class="bg-light"> - <div class="container mt-5"> - <div class="row justify-content-center"> - <div class="col-md-6"> - <div class="card"> - <!-- Card Header --> - <h5 class="card-header text-center">Login</h5> - <div class="card-body"> - {% if user.is_authenticated %} - <!-- If user is logged in --> - <p class="text-success text-center">You are already logged in.</p> - <!-- Logout button --> - <a href="{% url 'logout' %}" class="btn btn-warning btn-block">Logout</a> - <!-- Delete account button --> - <form action="{% url 'delete_account' %}" method="post" onsubmit="return confirm('Are you sure you want to delete your account? This action cannot be undone.');"> - {% csrf_token %} - <input type="hidden" name="confirm_delete" value="yes" /> - <button type="submit" class="btn btn-danger btn-block mt-3">Delete Account</button> - </form> - {% else %} - <!-- If user is not logged in --> - <form method="post" action="{% url 'login' %}"> - {% csrf_token %} - <!-- Username Field --> - <div class="form-group"> - <label for="username">Username</label> - <input type="text" class="form-control" id="username" name="username" placeholder="Enter username" required> - </div> - <!-- Password Field --> - <div class="form-group"> - <label for="password">Password</label> - <input type="password" class="form-control" id="password" name="password" placeholder="Enter password" required> - </div> - <!-- Hidden Next Field --> - <input type="hidden" name="next" value="{{ request.GET.next }}"> - <a href="{% url 'password_reset' %}">Forgot your password?</a> - <!-- Login Button --> - <button type="submit" class="btn btn-primary btn-block">Login</button> - </form> - <hr> - <!-- Register Button --> - <a href="{% url 'register' %}" class="btn btn-secondary btn-block">Register</a> - {% endif %} - </div> - </div> - <!-- Display Messages --> - {% if messages %} - <div class="mt-4"> - {% for message in messages %} - <div class="alert {{ message.tags }} alert-dismissible fade show" role="alert"> - {{ message }} - <button type="button" class="close" data-dismiss="alert" aria-label="Close"> - <span aria-hidden="true">×</span> - </button> - </div> - {% endfor %} - </div> - {% endif %} - </div> - </div> - </div> - - <!-- Bootstrap and jQuery JS CDN for functionality --> - <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> - <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.2/dist/js/bootstrap.bundle.min.js"></script> -</body> -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block title %}Login{% endblock title %} +{% block content %} +{% block styles %} +<link href="{% static 'css/login.css' %}" rel="stylesheet"> +{% endblock styles %} +<!--Login Page for both --> +<body class="bg-light"> + <div class="container mt-5"> + <div class="row justify-content-center"> + <div class="col-md-6"> + <div class="card"> + <!-- Card for login header --> + <h5 class="card-header text-center">Login</h5> + <div class="card-body"> + {% if user.is_authenticated %} + <!-- If user is logged in --> + <p class="text-success text-center">You are already logged in.</p> + <!-- Logout button --> + <a href="{% url 'logout' %}" class="btn btn-warning btn-block">Logout</a> + <!-- Delete account button --> + <form action="{% url 'delete_account' %}" method="post" onsubmit="return confirm('Are you sure you want to delete your account? This action cannot be undone.');"> + {% csrf_token %} + <input type="hidden" name="confirm_delete" value="yes" /> + <button type="submit" class="btn btn-danger btn-block mt-3">Delete Account</button> + </form> + {% else %} + <!-- If user is not logged in --> + <form method="post" action="{% url 'login' %}"> + {% csrf_token %} + <!-- Username Field --> + <div class="form-group"> + <label for="username">Username</label> + <input type="text" class="form-control" id="username" name="username" placeholder="Enter username" required> + </div> + <!-- Password Field --> + <div class="form-group"> + <label for="password">Password</label> + <input type="password" class="form-control" id="password" name="password" placeholder="Enter password" required> + </div> + <input type="hidden" name="next" value="{{ request.GET.next }}"> + <a href="{% url 'password_reset' %}">Forgot your password?</a> + <!-- Login Button --> + <button type="submit" class="btn btn-primary btn-block">Login</button> + </form> + <hr> + <!-- Register Button --> + <a href="{% url 'register' %}" class="btn btn-secondary btn-block">Register</a> + {% endif %} + </div> + </div> + <!-- Display Messages --> + {% if messages %} + <div class="mt-4"> + {% for message in messages %} + <div class="alert {{ message.tags }} alert-dismissible fade show" role="alert"> + {{ message }} + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + {% endfor %} + </div> + {% endif %} + </div> + </div> + </div> + + <!-- Bootstrap and jQuery JS CDN for functionality --> + <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> + <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.2/dist/js/bootstrap.bundle.min.js"></script> +</body> +{% endblock content %} diff --git a/templates/accounts/profile.html b/templates/accounts/profile.html index 1bb70249..dc405660 100644 --- a/templates/accounts/profile.html +++ b/templates/accounts/profile.html @@ -1,66 +1,66 @@ -{% extends 'base.html' %} - -{% block title %}Profile{% endblock title %} - -{% block content %} -<div class="container mt-5"> - <div class="row justify-content-center"> - <div class="col-md-8"> - <div class="card"> - <h5 class="card-header text-center">Profile</h5> - <div class="card-body"> - <p><strong>Username:</strong> {{ user.username }}</p> - <p><strong>Role:</strong> {{ role }}</p> - - {% if role == 'Job Seeker' %} - <h5>Job Seeker Information</h5> - <p><strong>Contact Email:</strong> {{ user.email }}</p> - <p><strong>Resume:</strong> {{ resume }}</p> - <p><strong>Skills:</strong> {{ skills }}</p> - <form method="post" action="{% url 'toggle_full_details_visibility' %}"> - {% csrf_token %} - <button type="submit" class="btn btn-info"> - {% if cv_visibility %} - Hide email and CV from Employers - {% else %} - Show email and CV to Employers - {% endif %} - </button> - </form> - {% elif role == 'Employer' %} - <h5>Employer Information</h5> - <p><strong>Business Name:</strong> {{ business_name }}</p> - <p><strong>Business Type:</strong> {{ business_type }}</p> - <p><strong>Business Category:</strong> {{ business_category }}</p> - <p><strong>Location:</strong> {{ location }}</p> - <p><strong>Region:</strong> {{ region }}</p> - <p><strong>Business Email:</strong> {{ user.email }}</p> - <p><strong>Job Offered:</strong> {{ fields_for_jobs }}</p> - <p><strong>Status:</strong> {{ status }}</p> - {% else %} - <p>No additional information available.</p> - {% endif %} - - - {% if user.user_type == "job_seeker" %} - <a href="{% url 'job_seeker_profile_edit' %}" class="btn btn-primary">Edit Profile</a> - {% elif user.user_type == "employer" %} - <a href="{% url 'employer_profile_edit' %}" class="btn btn-primary">Edit Profile</a> - {% endif %} - - <!-- If user is logged in --> - <p class="text-success text-center">You are already logged in.</p> - <!-- Logout button --> - <a href="{% url 'logout' %}" class="btn btn-warning btn-block">Logout</a> - <!-- Delete account button --> - <form action="{% url 'delete_account' %}" method="post" onsubmit="return confirm('Are you sure you want to delete your account? This action cannot be undone.');"> - {% csrf_token %} - <input type="hidden" name="confirm_delete" value="yes" /> - <button type="submit" class="btn btn-danger btn-block mt-3">Delete Account</button> - </form> - </div> - </div> - </div> - </div> -</div> -{% endblock content %} +{% extends 'base.html' %} + +{% block title %}Profile{% endblock title %} + +{% block content %} +<div class="container mt-5"> + <div class="row justify-content-center"> + <div class="col-md-8"> + <div class="card"> + <h5 class="card-header text-center">Profile</h5> + <div class="card-body"> + <p><strong>Username:</strong> {{ user.username }}</p> + <p><strong>Role:</strong> {{ role }}</p> + <!--Seperate View for Job Seeker than the Employer in the profile page --> + {% if role == 'Job Seeker' %} + <h5>Job Seeker Information</h5> + <p><strong>Contact Email:</strong> {{ user.email }}</p> + <p><strong>Resume:</strong> {{ resume }}</p> + <p><strong>Skills:</strong> {{ skills }}</p> + <form method="post" action="{% url 'toggle_full_details_visibility' %}"> + {% csrf_token %} + <button type="submit" class="btn btn-info"> + {% if cv_visibility %} + Hide email and CV from Employers + {% else %} + Show email and CV to Employers + {% endif %} + </button> + </form> + {% elif role == 'Employer' %} + <h5>Employer Information</h5> + <p><strong>Business Name:</strong> {{ business_name }}</p> + <p><strong>Business Type:</strong> {{ business_type }}</p> + <p><strong>Business Category:</strong> {{ business_category }}</p> + <p><strong>Location:</strong> {{ location }}</p> + <p><strong>Region:</strong> {{ region }}</p> + <p><strong>Business Email:</strong> {{ user.email }}</p> + <p><strong>Job Offered:</strong> {{ fields_for_jobs }}</p> + <p><strong>Status:</strong> {{ status }}</p> + {% else %} + <p>No additional information available.</p> + {% endif %} + + + {% if user.user_type == "job_seeker" %} + <a href="{% url 'job_seeker_profile_edit' %}" class="btn btn-primary">Edit Profile</a> + {% elif user.user_type == "employer" %} + <a href="{% url 'employer_profile_edit' %}" class="btn btn-primary">Edit Profile</a> + {% endif %} + + <!-- If user is logged in --> + <p class="text-success text-center">You are already logged in.</p> + <!-- Logout button --> + <a href="{% url 'logout' %}" class="btn btn-warning btn-block">Logout</a> + <!-- Delete account button --> + <form action="{% url 'delete_account' %}" method="post" onsubmit="return confirm('Are you sure you want to delete your account? This action cannot be undone.');"> + {% csrf_token %} + <input type="hidden" name="confirm_delete" value="yes" /> + <button type="submit" class="btn btn-danger btn-block mt-3">Delete Account</button> + </form> + </div> + </div> + </div> + </div> +</div> +{% endblock content %} diff --git a/templates/accounts/register.html b/templates/accounts/register.html index ce47fdec..57b693c3 100644 --- a/templates/accounts/register.html +++ b/templates/accounts/register.html @@ -1,64 +1,64 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %}Register{% endblock title %} - -{% block content %} -{% block styles %} -<link href="{% static 'css/register.css' %}" rel="stylesheet"> -{% endblock styles %} - -<div class="container mt-5"> - <div class="row justify-content-center"> - <div class="col-md-8"> - <div class="card"> - <!-- Dynamic Title --> - <h5 class="card-header text-center" id="register-title">Candidate Registration</h5> - <div class="card-body"> - <!-- Candidate Registration Form --> - <form action="{% url 'register' %}" method="post" enctype="multipart/form-data" id="jobseeker-form" {% if form_type != 'jobseeker' %}style="display: none;"{% endif %}> - {% csrf_token %} - {{ jobseeker_form.as_p }} - <input type="hidden" name="is_jobseeker" value="1"> - <button type="submit" class="btn btn-primary btn-block">Register as Candidate</button> - </form> - - <!-- Employer Registration Form --> - <form action="{% url 'register' %}" method="post" id="employer-form" {% if form_type != 'employer' %}style="display: none;"{% endif %}> - {% csrf_token %} - {{ employer_form.as_p }} - <input type="hidden" name="is_employer" value="1"> - <button type="submit" class="btn btn-primary btn-block">Register as Employer</button> - </form> - </div> - </div> - - <!-- Toggle Button --> - <div class="text-center mt-3"> - <button id="toggle-register" class="btn btn-secondary">Switch to Employer Registration</button> - </div> - </div> - </div> -</div> - -<!-- JavaScript to Toggle Forms --> -<script> - document.getElementById('toggle-register').addEventListener('click', function () { - const jobSeekerForm = document.getElementById('jobseeker-form'); - const employerForm = document.getElementById('employer-form'); - const registerTitle = document.getElementById('register-title'); - const toggleButton = document.getElementById('toggle-register'); - - if (jobSeekerForm.style.display === 'none') { - jobSeekerForm.style.display = 'block'; - employerForm.style.display = 'none'; - registerTitle.textContent = 'Candidate Registration'; - toggleButton.textContent = 'Switch to Employer Registration'; - } else { - jobSeekerForm.style.display = 'none'; - employerForm.style.display = 'block'; - registerTitle.textContent = 'Employer Registration'; - toggleButton.textContent = 'Switch to Candidate Registration'; - } - }); -</script> -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block title %}Register{% endblock title %} + +{% block content %} +{% block styles %} +<link href="{% static 'css/register.css' %}" rel="stylesheet"> +{% endblock styles %} +<!--New Employer or Candidate registration--> +<div class="container mt-5"> + <div class="row justify-content-center"> + <div class="col-md-8"> + <div class="card"> + <!-- Dynamic Title --> + <h5 class="card-header text-center" id="register-title">Candidate Registration</h5> + <div class="card-body"> + <!-- Candidate Registration Form --> + <form action="{% url 'register' %}" method="post" enctype="multipart/form-data" id="jobseeker-form" {% if form_type != 'jobseeker' %}style="display: none;"{% endif %}> + {% csrf_token %} + {{ jobseeker_form.as_p }} + <input type="hidden" name="is_jobseeker" value="1"> + <button type="submit" class="btn btn-primary btn-block">Register as Candidate</button> + </form> + + <!-- Employer Registration Form --> + <form action="{% url 'register' %}" method="post" id="employer-form" {% if form_type != 'employer' %}style="display: none;"{% endif %}> + {% csrf_token %} + {{ employer_form.as_p }} + <input type="hidden" name="is_employer" value="1"> + <button type="submit" class="btn btn-primary btn-block">Register as Employer</button> + </form> + </div> + </div> + + <!-- Toggle Button --> + <div class="text-center mt-3"> + <button id="toggle-register" class="btn btn-secondary">Switch to Employer Registration</button> + </div> + </div> + </div> +</div> + +<!-- JavaScript to Toggle Forms --> +<script> + document.getElementById('toggle-register').addEventListener('click', function () { + const jobSeekerForm = document.getElementById('jobseeker-form'); + const employerForm = document.getElementById('employer-form'); + const registerTitle = document.getElementById('register-title'); + const toggleButton = document.getElementById('toggle-register'); + + if (jobSeekerForm.style.display === 'none') { + jobSeekerForm.style.display = 'block'; + employerForm.style.display = 'none'; + registerTitle.textContent = 'Candidate Registration'; + toggleButton.textContent = 'Switch to Employer Registration'; + } else { + jobSeekerForm.style.display = 'none'; + employerForm.style.display = 'block'; + registerTitle.textContent = 'Employer Registration'; + toggleButton.textContent = 'Switch to Candidate Registration'; + } + }); +</script> +{% endblock content %} diff --git a/templates/base.html b/templates/base.html index 0d705ce1..4b708b93 100644 --- a/templates/base.html +++ b/templates/base.html @@ -16,17 +16,12 @@ <!-- Title block that allows page-specific titles --> <title>{% block title %}Chilly Business{% endblock %}</title> - <!-- Stylesheets (Bootstrap, Google Fonts, and Custom Styles) --> + <!-- Stylesheets --> <link rel="stylesheet" type="text/css" href="{% static 'css/bootstrap.css' %}" /> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700;900&display=swap" rel="stylesheet"> <link href="{% static 'css/font-awesome.min.css' %}" rel="stylesheet" /> <link href="{% static 'css/style.css' %}" rel="stylesheet" /> - - - - - </head> <body class="sub_page"> @@ -60,7 +55,7 @@ {% if user.is_authenticated %} <button id="notification-bell" class="notification-bell" aria-label="Notifications"> <i class="fa fa-bell"></i> - {% if unread_count > 0 %} + {% if unread_count > 0 %}<!--Supposed to be a small icon to display unread new notifications, but doesn't work-->> <span class="notification-count">{{ unread_count }}</span> {% endif %} </button> @@ -115,21 +110,13 @@ </div> <div class="onboarding-content"> {% block content %} - <div class="onboarding-step"> - <h4>Step 1: Complete Your Profile</h4> - <p>Please provide all the necessary personal information to complete your profile.</p> - </div> - <div class="onboarding-step"> - <h4>Step 2: Review Company Policies</h4> - <p>Make sure to go through the company policies to understand our code of conduct.</p> - </div> - <a href="#" class="btn-next">Proceed to the Next Step</a> + {% endblock content %} </div> </div> </div> - <!-- Footer --> + <!-- Footer, Admin Login (the superuser), example company email and phone --> <footer style="text-align: center; margin-top: 20px;"> <p> © 2024 Chilly Business. All rights reserved. diff --git a/templates/candidate_details.html b/templates/candidate_details.html index aea286f7..e27dbff1 100644 --- a/templates/candidate_details.html +++ b/templates/candidate_details.html @@ -1,47 +1,47 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %}Candidate Details{% endblock title %} -{% block content %} -{% block styles %} -<link href="{% static 'css/candidate_details.css' %}" rel="stylesheet"> -{% endblock styles %} - -<div class="container mt-5"> - <h1 class="mb-4">Candidate Details</h1> - {% if restricted %} - <div class="alert alert-warning" role="alert"> - The details for this candidate are currently restricted. - </div> - <p>To view their details and CV, please request access.</p> - <form method="post" action="{% url 'send_notification' candidate.user.id %}" class="mt-3"> - {% csrf_token %} - <button type="submit" class="btn btn-warning">Request CV Access</button> - </form> - {% else %} - <div class="row"> - <div class="col-md-6 mb-3"> - <p><strong>First Name:</strong> {{ candidate.user.first_name }}</p> - </div> - <div class="col-md-6 mb-3"> - <p><strong>Last Name:</strong> {{ candidate.user.last_name }}</p> - </div> - </div> - - <div class="row"> - <div class="col-md-6 mb-3"> - <p><strong>Skills:</strong> {{ candidate.skills }}</p> - </div> - <div class="col-md-6 mb-3"> - <p><strong>Contact Email:</strong> {{ candidate.user.email }}</p> - </div> - </div> - - <div class="mb-3"> - <strong>CV:</strong> - <a href="{{ candidate.resume.url }}" target="_blank" class="btn btn-sm btn-info"> - View CV - </a> - </div> - {% endif %} -</div> -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block title %}Candidate Details{% endblock title %} +{% block content %} +{% block styles %} +<link href="{% static 'css/candidate_details.css' %}" rel="stylesheet"> +{% endblock styles %} +<!--Deatails of the candidates including the CV are available for viewing.--> +<div class="container mt-5"> + <h1 class="mb-4">Candidate Details</h1> + {% if restricted %} + <div class="alert alert-warning" role="alert"> + The details for this candidate are currently restricted. + </div> + <p>To view their details and CV, please request access.</p> + <form method="post" action="{% url 'send_notification' candidate.user.id %}" class="mt-3"> + {% csrf_token %} + <button type="submit" class="btn btn-warning">Request CV Access</button> + </form> + {% else %} + <div class="row"> + <div class="col-md-6 mb-3"> + <p><strong>First Name:</strong> {{ candidate.user.first_name }}</p> + </div> + <div class="col-md-6 mb-3"> + <p><strong>Last Name:</strong> {{ candidate.user.last_name }}</p> + </div> + </div> + + <div class="row"> + <div class="col-md-6 mb-3"> + <p><strong>Skills:</strong> {{ candidate.skills }}</p> + </div> + <div class="col-md-6 mb-3"> + <p><strong>Contact Email:</strong> {{ candidate.user.email }}</p> + </div> + </div> + + <div class="mb-3"> + <strong>CV:</strong> + <a href="{{ candidate.resume.url }}" target="_blank" class="btn btn-sm btn-info"> + View CV + </a> + </div> + {% endif %} +</div> +{% endblock content %} diff --git a/templates/candidatelist.html b/templates/candidatelist.html index 85447ec1..048cbf68 100644 --- a/templates/candidatelist.html +++ b/templates/candidatelist.html @@ -1,103 +1,103 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %}Candidate List{% endblock title %} -{% block content %} -{% block styles %} -<link href="{% static 'css/candidatelist.css' %}" rel="stylesheet"> -{% endblock styles %} -<h1>Candidate List</h1> - -<!-- Filters --> -<form method="get" class="mb-3"> - <div class="row"> - <!-- Skill Filter --> - <div class="col-md-4"> - <label for="skill">Filter by Skill:</label> - <input type="text" name="skill" id="skill" class="form-control" placeholder="e.g., Python, Java" value="{{ skill_filter }}"> - </div> - - <!-- Restricted Filter --> - <div class="col-md-4"> - <label for="restricted">Filter by Details Visibility:</label> - <select name="restricted" id="restricted" class="form-control"> - <option value="all" {% if restricted_filter == 'all' %}selected{% endif %}>All</option> - <option value="restricted" {% if restricted_filter == 'restricted' %}selected{% endif %}>Restricted</option> - <option value="visible" {% if restricted_filter == 'visible' %}selected{% endif %}>Visible</option> - </select> - </div> - - <!-- Submit Button --> - <div class="col-md-4 d-flex align-items-end"> - <button type="submit" class="btn btn-primary">Filter</button> - </div> - </div> -</form> - - -<table class="table table-bordered table-hover"> - <thead> - <tr> - <th>First Name</th> - <th>Last Name</th> - <th>Skills</th> - <th>Details Restricted</th> - <th>Actions</th> - </tr> - </thead> - <tbody> - {% for candidate in candidates %} - <tr> - <td>{{ candidate.user.first_name }}</td> - <td>{{ candidate.user.last_name }}</td> - <td>{{ candidate.skills }}</td> - <td> - {% if not candidate.cv_visibility %} - <span style="color: red;">Restricted</span> - {% else %} - <span style="color: green;">Visible</span> - {% endif %} - </td> - <td> - {% if candidate.cv_visibility %} - <a href="{% url 'candidate_details' candidate.id %}" class="btn btn-primary">View Details</a> - {% else %} - <form method="post" action="{% url 'send_notification' candidate.user.id %}"> - {% csrf_token %} - <input type="hidden" name="source" value="candidate_list"> - <button type="submit" class="btn btn-warning">Request Details Access</button> - </form> - {% endif %} - </td> - </tr> - {% endfor %} - </tbody> -</table> - - -<!-- Pagination --> -<nav aria-label="Page navigation"> - <ul class="pagination"> - {% if candidates.has_previous %} - <li class="page-item"> - <a class="page-link" href="?page=1&skill={{ skill_filter }}&restricted={{ restricted_filter }}">First</a> - </li> - <li class="page-item"> - <a class="page-link" href="?page={{ candidates.previous_page_number }}&skill={{ skill_filter }}&restricted={{ restricted_filter }}">Previous</a> - </li> - {% endif %} - {% for num in candidates.paginator.page_range %} - <li class="page-item {% if candidates.number == num %}active{% endif %}"> - <a class="page-link" href="?page={{ num }}&skill={{ skill_filter }}&restricted={{ restricted_filter }}">{{ num }}</a> - </li> - {% endfor %} - {% if candidates.has_next %} - <li class="page-item"> - <a class="page-link" href="?page={{ candidates.next_page_number }}&skill={{ skill_filter }}&restricted={{ restricted_filter }}">Next</a> - </li> - <li class="page-item"> - <a class="page-link" href="?page={{ candidates.paginator.num_pages }}&skill={{ skill_filter }}&restricted={{ restricted_filter }}">Last</a> - </li> - {% endif %} - </ul> -</nav> -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block title %}Candidate List{% endblock title %} +{% block content %} +{% block styles %} +<link href="{% static 'css/candidatelist.css' %}" rel="stylesheet"> +{% endblock styles %} +<h1>Candidate List</h1> + +<!-- Filters --> +<form method="get" class="mb-3"> + <div class="row"> + <!-- Skill filter to see which candidates excel at which job--> + <div class="col-md-4"> + <label for="skill">Filter by Skill:</label> + <input type="text" name="skill" id="skill" class="form-control" placeholder="e.g., Python, Java" value="{{ skill_filter }}"> + </div> + + <!-- Restricted Filter Used to filter out those who do not wish to readily give out personal details--> + <div class="col-md-4"> + <label for="restricted">Filter by Details Visibility:</label> + <select name="restricted" id="restricted" class="form-control"> + <option value="all" {% if restricted_filter == 'all' %}selected{% endif %}>All</option> + <option value="restricted" {% if restricted_filter == 'restricted' %}selected{% endif %}>Restricted</option> + <option value="visible" {% if restricted_filter == 'visible' %}selected{% endif %}>Visible</option> + </select> + </div> + + <!-- Submit Button --> + <div class="col-md-4 d-flex align-items-end"> + <button type="submit" class="btn btn-primary">Filter</button> + </div> + </div> +</form> + + +<table class="table table-bordered table-hover"> + <thead> + <tr> + <th>First Name</th> + <th>Last Name</th> + <th>Skills</th> + <th>Details Restricted</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + {% for candidate in candidates %} + <tr> + <td>{{ candidate.user.first_name }}</td> + <td>{{ candidate.user.last_name }}</td> + <td>{{ candidate.skills }}</td> + <td> + {% if not candidate.cv_visibility %} + <span style="color: red;">Restricted</span> + {% else %} + <span style="color: green;">Visible</span> + {% endif %} + </td> + <td> + {% if candidate.cv_visibility %} + <a href="{% url 'candidate_details' candidate.id %}" class="btn btn-primary">View Details</a> + {% else %} + <form method="post" action="{% url 'send_notification' candidate.user.id %}"> + {% csrf_token %} + <input type="hidden" name="source" value="candidate_list"> + <button type="submit" class="btn btn-warning">Request Details Access</button> + </form> + {% endif %} + </td> + </tr> + {% endfor %} + </tbody> +</table> + + +<!-- Pagination --> +<nav aria-label="Page navigation"> + <ul class="pagination"> + {% if candidates.has_previous %} + <li class="page-item"> + <a class="page-link" href="?page=1&skill={{ skill_filter }}&restricted={{ restricted_filter }}">First</a> + </li> + <li class="page-item"> + <a class="page-link" href="?page={{ candidates.previous_page_number }}&skill={{ skill_filter }}&restricted={{ restricted_filter }}">Previous</a> + </li> + {% endif %} + {% for num in candidates.paginator.page_range %} + <li class="page-item {% if candidates.number == num %}active{% endif %}"> + <a class="page-link" href="?page={{ num }}&skill={{ skill_filter }}&restricted={{ restricted_filter }}">{{ num }}</a> + </li> + {% endfor %} + {% if candidates.has_next %} + <li class="page-item"> + <a class="page-link" href="?page={{ candidates.next_page_number }}&skill={{ skill_filter }}&restricted={{ restricted_filter }}">Next</a> + </li> + <li class="page-item"> + <a class="page-link" href="?page={{ candidates.paginator.num_pages }}&skill={{ skill_filter }}&restricted={{ restricted_filter }}">Last</a> + </li> + {% endif %} + </ul> +</nav> +{% endblock content %} diff --git a/templates/index.html b/templates/index.html index bb446b61..01340040 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,21 +1,21 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %}Home{% endblock title %} -{% block content %} -{% block styles %} -<link href="{% static 'css/home.css' %}" rel="stylesheet"> -{% endblock styles %} - -<section class="hero-section"> - <div class="hero-content"> - <h1>Get Jobs FAST</h1> - <p>Thousands of jobs available throughout your location.</p> - <form class="search-bar" action="{% url 'job_list' %}" method="get"> - <input type="text" name="query" placeholder="Search by job title, keyword, or company..." /> - <button type="submit" class="btn btn-primary">Search</button> - </form> - <p class="subtext">Find your next career move with just a few clicks.</p> - </div> -</section> - -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block title %}Home{% endblock title %} +{% block content %} +{% block styles %} +<link href="{% static 'css/home.css' %}" rel="stylesheet"> +{% endblock styles %} +<!--The home screen used to quickly go to job list after pressing the search button if you were logged in--> +<section class="hero-section"> + <div class="hero-content"> + <h1>Get Jobs FAST</h1> + <p>Thousands of jobs available throughout your location.</p> + <form class="search-bar" action="{% url 'job_list' %}" method="get"> + <input type="text" name="query" placeholder="Search by job title, keyword, or company..." /> + <button type="submit" class="btn btn-primary">Search</button> + </form> + <p class="subtext">Find your next career move with just a few clicks.</p> + </div> +</section> + +{% endblock content %} diff --git a/templates/joblist.html b/templates/joblist.html index a31bc45b..e2276651 100644 --- a/templates/joblist.html +++ b/templates/joblist.html @@ -1,114 +1,114 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %}Job List{% endblock title %} -{% block content %} -{% block styles %} -<link href="{% static 'css/joblist.css' %}" rel="stylesheet"> -{% endblock styles %} -<div class="container"> - <h1>Job List</h1> - <form method="get" class="mb-3"> - <div class="row"> - <!-- Business Category Filter --> - <div class="col-md-4"> - <label for="business_category">Business Category:</label> - <select name="business_category" id="business_category" class="form-control"> - <option value="all" {% if business_category_filter == 'all' %}selected{% endif %}>All</option> - {% for category in business_categories %} - <option value="{{ category }}" {% if category == business_category_filter %}selected{% endif %}>{{ category }}</option> - {% endfor %} - </select> - </div> - - <!-- Status Filter --> - <div class="col-md-4"> - <label for="status">Status:</label> - <select name="status" id="status" class="form-control"> - <option value="all" {% if status_filter == 'all' %}selected{% endif %}>All</option> - <option value="Open" {% if status_filter == 'Open' %}selected{% endif %}>Open</option> - <option value="Close" {% if status_filter == 'Close' %}selected{% endif %}>Close</option> - </select> - </div> - - <!-- Submit Button --> - <div class="col-md-4 d-flex align-items-end"> - <button type="submit" class="btn btn-primary">Filter</button> - </div> - </div> - </form> -<div class="container"> - {% if employers %} - <table class="table table-bordered table-hover"> - <thead> - <tr> - <th>Business Name</th> - <th>Business Category</th> - <th>Type</th> - <th>Location and Region</th> - <th>Job Offered</th> - <th>Status</th> - <th>Actions</th> - </tr> - </thead> - <tbody> - {% for employer in page_obj %} - <tr> - <td>{{ employer.business_name }}</td> - <td>{{ employer.business_category }}</td> - <td>{{ employer.business_type }}</td> - <td>{{ employer.location }} {{ employer.region }}</td> - <td>{{ employer.fields_for_jobs }}</td> - <td> - {% if employer.status == "Open" %} - <span class="badge badge-success">Open</span> - {% else %} - <span class="badge badge-danger">Close</span> - {% endif %} - </td> - <td> - {% if employer.status == "Open" %} - {% if request.user.user_type == "job_seeker" %} - <a href="{% url 'onboarding_form' employer.id %}" class="btn btn-primary">Fill Onboarding Form</a> - {% else %} - <span class="text-muted">Must be Candidate</span> - {% endif %} - {% else %} - <span class="text-muted">Closed</span> - {% endif %} - </td> - </tr> - {% endfor %} - </tbody> - - </table> - <!-- Pagination Links --> -<nav> - <ul class="pagination"> - {% if page_obj.has_previous %} - <li class="page-item"> - <a class="page-link" href="?page=1&business_category={{ business_category_filter }}&status={{ status_filter }}">First</a> - </li> - <li class="page-item"> - <a class="page-link" href="?page={{ page_obj.previous_page_number }}&business_category={{ business_category_filter }}&status={{ status_filter }}">Previous</a> - </li> - {% endif %} - {% for num in page_obj.paginator.page_range %} - <li class="page-item {% if page_obj.number == num %}active{% endif %}"> - <a class="page-link" href="?page={{ num }}&business_category={{ business_category_filter }}&status={{ status_filter }}">{{ num }}</a> - </li> - {% endfor %} - {% if page_obj.has_next %} - <li class="page-item"> - <a class="page-link" href="?page={{ page_obj.next_page_number }}&business_category={{ business_category_filter }}&status={{ status_filter }}">Next</a> - </li> - <li class="page-item"> - <a class="page-link" href="?page={{ page_obj.paginator.num_pages }}&business_category={{ business_category_filter }}&status={{ status_filter }}">Last</a> - </li> - {% endif %} - </ul> -</nav> - {% else %} - <p>No employers available at the moment.</p> - {% endif %} -</div> -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block title %}Job List{% endblock title %} +{% block content %} +{% block styles %} +<link href="{% static 'css/joblist.css' %}" rel="stylesheet"> +{% endblock styles %} +<div class="container"> + <h1>Job List</h1> + <form method="get" class="mb-3"> + <div class="row"> + <!-- Business Category Filter --> + <div class="col-md-4"> + <label for="business_category">Business Category:</label> + <select name="business_category" id="business_category" class="form-control"> + <option value="all" {% if business_category_filter == 'all' %}selected{% endif %}>All</option> + {% for category in business_categories %} + <option value="{{ category }}" {% if category == business_category_filter %}selected{% endif %}>{{ category }}</option> + {% endfor %} + </select> + </div> + + <!-- Status Filter --> + <div class="col-md-4"> + <label for="status">Status:</label> + <select name="status" id="status" class="form-control"> + <option value="all" {% if status_filter == 'all' %}selected{% endif %}>All</option> + <option value="Open" {% if status_filter == 'Open' %}selected{% endif %}>Open</option> + <option value="Close" {% if status_filter == 'Close' %}selected{% endif %}>Close</option> + </select> + </div> + + <!-- Submit Button --> + <div class="col-md-4 d-flex align-items-end"> + <button type="submit" class="btn btn-primary">Filter</button> + </div> + </div> + </form> +<div class="container"> + {% if employers %} + <table class="table table-bordered table-hover"> + <thead> + <tr> + <th>Business Name</th> + <th>Business Category</th> + <th>Type</th> + <th>Location and Region</th> + <th>Job Offered</th> + <th>Status</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + {% for employer in page_obj %} + <tr> + <td>{{ employer.business_name }}</td> + <td>{{ employer.business_category }}</td> + <td>{{ employer.business_type }}</td> + <td>{{ employer.location }} {{ employer.region }}</td> + <td>{{ employer.fields_for_jobs }}</td> + <td> + {% if employer.status == "Open" %} + <span class="badge badge-success">Open</span> + {% else %} + <span class="badge badge-danger">Close</span> + {% endif %} + </td> + <td> + {% if employer.status == "Open" %} + {% if request.user.user_type == "job_seeker" %} + <a href="{% url 'onboarding_form' employer.id %}" class="btn btn-primary">Fill Job Application Form</a> + {% else %} + <span class="text-muted">Must be Candidate</span> + {% endif %} + {% else %} + <span class="text-muted">Closed</span> + {% endif %} + </td> + </tr> + {% endfor %} + </tbody> + + </table> + <!-- Pagination Buttons which increase with the more content there is, only 10 will be seen at once.--> +<nav> + <ul class="pagination"> + {% if page_obj.has_previous %} + <li class="page-item"> + <a class="page-link" href="?page=1&business_category={{ business_category_filter }}&status={{ status_filter }}">First</a> + </li> + <li class="page-item"> + <a class="page-link" href="?page={{ page_obj.previous_page_number }}&business_category={{ business_category_filter }}&status={{ status_filter }}">Previous</a> + </li> + {% endif %} + {% for num in page_obj.paginator.page_range %} + <li class="page-item {% if page_obj.number == num %}active{% endif %}"> + <a class="page-link" href="?page={{ num }}&business_category={{ business_category_filter }}&status={{ status_filter }}">{{ num }}</a> + </li> + {% endfor %} + {% if page_obj.has_next %} + <li class="page-item"> + <a class="page-link" href="?page={{ page_obj.next_page_number }}&business_category={{ business_category_filter }}&status={{ status_filter }}">Next</a> + </li> + <li class="page-item"> + <a class="page-link" href="?page={{ page_obj.paginator.num_pages }}&business_category={{ business_category_filter }}&status={{ status_filter }}">Last</a> + </li> + {% endif %} + </ul> +</nav> + {% else %} + <p>No employers available at the moment.</p> + {% endif %} +</div> +{% endblock content %} diff --git a/templates/messagebox.html b/templates/messagebox.html index d77a786d..ba8928a1 100644 --- a/templates/messagebox.html +++ b/templates/messagebox.html @@ -1,138 +1,140 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %}Message Box{% endblock title %} -{% block content %} -{% block styles %} -<link href="{% static 'css/messagebox.css' %}" rel="stylesheet"> -{% endblock styles %} -<div class="container mt-5"> - <h1>Message Box</h1> - <div class="d-flex justify-content-between mb-3"> - <div> - {% if request.user.user_type == "employer" %} - <a href="{% url 'view_archived_candidates' %}" class="btn btn-secondary">View Archived Candidates</a> - {% endif %} - <form method="post" action="{% url 'mark_all_as_read' %}" style="display: inline;"> - {% csrf_token %} - <button type="submit" class="btn btn-primary">Mark All as Read</button> - </form> - <form method="post" action="{% url 'delete_all_notifications' %}" style="display: inline;"> - {% csrf_token %} - <button type="submit" class="btn btn-danger">Delete All</button> - </form> - - {% if request.user.user_type == "job_seeker" %} - <form method="post" action="{% url 'accept_all_notifications' %}" style="display: inline;"> - {% csrf_token %} - <button type="submit" class="btn btn-success">Accept All</button> - </form> - <form method="post" action="{% url 'deny_all_notifications' %}" style="display: inline;"> - {% csrf_token %} - <button type="submit" class="btn btn-warning">Deny All</button> - </form> - {% elif request.user.user_type == "employer" %} - <form method="post" action="{% url 'archive_all_candidates' %}" style="display: inline;"> - {% csrf_token %} - <button type="submit" class="btn btn-info">Archive All</button> - </form> - {% endif %} - </div> - </div> - - <div class="btn-group mb-3"> - <a href="{% url 'message_box' %}?filter=active" class="btn btn-secondary {% if filter_type == 'active' %}active{% endif %}">Active</a> - <a href="{% url 'message_box' %}?filter=archived" class="btn btn-secondary {% if filter_type == 'archived' %}active{% endif %}">Archived</a> - </div> - - <table class="table table-bordered table-hover"> - <thead> - <tr> - <th>#</th> - <th>From</th> - <th>Message</th> - <th>Created At</th> - <th>Actions</th> - </tr> - </thead> - <tbody> - {% for notification in notifications %} - <tr class="{% if not notification.is_read %}table-warning{% endif %}"> - <td>{{ forloop.counter }}</td> - <td> - {% if notification.sender %} - {{ notification.sender.username }} - {% else %} - System - {% endif %} - </td> - <td>{{ notification.message }}</td> - <td>{{ notification.created_at|date:"Y-m-d H:i" }}</td> - <td> - {% if notification.cv_access %} - <a href="{{ notification.related_cv.url }}" target="_blank" class="btn btn-sm btn-secondary">View CV</a> - {% endif %} - - {% if not notification.is_read %} - <form action="{% url 'mark_notifications_as_read' notification.id %}" method="POST" style="display:inline-block;"> - {% csrf_token %} - <button type="submit" class="btn btn-sm btn-primary">Mark as Read</button> - </form> - {% endif %} - - <form action="{% url 'delete_notification' notification.id %}" method="POST" style="display:inline-block;"> - {% csrf_token %} - <button type="submit" class="btn btn-sm btn-danger">Delete</button> - </form> - - {% if request.user.user_type == "job_seeker" %} - <form action="{% url 'handle_notification' notification.id 'accept' %}" method="POST" style="display:inline-block;"> - {% csrf_token %} - <button type="submit" class="btn btn-sm btn-success">Accept</button> - </form> - <form action="{% url 'handle_notification' notification.id 'deny' %}" method="POST" style="display:inline-block;"> - {% csrf_token %} - <button type="submit" class="btn btn-sm btn-warning">Deny</button> - </form> - {% elif request.user.user_type == "employer" %} - <form action="{% url 'archive_candidate' notification.id %}" method="POST" style="display:inline-block;"> - {% csrf_token %} - <button type="submit" class="btn btn-sm btn-info">Archive</button> - </form> - {% endif %} - </td> - </tr> - {% empty %} - <tr> - <td colspan="5" class="text-center">No messages available.</td> - </tr> - {% endfor %} - </tbody> - </table> - - <nav aria-label="Page navigation"> - <ul class="pagination"> - {% if notifications.has_previous %} - <li class="page-item"> - <a class="page-link" href="?page=1&filter={{ filter_type }}">First</a> - </li> - <li class="page-item"> - <a class="page-link" href="?page={{ notifications.previous_page_number }}&filter={{ filter_type }}">Previous</a> - </li> - {% endif %} - {% for num in notifications.paginator.page_range %} - <li class="page-item {% if notifications.number == num %}active{% endif %}"> - <a class="page-link" href="?page={{ num }}&filter={{ filter_type }}">{{ num }}</a> - </li> - {% endfor %} - {% if notifications.has_next %} - <li class="page-item"> - <a class="page-link" href="?page={{ notifications.next_page_number }}&filter={{ filter_type }}">Next</a> - </li> - <li class="page-item"> - <a class="page-link" href="?page={{ notifications.paginator.num_pages }}&filter={{ filter_type }}">Last</a> - </li> - {% endif %} - </ul> - </nav> -</div> -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block title %}Message Box{% endblock title %} +{% block content %} +{% block styles %} +<link href="{% static 'css/messagebox.css' %}" rel="stylesheet"> +{% endblock styles %} +<div class="container mt-5"> + <h1>Message Box</h1> + <div class="d-flex justify-content-between mb-3"> +<!--go into archived_candidates.html button--> + <div> + {% if request.user.user_type == "employer" %} + <a href="{% url 'view_archived_candidates' %}" class="btn btn-secondary">View Archived Candidates</a> + {% endif %} +<!--Mass action buttons--> + <form method="post" action="{% url 'mark_all_as_read' %}" style="display: inline;"> + {% csrf_token %} + <button type="submit" class="btn btn-primary">Mark All as Read</button> + </form> + <form method="post" action="{% url 'delete_all_notifications' %}" style="display: inline;"> + {% csrf_token %} + <button type="submit" class="btn btn-danger">Delete All</button> + </form> + + {% if request.user.user_type == "job_seeker" %} + <form method="post" action="{% url 'accept_all_notifications' %}" style="display: inline;"> + {% csrf_token %} + <button type="submit" class="btn btn-success">Accept All</button> + </form> + <form method="post" action="{% url 'deny_all_notifications' %}" style="display: inline;"> + {% csrf_token %} + <button type="submit" class="btn btn-warning">Deny All</button> + </form> + {% elif request.user.user_type == "employer" %} + <form method="post" action="{% url 'archive_all_candidates' %}" style="display: inline;"> + {% csrf_token %} + <button type="submit" class="btn btn-info">Archive All</button> + </form> + {% endif %} + </div> + </div> +<!--The filter for archived candidates--> + <div class="btn-group mb-3"> + <a href="{% url 'message_box' %}?filter=active" class="btn btn-secondary {% if filter_type == 'active' %}active{% endif %}">Active</a> + <a href="{% url 'message_box' %}?filter=archived" class="btn btn-secondary {% if filter_type == 'archived' %}active{% endif %}">Archived</a> + </div> + <!--Table for the notifications--> + <table class="table table-bordered table-hover"> + <thead> + <tr> + <th>#</th> + <th>From</th> + <th>Message</th> + <th>Created At</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + {% for notification in notifications %} + <tr class="{% if not notification.is_read %}table-warning{% endif %}"> + <td>{{ forloop.counter }}</td> + <td> + {% if notification.sender %} + {{ notification.sender.username }} + {% else %} + System + {% endif %} + </td> + <td>{{ notification.message }}</td> + <td>{{ notification.created_at|date:"Y-m-d H:i" }}</td> + <td> + {% if notification.cv_access %} + <a href="{{ notification.related_cv.url }}" target="_blank" class="btn btn-sm btn-secondary">View CV</a> + {% endif %} + <!--action buttons--> + {% if not notification.is_read %} + <form action="{% url 'mark_notifications_as_read' notification.id %}" method="POST" style="display:inline-block;"> + {% csrf_token %} + <button type="submit" class="btn btn-sm btn-primary">Mark as Read</button> + </form> + {% endif %} + + <form action="{% url 'delete_notification' notification.id %}" method="POST" style="display:inline-block;"> + {% csrf_token %} + <button type="submit" class="btn btn-sm btn-danger">Delete</button> + </form> + + {% if request.user.user_type == "job_seeker" %} + <form action="{% url 'handle_notification' notification.id 'accept' %}" method="POST" style="display:inline-block;"> + {% csrf_token %} + <button type="submit" class="btn btn-sm btn-success">Accept</button> + </form> + <form action="{% url 'handle_notification' notification.id 'deny' %}" method="POST" style="display:inline-block;"> + {% csrf_token %}<!--accept and deny are only available for candidates--> + <button type="submit" class="btn btn-sm btn-warning">Deny</button> + </form> + {% elif request.user.user_type == "employer" %} <!-- archive is only available for employers--> + <form action="{% url 'archive_candidate' notification.id %}" method="POST" style="display:inline-block;"> + {% csrf_token %} + <button type="submit" class="btn btn-sm btn-info">Archive</button> + </form> + {% endif %} + </td> + </tr> + {% empty %} + <tr> + <td colspan="5" class="text-center">No messages available.</td> + </tr> + {% endfor %} + </tbody> + </table> +<!-- Pagination which allows only 10 to be shown at a time.--> + <nav aria-label="Page navigation"> + <ul class="pagination"> + {% if notifications.has_previous %} + <li class="page-item"> + <a class="page-link" href="?page=1&filter={{ filter_type }}">First</a> + </li> + <li class="page-item"> + <a class="page-link" href="?page={{ notifications.previous_page_number }}&filter={{ filter_type }}">Previous</a> + </li> + {% endif %} + {% for num in notifications.paginator.page_range %} + <li class="page-item {% if notifications.number == num %}active{% endif %}"> + <a class="page-link" href="?page={{ num }}&filter={{ filter_type }}">{{ num }}</a> + </li> + {% endfor %} + {% if notifications.has_next %} + <li class="page-item"> + <a class="page-link" href="?page={{ notifications.next_page_number }}&filter={{ filter_type }}">Next</a> + </li> + <li class="page-item"> + <a class="page-link" href="?page={{ notifications.paginator.num_pages }}&filter={{ filter_type }}">Last</a> + </li> + {% endif %} + </ul> + </nav> +</div> +{% endblock content %} diff --git a/templates/onboarding_form.html b/templates/onboarding_form.html index 6b6b0174..e9ebd4e7 100644 --- a/templates/onboarding_form.html +++ b/templates/onboarding_form.html @@ -1,72 +1,72 @@ -{% extends 'base.html' %} -{% load static %} -{% block title %}Onboarding Form{% endblock title %} - -{% block content %} -{% block styles %} -<link href="{% static 'css/onboarding_form.css' %}" rel="stylesheet"> -{% endblock styles %} -<div class="onboarding-container"> - <h1>Employee Onboarding Form</h1> - <form action="{% url 'onboarding_form' employer.id %}" method="POST" enctype="multipart/form-data"> - {% csrf_token %} - <!-- Personal Details Section --> - <div class="onboarding-section-title">Personal Details</div> - <label for="onboarding-name">Full Name:</label> - <input type="text" id="onboarding-name" name="name" required> - - <label for="onboarding-address">Permanent Address:</label> - <textarea id="onboarding-address" name="address" rows="4" required></textarea> - - <!-- ID Card Information --> - <label for="onboarding-id-card">ID Card Information:</label> - <input type="text" id="onboarding-id-card" name="id_card" placeholder="Enter ID Card Number" required> - - <!-- Current Job --> - <div class="onboarding-section-title">Current Job</div> - <label for="onboarding-current-job">Where are you currently working?</label> - <input type="text" id="onboarding-current-job" name="current_job" required> - - <label for="onboarding-reason">Why do you want to join here?</label> - <textarea id="onboarding-reason" name="reason" rows="4" required></textarea> - - <!-- File Uploads --> - <div class="onboarding-section-title">Upload Documents</div> - <label for="onboarding-cv">Upload Resume:</label> - <input type="file" id="onboarding-cv" name="cv" accept=".pdf,.doc,.docx" required> - - <label for="onboarding-certificates">Upload Educational Certificates:</label> - <input type="file" id="onboarding-certificates" name="certificates" accept=".pdf,.jpg,.jpeg,.png" multiple required> - - <!-- Educational Achievements --> - <div class="onboarding-section-title">Educational Achievements</div> - <label for="onboarding-education">List your educational achievements:</label> - <textarea id="onboarding-education" name="education" rows="4" required></textarea> - - <!-- Expertise --> - <div class="onboarding-section-title">Expertise and Experience</div> - <label for="onboarding-field">How well-versed are you in the required field?</label> - <select id="onboarding-field" name="field" required> - <option value="" disabled selected>Select your expertise level</option> - <option value="Beginner">Beginner</option> - <option value="Intermediate">Intermediate</option> - <option value="Advanced">Advanced</option> - </select> - - <label for="onboarding-experience">Years of Experience in the Field:</label> - <input type="number" id="onboarding-experience" name="experience" min="0" placeholder="Enter number of years" required> - - <!-- Submit Button --> - <button type="submit" class="onboarding-submit-btn">Submit Form</button> - </form> -</div> - - <script> - document.querySelector('form').addEventListener('submit', function () { - setTimeout(function () { - window.location.href = "{% url 'job_list' %}"; - }, 2000); // Redirect after 2 seconds - }); -</script> - -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block title %}Onboarding Form{% endblock title %} + +{% block content %} +{% block styles %} +<link href="{% static 'css/onboarding_form.css' %}" rel="stylesheet"> +{% endblock styles %} +<div class="onboarding-container"> + <h1>Employee Onboarding Form</h1> + <form action="{% url 'onboarding_form' employer.id %}" method="POST" enctype="multipart/form-data"> + {% csrf_token %} + <!-- Personal Details Section --> + <div class="onboarding-section-title">Personal Details</div> + <label for="onboarding-name">Full Name:</label> + <input type="text" id="onboarding-name" name="name" required> + + <label for="onboarding-address">Permanent Address:</label> + <textarea id="onboarding-address" name="address" rows="4" required></textarea> + + <!-- ID Card Information --> + <label for="onboarding-id-card">ID Card Information:</label> + <input type="text" id="onboarding-id-card" name="id_card" placeholder="Enter ID Card Number" required> + + <!-- Current Job --> + <div class="onboarding-section-title">Current Job</div> + <label for="onboarding-current-job">Where are you currently working?</label> + <input type="text" id="onboarding-current-job" name="current_job" required> + + <label for="onboarding-reason">Why do you want to join here?</label> + <textarea id="onboarding-reason" name="reason" rows="4" required></textarea> + + <!-- File Uploads --> + <div class="onboarding-section-title">Upload Documents</div> + <label for="onboarding-cv">Upload Resume:</label> + <input type="file" id="onboarding-cv" name="cv" accept=".pdf,.doc,.docx" required> + + <label for="onboarding-certificates">Upload Educational Certificates:</label> + <input type="file" id="onboarding-certificates" name="certificates" accept=".pdf,.jpg,.jpeg,.png" multiple required> + + <!-- Educational Achievements --> + <div class="onboarding-section-title">Educational Achievements</div> + <label for="onboarding-education">List your educational achievements:</label> + <textarea id="onboarding-education" name="education" rows="4" required></textarea> + + <!-- Expertise --> + <div class="onboarding-section-title">Expertise and Experience</div> + <label for="onboarding-field">How well-versed are you in the required field?</label> + <select id="onboarding-field" name="field" required> + <option value="" disabled selected>Select your expertise level</option> + <option value="Beginner">Beginner</option> + <option value="Intermediate">Intermediate</option> + <option value="Advanced">Advanced</option> + </select> + + <label for="onboarding-experience">Years of Experience in the Field:</label> + <input type="number" id="onboarding-experience" name="experience" min="0" placeholder="Enter number of years" required> + + <!-- Submit Button, should start a download of the content in a zipped folder with the pdfs. --> + <button type="submit" class="onboarding-submit-btn">Submit Form</button> + </form> +</div> + + <script> + document.querySelector('form').addEventListener('submit', function () { + setTimeout(function () { + window.location.href = "{% url 'job_list' %}"; + }, 2000); // Redirect after 2 seconds + }); +</script> + +{% endblock content %} diff --git a/templates/password_reset.html b/templates/password_reset.html index 34c77422..e39dc14d 100644 --- a/templates/password_reset.html +++ b/templates/password_reset.html @@ -1,21 +1,22 @@ -{% extends 'base.html' %} -{% load static %} -{% block content %} -{% block styles %} -<link href="{% static 'css/password_reset.css' %}" rel="stylesheet"> -{% endblock styles %} -<h2>Forgot Password</h2> -<p>Enter your email address, and we'll send you a link to reset your password.</p> -<form method="post"> - {% csrf_token %} - {{ form.as_p }} - <button type="submit" class="btn btn-primary">Send Password Reset Email</button> -</form> -{% if messages %} - <ul> - {% for message in messages %} - <li class="{{ message.tags }}">{{ message }}</li> - {% endfor %} - </ul> -{% endif %} -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block content %} +{% block styles %} +<link href="{% static 'css/password_reset.css' %}" rel="stylesheet"> +{% endblock styles %} +<!--Send email/speak to admin so that they can email you--> +<h2>Forgot Password</h2> +<p>Enter your email address, and we'll send you a link to reset your password.</p> +<form method="post"> + {% csrf_token %} + {{ form.as_p }} + <button type="submit" class="btn btn-primary">Send Password Reset Email</button> +</form> +{% if messages %} + <ul> + {% for message in messages %} + <li class="{{ message.tags }}">{{ message }}</li> + {% endfor %} + </ul> +{% endif %} +{% endblock content %} diff --git a/templates/password_reset_done.html b/templates/password_reset_done.html index 34eebe5a..fab4bfd3 100644 --- a/templates/password_reset_done.html +++ b/templates/password_reset_done.html @@ -1,10 +1,12 @@ -{% extends 'base.html' %} -{% load static %} -{% block content %} -{% block styles %} -<link href="{% static 'css/password_reset_done.css' %}" rel="stylesheet"> -{% endblock styles %} -<h2>Password Reset Sent</h2> -<p>Check your email for a link to reset your password.</p> -<a href="{% url 'login' %}">Back to Login</a> -{% endblock content %} +{% extends 'base.html' %} +{% load static %} +{% block content %} +{% block styles %} +<!-- The success page to show that the email information has been sent to the admin --> +<!-- so that the admin can send an email asking for more information and end the problem--> +<link href="{% static 'css/password_reset_done.css' %}" rel="stylesheet"> +{% endblock styles %} +<h2>Password Reset Sent</h2> +<p>Check your email for a link to reset your password.</p> +<a href="{% url 'login' %}">Back to Login</a> +{% endblock content %} -- GitLab