Added Import Limit
This commit is contained in:
parent
8ec984c3ff
commit
df54df8309
16 changed files with 138 additions and 9 deletions
|
@ -10,7 +10,12 @@ from .admin.federation import Federation, FederatedServer
|
|||
from .admin.federation import AddFederatedServer, ImportServerBlocklist
|
||||
from .admin.federation import block_server, unblock_server, refresh_server
|
||||
from .admin.email_blocklist import EmailBlocklist
|
||||
from .admin.imports import ImportList, disable_imports, enable_imports
|
||||
from .admin.imports import (
|
||||
ImportList,
|
||||
disable_imports,
|
||||
enable_imports,
|
||||
set_import_size_limit,
|
||||
)
|
||||
from .admin.ip_blocklist import IPBlocklist
|
||||
from .admin.invite import ManageInvites, Invite, InviteRequest
|
||||
from .admin.invite import ManageInviteRequests, ignore_invite_request
|
||||
|
|
|
@ -38,6 +38,8 @@ class ImportList(View):
|
|||
|
||||
paginated = Paginator(imports, PAGE_LENGTH)
|
||||
page = paginated.get_page(request.GET.get("page"))
|
||||
|
||||
site_settings = models.SiteSettings.objects.get()
|
||||
data = {
|
||||
"imports": page,
|
||||
"page_range": paginated.get_elided_page_range(
|
||||
|
@ -45,6 +47,8 @@ class ImportList(View):
|
|||
),
|
||||
"status": status,
|
||||
"sort": sort,
|
||||
"import_size_limit": site_settings.import_size_limit,
|
||||
"import_limit_reset": site_settings.import_limit_reset,
|
||||
}
|
||||
return TemplateResponse(request, "settings/imports/imports.html", data)
|
||||
|
||||
|
@ -76,3 +80,17 @@ def enable_imports(request):
|
|||
site.imports_enabled = True
|
||||
site.save(update_fields=["imports_enabled"])
|
||||
return redirect("settings-imports")
|
||||
|
||||
|
||||
@require_POST
|
||||
@permission_required("bookwyrm.edit_instance_settings", raise_exception=True)
|
||||
# pylint: disable=unused-argument
|
||||
def set_import_size_limit(request):
|
||||
"""Limit the amount of books users can import at once"""
|
||||
site = models.SiteSettings.objects.get()
|
||||
import_size_limit = int(request.POST.get("limit"))
|
||||
import_limit_reset = int(request.POST.get("reset"))
|
||||
site.import_size_limit = import_size_limit
|
||||
site.import_limit_reset = import_limit_reset
|
||||
site.save(update_fields=["import_size_limit", "import_limit_reset"])
|
||||
return redirect("settings-imports")
|
||||
|
|
|
@ -51,6 +51,18 @@ class Import(View):
|
|||
elif seconds:
|
||||
data["recent_avg_minutes"] = seconds / 60
|
||||
|
||||
site_settings = models.SiteSettings.objects.get()
|
||||
time_range = timezone.now() - datetime.timedelta(
|
||||
days=site_settings.import_limit_reset
|
||||
)
|
||||
import_jobs = models.ImportJob.objects.filter(
|
||||
user=request.user, created_date__gte=time_range
|
||||
)
|
||||
imported_books = sum([job.successful_item_count for job in import_jobs])
|
||||
data["import_size_limit"] = site_settings.import_size_limit
|
||||
data["import_limit_reset"] = site_settings.import_limit_reset
|
||||
data["allowed_imports"] = site_settings.import_size_limit - imported_books
|
||||
|
||||
return TemplateResponse(request, "import/import.html", data)
|
||||
|
||||
def post(self, request):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue