Add configuration options for pagination (#835)

This commit is contained in:
Sascha Ißbrücker
2024-09-18 23:14:19 +02:00
committed by GitHub
parent 2aab2813f4
commit 450980a8d4
10 changed files with 157 additions and 10 deletions

View File

@@ -38,8 +38,6 @@ from bookmarks.services.bookmarks import (
from bookmarks.utils import get_safe_return_url
from bookmarks.views import contexts, partials, turbo
_default_page_size = 30
@login_required
def index(request):

View File

@@ -21,7 +21,6 @@ from bookmarks.models import (
)
from bookmarks.services.wayback import generate_fallback_webarchive_url
DEFAULT_PAGE_SIZE = 30
CJK_RE = re.compile(r"[\u4e00-\u9fff]+")
@@ -181,7 +180,7 @@ class BookmarkListContext:
query_set = request_context.get_bookmark_query_set(self.search)
page_number = request.GET.get("page")
paginator = Paginator(query_set, DEFAULT_PAGE_SIZE)
paginator = Paginator(query_set, user_profile.items_per_page)
bookmarks_page = paginator.get_page(page_number)
# Prefetch related objects, this avoids n+1 queries when accessing fields in templates
models.prefetch_related_objects(bookmarks_page.object_list, "owner", "tags")

View File

@@ -28,7 +28,7 @@ logger = logging.getLogger(__name__)
@login_required
def general(request):
def general(request, status=200, context_overrides=None):
enable_refresh_favicons = django_settings.LD_ENABLE_REFRESH_FAVICONS
has_snapshot_support = django_settings.LD_ENABLE_SNAPSHOTS
success_message = _find_message_with_tag(
@@ -44,6 +44,9 @@ def general(request):
if request.user.is_superuser:
global_settings_form = GlobalSettingsForm(instance=GlobalSettings.get())
if context_overrides is None:
context_overrides = {}
return render(
request,
"settings/general.html",
@@ -55,7 +58,9 @@ def general(request):
"success_message": success_message,
"error_message": error_message,
"version_info": version_info,
**context_overrides,
},
status=status,
)
@@ -63,8 +68,7 @@ def general(request):
def update(request):
if request.method == "POST":
if "update_profile" in request.POST:
update_profile(request)
messages.success(request, "Profile updated", "settings_success_message")
return update_profile(request)
if "update_global_settings" in request.POST:
update_global_settings(request)
messages.success(
@@ -101,13 +105,22 @@ def update_profile(request):
form = UserProfileForm(request.POST, instance=profile)
if form.is_valid():
form.save()
messages.success(request, "Profile updated", "settings_success_message")
# Load missing favicons if the feature was just enabled
if profile.enable_favicons and not favicons_were_enabled:
tasks.schedule_bookmarks_without_favicons(request.user)
# Load missing preview images if the feature was just enabled
if profile.enable_preview_images and not previews_were_enabled:
tasks.schedule_bookmarks_without_previews(request.user)
return form
return HttpResponseRedirect(reverse("bookmarks:settings.general"))
messages.error(
request,
"Profile update failed, check the form below for errors",
"settings_error_message",
)
return general(request, 422, {"form": form})
def update_global_settings(request):