1
0
Fork 0

cooldown period for user exports

add USER_EXPORT_COOLDOWN_HOURS setting for controlling user exports and imports
This commit is contained in:
Hugh Rundle 2023-10-22 10:49:13 +11:00
parent 20114b0059
commit 836127f369
No known key found for this signature in database
GPG key ID: A7E35779918253F9
5 changed files with 32 additions and 23 deletions

View file

@ -23,7 +23,7 @@ from bookwyrm.importers import (
OpenLibraryImporter,
)
from bookwyrm.models.bookwyrm_import_job import BookwyrmImportJob
from bookwyrm.settings import PAGE_LENGTH
from bookwyrm.settings import PAGE_LENGTH, USER_EXPORT_COOLDOWN_HOURS
from bookwyrm.utils.cache import get_or_set
# pylint: disable= no-self-use
@ -142,11 +142,16 @@ class UserImport(View):
jobs = BookwyrmImportJob.objects.filter(user=request.user).order_by(
"-created_date"
)
hours = USER_EXPORT_COOLDOWN_HOURS
allowed = jobs.first().created_date < timezone.now() - datetime.timedelta(hours=hours)
next_available = jobs.first().created_date + datetime.timedelta(hours=hours) if not allowed else False
paginated = Paginator(jobs, PAGE_LENGTH)
page = paginated.get_page(request.GET.get("page"))
data = {
"import_form": forms.ImportUserForm(),
"jobs": page,
"user_import_hours": hours,
"next_available": next_available,
"page_range": paginated.get_elided_page_range(
page.number, on_each_side=2, on_ends=1
),

View file

@ -1,4 +1,5 @@
""" Let users export their book data """
from datetime import timedelta
import csv
import io
@ -7,11 +8,12 @@ from django.core.paginator import Paginator
from django.db.models import Q
from django.http import HttpResponse
from django.template.response import TemplateResponse
from django.utils import timezone
from django.views import View
from django.utils.decorators import method_decorator
from django.shortcuts import redirect
from bookwyrm import models
from bookwyrm import models, settings
from bookwyrm.models.bookwyrm_export_job import BookwyrmExportJob
from bookwyrm.settings import PAGE_LENGTH
@ -101,10 +103,15 @@ class ExportUser(View):
jobs = BookwyrmExportJob.objects.filter(user=request.user).order_by(
"-created_date"
)
hours = settings.USER_EXPORT_COOLDOWN_HOURS
allowed = jobs.first().created_date < timezone.now() - timedelta(hours=hours)
next_available = jobs.first().created_date + timedelta(hours=hours) if not allowed else False
paginated = Paginator(jobs, PAGE_LENGTH)
page = paginated.get_page(request.GET.get("page"))
data = {
"jobs": page,
"next_available": next_available,
"page_range": paginated.get_elided_page_range(
page.number, on_each_side=2, on_ends=1
),