diff --git a/NorahUniversity/__pycache__/settings.cpython-312.pyc b/NorahUniversity/__pycache__/settings.cpython-312.pyc index 7d14999..648d4bf 100644 Binary files a/NorahUniversity/__pycache__/settings.cpython-312.pyc and b/NorahUniversity/__pycache__/settings.cpython-312.pyc differ diff --git a/db.sqlite3 b/db.sqlite3 index f69db19..4df3956 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/recruitment/__pycache__/forms.cpython-312.pyc b/recruitment/__pycache__/forms.cpython-312.pyc index 676af2b..9c5c51f 100644 Binary files a/recruitment/__pycache__/forms.cpython-312.pyc and b/recruitment/__pycache__/forms.cpython-312.pyc differ diff --git a/recruitment/__pycache__/models.cpython-312.pyc b/recruitment/__pycache__/models.cpython-312.pyc index 8546972..8037941 100644 Binary files a/recruitment/__pycache__/models.cpython-312.pyc and b/recruitment/__pycache__/models.cpython-312.pyc differ diff --git a/recruitment/__pycache__/signals.cpython-312.pyc b/recruitment/__pycache__/signals.cpython-312.pyc index e8303fa..784a796 100644 Binary files a/recruitment/__pycache__/signals.cpython-312.pyc and b/recruitment/__pycache__/signals.cpython-312.pyc differ diff --git a/recruitment/__pycache__/urls.cpython-312.pyc b/recruitment/__pycache__/urls.cpython-312.pyc index f89276b..dda7654 100644 Binary files a/recruitment/__pycache__/urls.cpython-312.pyc and b/recruitment/__pycache__/urls.cpython-312.pyc differ diff --git a/recruitment/__pycache__/utils.cpython-312.pyc b/recruitment/__pycache__/utils.cpython-312.pyc index bc58dfb..30b5486 100644 Binary files a/recruitment/__pycache__/utils.cpython-312.pyc and b/recruitment/__pycache__/utils.cpython-312.pyc differ diff --git a/recruitment/__pycache__/views.cpython-312.pyc b/recruitment/__pycache__/views.cpython-312.pyc index 5166bda..23664e6 100644 Binary files a/recruitment/__pycache__/views.cpython-312.pyc and b/recruitment/__pycache__/views.cpython-312.pyc differ diff --git a/recruitment/__pycache__/views_frontend.cpython-312.pyc b/recruitment/__pycache__/views_frontend.cpython-312.pyc index 1b05fc2..6ad7682 100644 Binary files a/recruitment/__pycache__/views_frontend.cpython-312.pyc and b/recruitment/__pycache__/views_frontend.cpython-312.pyc differ diff --git a/recruitment/forms.py b/recruitment/forms.py index 8317b4b..6cec608 100644 --- a/recruitment/forms.py +++ b/recruitment/forms.py @@ -480,6 +480,9 @@ class JobPostingStatusForm(forms.ModelForm): class Meta: model = JobPosting fields = ['status'] + widgets = { + 'status': forms.Select(attrs={'class': 'form-select'}), + } class FormTemplateIsActiveForm(forms.ModelForm): class Meta: model = FormTemplate diff --git a/recruitment/views.py b/recruitment/views.py index 82c536a..a62796b 100644 --- a/recruitment/views.py +++ b/recruitment/views.py @@ -15,7 +15,7 @@ from .forms import ( ZoomMeetingForm, JobPostingForm, FormTemplateForm, - InterviewScheduleForm,JobStatusUpdateForm, + InterviewScheduleForm,JobPostingStatusForm, BreakTimeFormSet, ) from rest_framework import viewsets @@ -277,12 +277,12 @@ def job_detail(request, slug): interview_count = candidates.filter(stage="Interview").count() offer_count = candidates.filter(stage="Offer").count() - status_form = JobStatusUpdateForm(instance=job) + status_form = JobPostingStatusForm(instance=job) # 2. Check for POST request (Status Update Submission) if request.method == 'POST': - status_form = JobStatusUpdateForm(request.POST, instance=job) + status_form = JobPostingStatusForm(request.POST, instance=job) if status_form.is_valid(): status_form.save() diff --git a/templates/jobs/job_detail.html b/templates/jobs/job_detail.html index 5e90f5e..c4c7001 100644 --- a/templates/jobs/job_detail.html +++ b/templates/jobs/job_detail.html @@ -46,7 +46,15 @@ .bg-secondary { background-color: #6c757d !important; } .bg-danger { background-color: #dc3545 !important; } - + /* Fix for active tab text visibility */ + .nav-tabs .nav-link.active, + .right-column-tabs .nav-link.active { + color: var(--kaauh-teal-dark) !important; + background-color: white !important; + border-bottom: 3px solid var(--kaauh-teal) !important; + font-weight: 600; + z-index: 2; + } /* Card enhancements */ .card { border: 1px solid var(--kaauh-border); @@ -198,6 +206,8 @@ display: inline-flex; align-items: center; gap: 0.5rem; + justify-content: center; + text-align: center; } .btn-main-action:hover { @@ -247,7 +257,7 @@

{{ job.title }}

- {{ job.internal_job_id }} + {% trans "JOB ID: "%}{{ job.internal_job_id }}
@@ -306,6 +316,12 @@
{% trans "Created By:" %} {{ job.created_by|default:"N/A" }}
+
+ {% trans "Created At:" %} {{ job.created_at|default:"N/A" }} +
+
+ {% trans "Updated At:" %} {{ job.updated_at|default:"N/A" }} +
{% trans "Financial & Timeline" %}
@@ -407,7 +423,7 @@ @@ -438,51 +454,50 @@
- -
- - - {% for candidate in candidates|slice:":5" %} - - - - - - {% endfor %} - -
- {{ candidate.first_name }} {{ candidate.last_name }} - - - {{ candidate.stage }} - - - - - -
-
- - {% if candidates|length > 5 %} -
- +
+ {% trans "View All Applicants" %} ({{ total_candidates }})
- {% endif %} - {% else %} -
- -
{% trans "No applicants yet" %}
-

{% trans "Candidates will appear here once they apply for this position." %}

-
+ {% endif %} + +
+ + {% trans "Create Candidate" %} + +
{# TAB 2: MANAGEMENT (LinkedIn & Forms) CONTENT #}
{# LinkedIn Integration (Content from old card) #} + + + {# Applicant Form Management (Content from old card) #} +
{% trans "Form Management" %}
+
+

+ {% trans "Manage the custom application forms associated with this job posting." %} +

+ + {% if not job.form_template %} + + {% trans "Create New Form Template" %} + + {% else %} + + {% trans "View Form Template" %} + + {% endif %} + + +
+
+ + {# TAB 3: INTERNAL INFO CONTENT #} +
{% trans "LinkedIn Integration" %}
{% if job.posted_to_linkedin %} @@ -523,40 +538,6 @@
{% endif %}
- - {# Applicant Form Management (Content from old card) #} -
{% trans "Form Management" %}
-
-

- {% trans "Manage the custom application forms associated with this job posting." %} -

- - - {% trans "Create New Form" %} - - - - {% trans "View All Existing Forms" %} - - - - {% trans "Create Candidate" %} - -
- - - {# TAB 3: INTERNAL INFO CONTENT #} -
-
{% trans "Internal Information" %}
-
-

{% trans "Internal Job ID:" %} {{ job.internal_job_id }}

-

{% trans "Created:" %} {{ job.created_at|date:"M d, Y" }}

-

{% trans "Last Updated:" %} {{ job.updated_at|date:"M d, Y" }}

- {% if job.reporting_to %} -

{% trans "Reports To:" %} {{ job.reporting_to }}

- {% endif %} -
-
{% trans "Back to Jobs" %}