diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py
index 9a4c9b5a4..854f05973 100644
--- a/bookwyrm/settings.py
+++ b/bookwyrm/settings.py
@@ -423,3 +423,6 @@ if HTTP_X_FORWARDED_PROTO:
# Do not change this setting unless you already have an existing
# user with the same username - in which case you should change it!
INSTANCE_ACTOR_USERNAME = "bookwyrm.instance.actor"
+
+# exports
+USER_EXPORT_COOLDOWN_HOURS = 48
\ No newline at end of file
diff --git a/bookwyrm/templates/import/import_user.html b/bookwyrm/templates/import/import_user.html
index e48f0198d..1eee017fa 100644
--- a/bookwyrm/templates/import/import_user.html
+++ b/bookwyrm/templates/import/import_user.html
@@ -15,28 +15,12 @@
{% endif %}
- {% if import_size_limit and import_limit_reset %}
-
-
{% blocktrans %}Currently you are allowed to import one user every {{ user_import_limit_reset }} days.{% endblocktrans %}
-
{% blocktrans %}You have {{ allowed_imports }} left.{% endblocktrans %}
+ {% if next_available %}
+
+
{% blocktrans %}Currently you are allowed to import one user every {{ user_import_hours }} hours.{% endblocktrans %}
+
{% blocktrans %}You will next be able to import a user file at {{ next_available }}{% endblocktrans %}
- {% endif %}
- {% if recent_avg_hours or recent_avg_minutes %}
-
-
- {% if recent_avg_hours %}
- {% blocktrans trimmed with hours=recent_avg_hours|floatformat:0|intcomma %}
- On average, recent imports have taken {{ hours }} hours.
- {% endblocktrans %}
- {% else %}
- {% blocktrans trimmed with minutes=recent_avg_minutes|floatformat:0|intcomma %}
- On average, recent imports have taken {{ minutes }} minutes.
- {% endblocktrans %}
- {% endif %}
-
-
- {% endif %}
-
+ {% else %}
+ {% endif %}
diff --git a/bookwyrm/templates/preferences/export-user.html b/bookwyrm/templates/preferences/export-user.html
index 2dd3f6de3..2f63c9e1c 100644
--- a/bookwyrm/templates/preferences/export-user.html
+++ b/bookwyrm/templates/preferences/export-user.html
@@ -9,6 +9,13 @@
{% block panel %}
+ {% if next_available %}
+
+ {% blocktrans %}
+ You will be able to create a new export file at {{ next_available }}
+ {% endblocktrans %}
+
+ {% else %}
{% trans "Your exported archive file will include all user data for import into another Bookwyrm server" %}
@@ -19,6 +26,8 @@
{% trans "Create user export file" %}
+ {% endif %}
+
{% trans "Recent Exports" %}
diff --git a/bookwyrm/views/imports/import_data.py b/bookwyrm/views/imports/import_data.py
index 69a87c0c2..aa561d367 100644
--- a/bookwyrm/views/imports/import_data.py
+++ b/bookwyrm/views/imports/import_data.py
@@ -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
),
diff --git a/bookwyrm/views/preferences/export.py b/bookwyrm/views/preferences/export.py
index 28e83051e..49b19aea8 100644
--- a/bookwyrm/views/preferences/export.py
+++ b/bookwyrm/views/preferences/export.py
@@ -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
),