Merge pull request #2338 from bookwyrm-social/sort-admin-imports

Make the import admin table sortable
This commit is contained in:
Mouse Reeve 2022-11-07 11:41:58 -08:00 committed by GitHub
commit cc95c4d7b5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 3 deletions

View file

@ -29,15 +29,17 @@
<div class="table-container block content"> <div class="table-container block content">
<table class="table is-striped is-fullwidth"> <table class="table is-striped is-fullwidth">
<tr> <tr>
{% url 'settings-imports' as url %} {% url 'settings-imports' status as url %}
<th> <th>
{% trans "ID" %} {% trans "ID" %}
</th> </th>
<th> <th>
{% trans "User" %} {% trans "User" as text %}
{% include 'snippets/table-sort-header.html' with field="user" sort=sort text=text %}
</th> </th>
<th> <th>
{% trans "Date Created" %} {% trans "Date Created" as text %}
{% include 'snippets/table-sort-header.html' with field="created_date" sort=sort text=text %}
</th> </th>
{% if status != "active" %} {% if status != "active" %}
<th> <th>

View file

@ -22,9 +22,19 @@ class ImportList(View):
def get(self, request, status="active"): def get(self, request, status="active"):
"""list of imports""" """list of imports"""
complete = status == "complete" complete = status == "complete"
sort = request.GET.get("sort", "created_date")
sort_fields = [
"created_date",
"user",
]
imports = models.ImportJob.objects.filter(complete=complete).order_by( imports = models.ImportJob.objects.filter(complete=complete).order_by(
"created_date" "created_date"
) )
# pylint: disable=consider-using-f-string
if sort in sort_fields + ["-{:s}".format(f) for f in sort_fields]:
imports = imports.order_by(sort)
paginated = Paginator(imports, PAGE_LENGTH) paginated = Paginator(imports, PAGE_LENGTH)
page = paginated.get_page(request.GET.get("page")) page = paginated.get_page(request.GET.get("page"))
data = { data = {
@ -33,6 +43,7 @@ class ImportList(View):
page.number, on_each_side=2, on_ends=1 page.number, on_each_side=2, on_ends=1
), ),
"status": status, "status": status,
"sort": sort,
} }
return TemplateResponse(request, "settings/imports/imports.html", data) return TemplateResponse(request, "settings/imports/imports.html", data)