before update the meeting
This commit is contained in:
parent
61cd47ccc9
commit
d1a49717ee
@ -2490,12 +2490,11 @@ class StaffAssignmentForm(forms.ModelForm):
|
||||
super().__init__(*args, **kwargs)
|
||||
# Filter users to only show staff members
|
||||
self.fields['assigned_to'].queryset = User.objects.filter(
|
||||
user_type='staff'
|
||||
user_type='staff',is_superuser=False
|
||||
).order_by('first_name', 'last_name')
|
||||
|
||||
# Add empty choice for unassigning
|
||||
self.fields['assigned_to'].required = False
|
||||
self.fields['assigned_to'].empty_label = _('-- Unassign Staff --')
|
||||
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_method = 'post'
|
||||
@ -2516,3 +2515,4 @@ class StaffAssignmentForm(forms.ModelForm):
|
||||
if assigned_to and assigned_to.user_type != 'staff':
|
||||
raise forms.ValidationError(_('Only staff members can be assigned to jobs.'))
|
||||
return assigned_to
|
||||
|
||||
|
||||
@ -129,7 +129,7 @@ class JobPosting(Base):
|
||||
blank=True,
|
||||
)
|
||||
|
||||
application_deadline = models.DateField(db_index=True) # Added index
|
||||
application_deadline = models.DateField(db_index=True)
|
||||
application_instructions = CKEditor5Field(
|
||||
blank=True, null=True, config_name="extends"
|
||||
)
|
||||
|
||||
@ -615,6 +615,7 @@ def job_detail(request, slug):
|
||||
"avg_t2i_days": avg_t2i_days,
|
||||
"avg_t_in_exam_days": avg_t_in_exam_days,
|
||||
"linkedin_content_form": linkedin_content_form,
|
||||
"staff_form": StaffAssignmentForm(),
|
||||
}
|
||||
return render(request, "jobs/job_detail.html", context)
|
||||
|
||||
@ -2994,7 +2995,8 @@ def staff_assignment_view(request, slug):
|
||||
form = StaffAssignmentForm(request.POST, instance=job)
|
||||
|
||||
if form.is_valid():
|
||||
assignment = form.save()
|
||||
job.assigned_to = form.cleaned_data["assigned_to"]
|
||||
job.save(update_fields=["assigned_to"])
|
||||
messages.success(request, f"Staff assigned to job '{job.title}' successfully!")
|
||||
return redirect("job_detail", slug=job.slug)
|
||||
else:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{% extends "base.html" %}
|
||||
{% load i18n static %}
|
||||
{% load i18n static crispy_forms_tags %}
|
||||
|
||||
{% block title %}{{ job.title }} - University ATS{% endblock %}
|
||||
|
||||
@ -303,7 +303,7 @@
|
||||
</li>
|
||||
<li class="nav-item flex-fill" role="presentation">
|
||||
<button class="nav-link" id="staff-tab" data-bs-toggle="tab" data-bs-target="#staff-pane" type="button" role="tab" aria-controls="staff-pane" aria-selected="false">
|
||||
<i class="fas fa-user-tie me-1 text-primary"></i> {% trans "Staff" %}
|
||||
<i class="fas fa-user-tie me-1 text-primary"></i> {% trans "Assigned Staff" %}
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item flex-fill" role="presentation">
|
||||
@ -384,42 +384,47 @@
|
||||
<div class="tab-pane fade" id="staff-pane" role="tabpanel" aria-labelledby="staff-tab">
|
||||
<h5 class="mb-3"><i class="fas fa-user-tie me-2 text-primary"></i>{% trans "Staff Assignment" %}</h5>
|
||||
<div class="d-grid gap-3">
|
||||
<p class="text-muted small mb-3">
|
||||
{% trans "Assign staff members to manage this job posting and track applications." %}
|
||||
</p>
|
||||
|
||||
<a href="{% url 'staff_assignment_view' job.slug %}" class="btn btn-main-action">
|
||||
<i class="fas fa-user-plus me-1"></i> {% trans "Assign Staff Member" %}
|
||||
</a>
|
||||
|
||||
{% if job.assigned_to %}
|
||||
<div class="mt-3">
|
||||
<h6 class="text-muted">{% trans "Current Assignments" %}</h6>
|
||||
{% for assignment in job.staff_assignments.all %}
|
||||
<div class="card mb-2">
|
||||
<div class="card-body p-2">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
<strong>{{ assignment.staff.get_full_name|default:assignment.staff.username }}</strong>
|
||||
<br>
|
||||
<small class="text-muted">{{ assignment.staff.email }}</small>
|
||||
</div>
|
||||
<div>
|
||||
{% if assignment.staff.is_active %}
|
||||
<span class="badge bg-success">Active</span>
|
||||
{% else %}
|
||||
<span class="badge bg-danger">Inactive</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% if assignment.notes %}
|
||||
<small class="text-muted d-block mt-1">{{ assignment.notes }}</small>
|
||||
{% endif %}
|
||||
</div>
|
||||
<p class="text-muted small mb-3">
|
||||
<strong>{% trans "Assigned to:" %}</strong> {{ job.assigned_to }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if not job.assigned_to %}
|
||||
<button type="button" class="btn btn-main-action" data-bs-toggle="modal" data-bs-target="#staffAssignmentModal">
|
||||
<i class="fas fa-user-plus me-1"></i> {% trans "Assign Staff Member" %}
|
||||
</button>
|
||||
{% elif job.assigned_to and job.assigned_to == request.user %}
|
||||
<button type="button" class="btn btn-main-action" data-bs-toggle="modal" data-bs-target="#staffAssignmentModal">
|
||||
<i class="fas fa-user-plus me-1"></i> {% trans "Assign Staff Member" %}
|
||||
</button>
|
||||
{% endif %}
|
||||
|
||||
<!-- Modal for Staff Assignment -->
|
||||
<div class="modal fade" id="staffAssignmentModal" tabindex="-1" aria-labelledby="staffAssignmentModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="staffAssignmentModalLabel">
|
||||
<i class="fas fa-user-plus me-2"></i> {% trans "Assign Staff Member" %}
|
||||
</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="modal-body">
|
||||
<form method="post" action="{% url 'staff_assignment_view' job.slug %}">
|
||||
{% csrf_token %}
|
||||
{{staff_form|crispy}}
|
||||
<div class="d-flex justify-content-end mt-3">
|
||||
<button type="submit" class="btn btn-main-action">
|
||||
<i class="fas fa-save me-1"></i> {% trans "Save Assignment" %}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
</div>
|
||||
|
||||
{% if not job.assigned_to %}
|
||||
<div class="alert alert-info p-2 small mb-0">
|
||||
<i class="fas fa-info-circle me-1"></i> {% trans "No staff members assigned to this job yet." %}
|
||||
</div>
|
||||
|
||||
@ -291,7 +291,7 @@
|
||||
hx-get="{% url 'candidate_criteria_view_htmx' candidate.pk %}"
|
||||
hx-target="#candidateviewModalBody"
|
||||
title="View Profile">
|
||||
{{ candidate.name }}<i class="fas fa-eye ms-1"></i>
|
||||
{{ candidate.name }} <i class="fas fa-eye ms-1"></i>
|
||||
</button>
|
||||
{% comment %} <div class="candidate-name">
|
||||
{{ candidate.name }}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user