Flag allowed NSFW content
This commit is contained in:
parent
6ba0834175
commit
4bdfe2d05c
10 changed files with 77 additions and 13 deletions
|
@ -40,3 +40,7 @@ html,body {
|
|||
font-style: italic;
|
||||
color: #9073FF;
|
||||
}
|
||||
|
||||
.messages {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
|
|
@ -21,7 +21,20 @@
|
|||
<body>
|
||||
{% navbar %}
|
||||
<div class="container" id="main-content">
|
||||
{% block content %}{% endblock %}
|
||||
{% if messages %}
|
||||
<div class="messages">
|
||||
{% for message in messages %}
|
||||
<div class="alert alert-{% if message.level == DEFAULT_MESSAGE_LEVELS.ERROR %}danger{% elif message.level == DEFAULT_MESSAGE_LEVELS.WARNING %}warning{% elif message.level == DEFAULT_MESSAGE_LEVELS.SUCCESS %}success{% elif message.level == DEFAULT_MESSAGE_LEVELS.INFO %}info{% else %}secondary{% endif %}" role="alert">
|
||||
{% if 'safe' in message.tags %}
|
||||
{{ message|safe }}
|
||||
{% else %}
|
||||
{{ message }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
<script src="{% static "khaganat/jquery-3.2.1.min.js" %}"></script>
|
||||
<script src="{% static "khaganat/bootstrap/4.0.0-beta.3/js/bootstrap.bundle.min.js" %}"></script>
|
||||
|
|
|
@ -111,9 +111,11 @@ class EntriesView(generic.ListView):
|
|||
return False
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not nsfw.is_nsfw_allowed(request):
|
||||
if self.is_nsfw():
|
||||
if self.is_nsfw():
|
||||
if not nsfw.is_nsfw_allowed(request):
|
||||
return nsfw.redirect(request)
|
||||
else:
|
||||
nsfw.alert(request)
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-27 18:28+0200\n"
|
||||
"POT-Creation-Date: 2018-06-02 21:36+0200\n"
|
||||
"PO-Revision-Date: 2018-02-04 01:03+0100\n"
|
||||
"Last-Translator: Khaganat <assoc@khaganat.net>\n"
|
||||
"Language-Team: Khaganat <assoc@khaganat.net>\n"
|
||||
|
@ -140,6 +140,16 @@ msgstr ""
|
|||
msgid "1 day"
|
||||
msgstr ""
|
||||
|
||||
#: templates/neluser/nsfw_message.html:2
|
||||
msgid ""
|
||||
"This page contains sensitive content which is displayed because you disabled "
|
||||
"the safe mode."
|
||||
msgstr ""
|
||||
|
||||
#: templates/neluser/nsfw_message.html:3
|
||||
msgid "Enable safe mode"
|
||||
msgstr ""
|
||||
|
||||
#: templates/neluser/password_reset.html:4
|
||||
#: templates/neluser/password_reset_confirm.html:4
|
||||
#: templates/neluser/password_reset_done.html:4
|
||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-27 18:28+0200\n"
|
||||
"POT-Creation-Date: 2018-06-02 21:36+0200\n"
|
||||
"PO-Revision-Date: 2018-02-04 01:03+0100\n"
|
||||
"Last-Translator: Khaganat <assoc@khaganat.net>\n"
|
||||
"Language-Team: Khaganat <assoc@khaganat.net>\n"
|
||||
|
@ -145,6 +145,18 @@ msgstr "1 heure"
|
|||
msgid "1 day"
|
||||
msgstr "1 jour"
|
||||
|
||||
#: templates/neluser/nsfw_message.html:2
|
||||
msgid ""
|
||||
"This page contains sensitive content which is displayed because you disabled "
|
||||
"the safe mode."
|
||||
msgstr ""
|
||||
"Cette page contient du contenu indiqué comme pouvant heurter la sensibilité. "
|
||||
"Ce contenu est affiché car vous avez désactivé la navigation filtrée."
|
||||
|
||||
#: templates/neluser/nsfw_message.html:3
|
||||
msgid "Enable safe mode"
|
||||
msgstr "Activer la navigation filtrée"
|
||||
|
||||
#: templates/neluser/password_reset.html:4
|
||||
#: templates/neluser/password_reset_confirm.html:4
|
||||
#: templates/neluser/password_reset_done.html:4
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.http import HttpResponseRedirect, QueryDict
|
||||
from django.template.loader import render_to_string
|
||||
from django.urls.exceptions import Resolver404
|
||||
from django.shortcuts import render
|
||||
from django.contrib import messages
|
||||
from neluser.models import NelUser
|
||||
from django.urls import reverse, resolve
|
||||
from django.conf import settings
|
||||
|
@ -22,7 +25,17 @@ def is_nsfw_allowed(request):
|
|||
return s.lower() in settings.KHAGANAT_NSFW_OK
|
||||
|
||||
|
||||
def disable_view(request, max_age):
|
||||
def disable_view(request):
|
||||
if isinstance(request.user, NelUser):
|
||||
request.user.nsfw_allowed = False
|
||||
request.user.save()
|
||||
next_url = reverse('index')
|
||||
response = HttpResponseRedirect(next_url)
|
||||
response.delete_cookie(settings.KHAGANAT_NSFW_NAME)
|
||||
return response
|
||||
|
||||
|
||||
def enable_view(request, max_age):
|
||||
try:
|
||||
max_age = int(max_age) or None
|
||||
except ValueError:
|
||||
|
@ -60,3 +73,7 @@ def redirect(request):
|
|||
next_url=request.get_full_path()
|
||||
)
|
||||
return HttpResponseRedirect(dest)
|
||||
|
||||
def alert(request):
|
||||
msg = render_to_string('neluser/nsfw_message.html')
|
||||
messages.info(request, msg, extra_tags='safe')
|
||||
|
|
|
@ -9,12 +9,12 @@
|
|||
<p>{% trans "The content you were about to see is flagged as sensitive and therefore cannot be seen while the safe mode is activated." %}</p>
|
||||
<div>
|
||||
<a class="btn btn-primary" href="{% url "index" %}" role="button">{% trans "Go back home" %}</a>
|
||||
<a class="btn btn-danger" href="{% url "disable_nsfw" "0" %}?next={{ next_url }}" role="button">{% trans "Permanently disable safe mode" %}</a>
|
||||
<a class="btn btn-danger" href="{% url "enable_nsfw" "0" %}?next={{ next_url }}" role="button">{% trans "Permanently disable safe mode" %}</a>
|
||||
<br>
|
||||
{% trans "Or disable safe mode for:" %}
|
||||
<a class="badge badge-warning" href="{% url "disable_nsfw" "300" %}?next={{ next_url }}">{% trans "5 minutes" %}</a>
|
||||
<a class="badge badge-warning" href="{% url "disable_nsfw" "3600" %}?next={{ next_url }}">{% trans "1 hour" %}</a>
|
||||
<a class="badge badge-warning" href="{% url "disable_nsfw" "86400" %}?next={{ next_url }}">{% trans "1 day" %}</a>
|
||||
<a class="badge badge-warning" href="{% url "enable_nsfw" "300" %}?next={{ next_url }}">{% trans "5 minutes" %}</a>
|
||||
<a class="badge badge-warning" href="{% url "enable_nsfw" "3600" %}?next={{ next_url }}">{% trans "1 hour" %}</a>
|
||||
<a class="badge badge-warning" href="{% url "enable_nsfw" "86400" %}?next={{ next_url }}">{% trans "1 day" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
3
neluser/templates/neluser/nsfw_message.html
Normal file
3
neluser/templates/neluser/nsfw_message.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
{% load i18n %}
|
||||
{% trans "This page contains sensitive content which is displayed because you disabled the safe mode." %}<br>
|
||||
<a href="{% url 'disable_nsfw' %}">{% trans "Enable safe mode" %}</a>
|
|
@ -65,5 +65,6 @@ urlpatterns = [
|
|||
|
||||
# NSFW
|
||||
path('nsfw/', nsfw.warn_view, name='nsfw'),
|
||||
path('nsfw/disable/<max_age>/', nsfw.disable_view, name='disable_nsfw'),
|
||||
path('nsfw/enable/<max_age>/', nsfw.enable_view, name='enable_nsfw'),
|
||||
path('nsfw/disable/', nsfw.disable_view, name='disable_nsfw'),
|
||||
]
|
||||
|
|
|
@ -17,9 +17,11 @@ class PageView(generic.DetailView):
|
|||
template_name = 'pages/page.html'
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not nsfw.is_nsfw_allowed(request):
|
||||
if self.get_object().page.is_nsfw:
|
||||
if self.get_object().page.is_nsfw:
|
||||
if not nsfw.is_nsfw_allowed(request):
|
||||
return nsfw.redirect(request)
|
||||
else:
|
||||
nsfw.alert(request)
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_object(self):
|
||||
|
|
Loading…
Reference in a new issue