1
0
Fork 0

Merge branch 'main' into book-series-v1

This commit is contained in:
Dustin 2023-01-24 13:14:28 +00:00 committed by GitHub
commit aad934fa59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 315 additions and 15 deletions

View file

@ -11,7 +11,12 @@ from .admin.federation import AddFederatedServer, ImportServerBlocklist
from .admin.federation import block_server, unblock_server, refresh_server
from .admin.email_blocklist import EmailBlocklist
from .admin.email_config import EmailConfig
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

View file

@ -39,7 +39,7 @@ def view_data():
"email_backend": settings.EMAIL_BACKEND,
"email_host": settings.EMAIL_HOST,
"email_port": settings.EMAIL_PORT,
"Email_host_user": settings.EMAIL_HOST_USER,
"email_host_user": settings.EMAIL_HOST_USER,
"email_use_tls": settings.EMAIL_USE_TLS,
"email_use_ssl": settings.EMAIL_USE_SSL,
"email_sender": settings.EMAIL_SENDER,

View file

@ -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")

View file

@ -43,6 +43,7 @@ class EditBook(View):
form = forms.EditionForm(request.POST, request.FILES, instance=book)
data = {"book": book, "form": form}
ensure_transient_values_persist(request, data)
if not form.is_valid():
return TemplateResponse(request, "book/edit/edit_book.html", data)
@ -101,6 +102,8 @@ class CreateBook(View):
"authors": authors,
}
ensure_transient_values_persist(request, data)
if not form.is_valid():
return TemplateResponse(request, "book/edit/edit_book.html", data)
@ -136,6 +139,11 @@ class CreateBook(View):
return redirect(f"/book/{book.id}")
def ensure_transient_values_persist(request, data):
"""ensure that values of transient form fields persist when re-rendering the form"""
data["cover_url"] = request.POST.get("cover-url")
def add_authors(request, data):
"""helper for adding authors"""
add_author = [author for author in request.POST.getlist("add_author") if author]
@ -150,7 +158,6 @@ def add_authors(request, data):
data["confirm_mode"] = True
# this isn't preserved because it isn't part of the form obj
data["remove_authors"] = request.POST.getlist("remove_authors")
data["cover_url"] = request.POST.get("cover-url")
for author in add_author:
# filter out empty author fields

View file

@ -51,6 +51,19 @@ 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
)
# pylint: disable=consider-using-generator
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):