diff options
author | Andrew Godwin | 2022-12-05 19:54:47 -0700 |
---|---|---|
committer | Andrew Godwin | 2022-12-05 19:54:47 -0700 |
commit | e2d28a4be08ccc629def8c85327b657b0bf36f90 (patch) | |
tree | 4929ed303b0545fc5b5848f23dee74dbbbcad1f8 | |
parent | f22869693a04080c3953a904ffa99e9b317d1736 (diff) | |
download | takahe-e2d28a4be08ccc629def8c85327b657b0bf36f90.tar.gz takahe-e2d28a4be08ccc629def8c85327b657b0bf36f90.tar.bz2 takahe-e2d28a4be08ccc629def8c85327b657b0bf36f90.zip |
Add pagination and search to federation page
-rw-r--r-- | static/css/style.css | 5 | ||||
-rw-r--r-- | templates/admin/federation.html | 14 | ||||
-rw-r--r-- | users/views/admin/federation.py | 25 |
3 files changed, 36 insertions, 8 deletions
diff --git a/static/css/style.css b/static/css/style.css index 7b62b5b..e29126b 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -428,6 +428,11 @@ form.follow button { margin: 0; } +form.search { + display: flex; + margin: 0 0 20px 0; +} + form h1 { margin: 0 0 10px 0; } diff --git a/templates/admin/federation.html b/templates/admin/federation.html index 1a48176..98ee09d 100644 --- a/templates/admin/federation.html +++ b/templates/admin/federation.html @@ -3,8 +3,12 @@ {% block subtitle %}Federation{% endblock %} {% block content %} + <form action="." class="search"> + <input type="search" name="query" value="{{ query }}" placeholder="Search by domain"> + <button><i class="fa-solid fa-search"></i></button> + </form> <section class="icon-menu"> - {% for domain in domains %} + {% for domain in page_obj %} <a class="option" href="{{ domain.urls.edit_federation }}"> <i class="fa-solid fa-globe"></i> <span class="handle"> @@ -20,5 +24,13 @@ {% empty %} <p class="option empty">There are no federation links yet.</p> {% endfor %} + <div class="load-more"> + {% if page_obj.has_previous %} + <a class="button" href=".?page={{ page_obj.previous_page_number }}">Previous Page</a> + {% endif %} + {% if page_obj.has_next %} + <a class="button" href=".?page={{ page_obj.next_page_number }}">Next Page</a> + {% endif %} + </div> </section> {% endblock %} diff --git a/users/views/admin/federation.py b/users/views/admin/federation.py index 4d6b179..0611b9e 100644 --- a/users/views/admin/federation.py +++ b/users/views/admin/federation.py @@ -2,24 +2,35 @@ from django import forms from django.db import models from django.shortcuts import get_object_or_404, redirect from django.utils.decorators import method_decorator -from django.views.generic import FormView, TemplateView +from django.views.generic import FormView, ListView from users.decorators import admin_required from users.models import Domain @method_decorator(admin_required, name="dispatch") -class FederationRoot(TemplateView): +class FederationRoot(ListView): template_name = "admin/federation.html" + paginate_by = 50 - def get_context_data(self): - return { - "domains": Domain.objects.filter(local=False) - .annotate(num_users=models.Count("identities")) - .order_by("domain"), + def get(self, request, *args, **kwargs): + self.query = request.GET.get("query") + self.extra_context = { "section": "federation", + "query": self.query or "", } + return super().get(request, *args, **kwargs) + + def get_queryset(self): + domains = ( + Domain.objects.filter(local=False) + .annotate(num_users=models.Count("identities")) + .order_by("domain") + ) + if self.query: + domains = domains.filter(domain__icontains=self.query) + return domains @method_decorator(admin_required, name="dispatch") |