Fix page range

This commit is contained in:
2022-07-16 20:57:29 +02:00
parent 8136a180ab
commit 24af738ad4
4 changed files with 46 additions and 24 deletions

View File

@@ -112,7 +112,7 @@
<span class="page-link">Previous</span> <span class="page-link">Previous</span>
</li> </li>
{% endif %} {% endif %}
{% for i in rolling_stock.paginator.get_elided_page_range %} {% for i in page_range %}
{% if rolling_stock.number == i %} {% if rolling_stock.number == i %}
<li class="page-item active"> <li class="page-item active">
<span class="page-link">{{ i }}</span></span> <span class="page-link">{{ i }}</span></span>

View File

@@ -70,7 +70,7 @@
<span class="page-link">Previous</span> <span class="page-link">Previous</span>
</li> </li>
{% endif %} {% endif %}
{% for i in consist.paginator.get_elided_page_range %} {% for i in page_range %}
{% if consist.number == i %} {% if consist.number == i %}
<li class="page-item active"> <li class="page-item active">
<span class="page-link">{{ i }}</span></span> <span class="page-link">{{ i }}</span></span>

View File

@@ -17,7 +17,7 @@
<span class="page-link">Previous</span> <span class="page-link">Previous</span>
</li> </li>
{% endif %} {% endif %}
{% for i in rolling_stock.paginator.get_elided_page_range %} {% for i in page_range %}
{% if rolling_stock.number == i %} {% if rolling_stock.number == i %}
<li class="page-item active"> <li class="page-item active">
<span class="page-link">{{ i }}</span></span> <span class="page-link">{{ i }}</span></span>

View File

@@ -15,10 +15,12 @@ from consist.models import Consist
def order_by_fields(): def order_by_fields():
order_by = get_site_conf().items_ordering order_by = get_site_conf().items_ordering
fields = ["rolling_class__type", fields = [
"rolling_class__company", "rolling_class__type",
"rolling_class__identifier", "rolling_class__company",
"road_number_int"] "rolling_class__identifier",
"road_number_int",
]
if order_by == "type": if order_by == "type":
return (fields[0], fields[1], fields[2], fields[3]) return (fields[0], fields[1], fields[2], fields[3])
@@ -32,6 +34,7 @@ class GetHome(View):
def get(self, request, page=1): def get(self, request, page=1):
site_conf = get_site_conf() site_conf = get_site_conf()
rolling_stock = RollingStock.objects.order_by(*order_by_fields()) rolling_stock = RollingStock.objects.order_by(*order_by_fields())
paginator = Paginator(rolling_stock, site_conf.items_per_page) paginator = Paginator(rolling_stock, site_conf.items_per_page)
rolling_stock = paginator.get_page(page) rolling_stock = paginator.get_page(page)
page_range = paginator.get_elided_page_range(rolling_stock.number) page_range = paginator.get_elided_page_range(rolling_stock.number)
@@ -39,7 +42,7 @@ class GetHome(View):
return render( return render(
request, request,
"home.html", "home.html",
{"rolling_stock": rolling_stock, "page_range": page_range} {"rolling_stock": rolling_stock, "page_range": page_range},
) )
@@ -75,18 +78,21 @@ class GetHomeFiltered(View):
query = Q(tags__slug__icontains=search) query = Q(tags__slug__icontains=search)
else: else:
raise Http404 raise Http404
rolling_stock = ( rolling_stock = RollingStock.objects.filter(query).order_by(
RollingStock.objects.filter(query).order_by(*order_by_fields()) *order_by_fields()
) )
matches = len(rolling_stock) matches = len(rolling_stock)
paginator = Paginator(rolling_stock, site_conf.items_per_page) paginator = Paginator(rolling_stock, site_conf.items_per_page)
rolling_stock = paginator.get_page(page) rolling_stock = paginator.get_page(page)
page_range = paginator.get_elided_page_range(rolling_stock.number)
return rolling_stock, matches return rolling_stock, matches, page_range
def get(self, request, search, _filter=None, page=1): def get(self, request, search, _filter=None, page=1):
rolling_stock, matches = self.run_search( rolling_stock, matches, page_range = self.run_search(
request, search, _filter, page) request, search, _filter, page
)
return render( return render(
request, request,
@@ -96,6 +102,7 @@ class GetHomeFiltered(View):
"filter": _filter, "filter": _filter,
"matches": matches, "matches": matches,
"rolling_stock": rolling_stock, "rolling_stock": rolling_stock,
"page_range": page_range,
}, },
) )
@@ -103,8 +110,9 @@ class GetHomeFiltered(View):
search = request.POST.get("search") search = request.POST.get("search")
if not search: if not search:
raise Http404 raise Http404
rolling_stock, matches = self.run_search( rolling_stock, matches, page_range = self.run_search(
request, search, _filter, page) request, search, _filter, page
)
return render( return render(
request, request,
@@ -114,6 +122,7 @@ class GetHomeFiltered(View):
"filter": _filter, "filter": _filter,
"matches": matches, "matches": matches,
"rolling_stock": rolling_stock, "rolling_stock": rolling_stock,
"page_range": page_range,
}, },
) )
@@ -126,15 +135,16 @@ class GetRollingStock(View):
raise Http404 raise Http404
class_properties = ( class_properties = (
rolling_stock.rolling_class.property.all() if rolling_stock.rolling_class.property.all()
request.user.is_authenticated else if request.user.is_authenticated
rolling_stock.rolling_class.property.filter( else rolling_stock.rolling_class.property.filter(
property__private=False) property__private=False
)
) )
rolling_stock_properties = ( rolling_stock_properties = (
rolling_stock.property.all() if rolling_stock.property.all()
request.user.is_authenticated else if request.user.is_authenticated
rolling_stock.property.filter(property__private=False) else rolling_stock.property.filter(property__private=False)
) )
return render( return render(
@@ -152,10 +162,16 @@ class Consists(View):
def get(self, request, page=1): def get(self, request, page=1):
site_conf = get_site_conf() site_conf = get_site_conf()
consist = Consist.objects.all() consist = Consist.objects.all()
paginator = Paginator(consist, site_conf.items_per_page) paginator = Paginator(consist, site_conf.items_per_page)
consist = paginator.get_page(page) consist = paginator.get_page(page)
page_range = paginator.get_elided_page_range(consist.number)
return render(request, "consists.html", {"consist": consist}) return render(
request,
"consists.html",
{"consist": consist, "page_range": page_range}
)
class GetConsist(View): class GetConsist(View):
@@ -166,11 +182,17 @@ class GetConsist(View):
except ObjectDoesNotExist: except ObjectDoesNotExist:
raise Http404 raise Http404
rolling_stock = consist.consist_item.all() rolling_stock = consist.consist_item.all()
paginator = Paginator(rolling_stock, site_conf.items_per_page) paginator = Paginator(rolling_stock, site_conf.items_per_page)
rolling_stock = paginator.get_page(page) rolling_stock = paginator.get_page(page)
page_range = paginator.get_elided_page_range(rolling_stock.number)
return render( return render(
request, request,
"consist.html", "consist.html",
{"consist": consist, "rolling_stock": rolling_stock}, {
"consist": consist,
"rolling_stock": rolling_stock,
"page_range": page_range
},
) )