Add configurable report and ban window timeouts.
On the success page for bans and reports, the window can now be configured to close after N seconds if desired. Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
@@ -5,7 +5,8 @@
|
|||||||
{# Body #}
|
{# Body #}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row" id="message">
|
<div class="row" id="message">
|
||||||
{% translate "A ban has been created. This window will close in 1 second." %}
|
{# We do not use pluralize filter for "seconds" because it's a pain to get it to translate. #}
|
||||||
|
{% blocktranslate %}A ban has been created. This window will close in {{window_timeout}} second(s).{% endblocktranslate %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -23,7 +24,7 @@ setTimeout(function() {
|
|||||||
} else {
|
} else {
|
||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000 * {{window_timeout}});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
{# Body #}
|
{# Body #}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row" id="message">
|
<div class="row" id="message">
|
||||||
{% translate "Post reported. This window will close in 1 second." %}
|
{# We do not use pluralize filter for "seconds" because it's a pain to get it to translate. #}
|
||||||
|
{% blocktranslate %}Post reported. This window will close in {{window_timeout}} second(s).{% endblocktranslate %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -23,7 +24,7 @@ setTimeout(function() {
|
|||||||
} else {
|
} else {
|
||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000 * {{window_timeout}});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -1,32 +1,22 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.views.generic.base import TemplateView
|
|
||||||
from board.views import *
|
from board.views import *
|
||||||
|
|
||||||
|
|
||||||
app_name = "board"
|
app_name = "board"
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
# Board views
|
||||||
path("<slug:url>/", BoardView.as_view(), name="board_detail"),
|
path("<slug:url>/", BoardView.as_view(), name="board_detail"),
|
||||||
path("<slug:url>/page/<int:page>/", BoardView.as_view(), name="board_detail"),
|
path("<slug:url>/page/<int:page>/", BoardView.as_view(), name="board_detail"),
|
||||||
path("<slug:url>/post/<int:id>/", PostView.as_view(), name="post_detail"),
|
path("<slug:url>/post/<int:id>/", PostView.as_view(), name="post_detail"),
|
||||||
|
# Reports
|
||||||
path("report/<slug:url>/<int:id>/", ReportView.as_view(), name="report_form"),
|
path("report/<slug:url>/<int:id>/", ReportView.as_view(), name="report_form"),
|
||||||
path(
|
path("report/success/", ReportSuccessView.as_view(), name="report_success"),
|
||||||
"report/success/",
|
# Bans
|
||||||
TemplateView.as_view(template_name="board/report_success.html"),
|
|
||||||
name="report_success",
|
|
||||||
),
|
|
||||||
path("ban/<slug:url>/<int:id>/", BanCreateView.as_view(), name="ban_create"),
|
path("ban/<slug:url>/<int:id>/", BanCreateView.as_view(), name="ban_create"),
|
||||||
path(
|
path("ban/success/", BanSuccessView.as_view(), name="ban_success"),
|
||||||
"ban/success/",
|
path("banned", BannedView.as_view(), name="banned"),
|
||||||
BanSuccessView.as_view(),
|
|
||||||
name="ban_success",
|
|
||||||
),
|
|
||||||
path(
|
|
||||||
"banned",
|
|
||||||
BannedView.as_view(),
|
|
||||||
name="banned",
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
# TODO - make this conditional so we can serve images up with whatever server we want
|
# TODO - make this conditional so we can serve images up with whatever server we want
|
||||||
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ __all__ = (
|
|||||||
"BoardView",
|
"BoardView",
|
||||||
"PostView",
|
"PostView",
|
||||||
"ReportView",
|
"ReportView",
|
||||||
|
"ReportSuccessView",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -145,9 +146,6 @@ class ReportView(CreatePostView):
|
|||||||
form_class = ReportForm
|
form_class = ReportForm
|
||||||
success_url = reverse_lazy("board:report_success")
|
success_url = reverse_lazy("board:report_success")
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
|
||||||
return super(ReportView, self).get_context_data(**kwargs)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def board_url(self) -> str:
|
def board_url(self) -> str:
|
||||||
return self.kwargs["url"]
|
return self.kwargs["url"]
|
||||||
@@ -164,6 +162,15 @@ class ReportView(CreatePostView):
|
|||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
|
class ReportSuccessView(TemplateView):
|
||||||
|
template_name = "board/report_success.html"
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
context["window_timeout"] = settings.REPORT_WINDOW_CLOSE_TIMEOUT
|
||||||
|
return context
|
||||||
|
|
||||||
|
|
||||||
class BanCreateView(PermissionRequiredMixin, CreateView):
|
class BanCreateView(PermissionRequiredMixin, CreateView):
|
||||||
model = Ban
|
model = Ban
|
||||||
form_class = BanForm
|
form_class = BanForm
|
||||||
@@ -209,3 +216,8 @@ class BanCreateView(PermissionRequiredMixin, CreateView):
|
|||||||
class BanSuccessView(PermissionRequiredMixin, TemplateView):
|
class BanSuccessView(PermissionRequiredMixin, TemplateView):
|
||||||
permission_required = "ban.create"
|
permission_required = "ban.create"
|
||||||
template_name = "board/ban_success.html"
|
template_name = "board/ban_success.html"
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
context["window_timeout"] = settings.BAN_WINDOW_CLOSE_TIMEOUT
|
||||||
|
return context
|
||||||
|
|||||||
@@ -137,13 +137,26 @@ MEDIA_ROOT = "media/"
|
|||||||
# Media URL - the URL where media is served from
|
# Media URL - the URL where media is served from
|
||||||
MEDIA_URL = "media/"
|
MEDIA_URL = "media/"
|
||||||
|
|
||||||
|
# Thumbnail size in pixels.
|
||||||
THUMB_SIZE = (200, 200)
|
THUMB_SIZE = (200, 200)
|
||||||
|
|
||||||
|
# Max upload size in bytes.
|
||||||
MAX_UPLOAD_SIZE = 25 * 1024**2
|
MAX_UPLOAD_SIZE = 25 * 1024**2
|
||||||
|
|
||||||
|
# Whether to use HCAPTCHA or not.
|
||||||
USE_HCAPTCHA = False
|
USE_HCAPTCHA = False
|
||||||
|
|
||||||
if USE_HCAPTCHA:
|
if USE_HCAPTCHA:
|
||||||
INSTALLED_APPS += ["hcaptcha"]
|
INSTALLED_APPS += ["hcaptcha"]
|
||||||
HCAPTCHA_SITEKEY = env("HCAPTCHA_SITEKEY")
|
HCAPTCHA_SITEKEY = env("HCAPTCHA_SITEKEY")
|
||||||
HCAPTCHA_SECRET = env("HCAPTCHA_SECRET")
|
HCAPTCHA_SECRET = env("HCAPTCHA_SECRET")
|
||||||
|
|
||||||
|
# How many seconds to wait before closing the report window after a report is
|
||||||
|
# created.
|
||||||
|
# By default, wait 5 seconds. This should give users plenty of time to read it.
|
||||||
|
REPORT_WINDOW_CLOSE_TIMEOUT = 5
|
||||||
|
|
||||||
|
# How many seconds to wait before closing the ban window after a ban is created.
|
||||||
|
# By default, wait 0 seconds and close immediately. It is assumed that the ban
|
||||||
|
# is created successfully, and if an error occurs, the window won't close anyway.
|
||||||
|
BAN_WINDOW_CLOSE_TIMEOUT = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user