This commit is contained in:
Flatlogic Bot 2026-06-09 23:18:34 +00:00
parent af768b6ac1
commit 6baa5f4e3d
4 changed files with 44 additions and 1 deletions

View File

@ -41,6 +41,15 @@
{% for value,label in source_status_choices %}<option value="{{ value }}" {% if source_status == value %}selected{% endif %}>{{ label }}</option>{% endfor %}
</select>
</div>
<div class="col-lg-3">
<label class="form-label" for="sort">Sort</label>
<select class="form-select" id="sort" name="sort">
<option value="newest" {% if sort == "newest" %}selected{% endif %}>Newest</option>
<option value="oldest" {% if sort == "oldest" %}selected{% endif %}>Oldest</option>
<option value="company_az" {% if sort == "company_az" %}selected{% endif %}>Company A-Z</option>
<option value="company_za" {% if sort == "company_za" %}selected{% endif %}>Company Z-A</option>
</select>
</div>
<div class="col-lg-1 d-grid">
<button class="btn btn-dark" type="submit">Go</button>
</div>

View File

@ -41,6 +41,17 @@
{% for value,label in status_choices %}<option value="{{ value }}" {% if status == value %}selected{% endif %}>{{ label }}</option>{% endfor %}
</select>
</div>
<div class="col-lg-3">
<label class="form-label" for="sort">Sort</label>
<select class="form-select" id="sort" name="sort">
<option value="family_name" {% if sort == "family_name" %}selected{% endif %}>Family + name</option>
<option value="name_az" {% if sort == "name_az" %}selected{% endif %}>Name A-Z</option>
<option value="name_za" {% if sort == "name_za" %}selected{% endif %}>Name Z-A</option>
<option value="status" {% if sort == "status" %}selected{% endif %}>Status</option>
<option value="offers_high" {% if sort == "offers_high" %}selected{% endif %}>Offers high-low</option>
<option value="offers_low" {% if sort == "offers_low" %}selected{% endif %}>Offers low-high</option>
</select>
</div>
<div class="col-lg-1 d-grid">
<button class="btn btn-dark" type="submit">Go</button>
</div>

View File

@ -96,6 +96,15 @@ def job_list(request):
contract = request.GET.get("contract", "").strip()
family = request.GET.get("family", "").strip()
source_status = request.GET.get("source_status", "").strip()
sort = request.GET.get("sort", "newest").strip()
job_sort_map = {
"newest": "-created_at",
"oldest": "created_at",
"company_az": "company",
"company_za": "-company",
}
order_by = job_sort_map.get(sort, "-created_at")
jobs_qs = JobPosting.objects.select_related("source").filter(is_active=True)
if query:
@ -111,6 +120,7 @@ def job_list(request):
jobs_qs = jobs_qs.filter(source__family=family)
if source_status:
jobs_qs = jobs_qs.filter(source__status=source_status)
jobs_qs = jobs_qs.order_by(order_by)
paginator = Paginator(jobs_qs, 9)
page_number = request.GET.get("page")
@ -127,6 +137,7 @@ def job_list(request):
"contract": contract,
"family": family,
"source_status": source_status,
"sort": sort,
"contract_choices": JobPosting.ContractType.choices,
"family_choices": JobSource.Family.choices,
"source_status_choices": JobSource.Status.choices,
@ -153,8 +164,19 @@ def ops_dashboard(request):
query = request.GET.get("q", "").strip()
family = request.GET.get("family", "").strip()
status = request.GET.get("status", "").strip()
sort = request.GET.get("sort", "family_name").strip()
sources_qs = JobSource.objects.annotate(job_total=Count("jobs")).order_by("family", "name")
source_sort_map = {
"family_name": ("family", "name"),
"name_az": ("name",),
"name_za": ("-name",),
"status": ("status", "name"),
"offers_high": ("-job_total", "name"),
"offers_low": ("job_total", "name"),
}
source_order_by = source_sort_map.get(sort, ("family", "name"))
sources_qs = JobSource.objects.annotate(job_total=Count("jobs")).order_by(*source_order_by)
if query:
sources_qs = sources_qs.filter(Q(name__icontains=query) | Q(owner__icontains=query) | Q(url__icontains=query))
if family:
@ -205,6 +227,7 @@ def ops_dashboard(request):
"query": query,
"family": family,
"status": status,
"sort": sort,
"family_choices": JobSource.Family.choices,
"status_choices": JobSource.Status.choices,
"current_filters_qs": current_filters_qs,