add important checkbox

This commit is contained in:
Laura Klünder 2024-12-25 11:51:30 +01:00
parent d71e2f3975
commit d4154a61b6
3 changed files with 115 additions and 7 deletions

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-24 23:00+0100\n"
"PO-Revision-Date: 2024-12-24 23:04+0100\n"
"POT-Creation-Date: 2024-12-25 11:49+0100\n"
"PO-Revision-Date: 2024-12-25 11:50+0100\n"
"Last-Translator: Laura Klünder <laura@codingcatgirl.de>\n"
"Language-Team: \n"
"Language: de\n"
@ -2918,10 +2918,6 @@ msgstr "via Control Panel"
msgid "Map update"
msgstr "Kartenänderung"
#: c3nav/mapdata/quests/simple.py
msgid "Ranging Beacon Altitude"
msgstr "Höhe des Ranging Beacons"
#: c3nav/mapdata/quests/simple.py
#, python-format
msgid "How many meters above ground is the access point “%s” mounted?"
@ -2931,6 +2927,10 @@ msgstr "Wie viele meter über dem Boden ist der access point „%s“ befestigt?
msgid "The AP should not be 0m above ground."
msgstr "Der AP sollte sich nicht 0m über dem Boden befinden."
#: c3nav/mapdata/quests/simple.py
msgid "Ranging Beacon Altitude"
msgstr "Höhe des Ranging Beacons"
#: c3nav/mapdata/tasks.py
#, python-format
msgid "%d map update processed."
@ -4189,6 +4189,77 @@ msgstr[1] ""
msgid "Route from %s to %s"
msgstr "Route von %s nach %s"
#: c3nav/site/views.py
msgid "I do not read fefe or i only read the sports section."
msgstr "Ich lese kein Fefe oder nur den Sportteil."
#: c3nav/site/views.py
msgid ""
"I am not affiliated with Automattic in any way, financially or otherwise."
msgstr ""
"Ich bin in keiner Weise, weder finanziell noch anderweitig, Automattic "
"angehörig."
#: c3nav/site/views.py
msgid ""
"I am not Anish Kapoor, i am in no way affiliated to Anish Kapoor, I am not "
"signing in on behalf of Anish Kapoor or an associate of Anish Kapoor. To the "
"best of my knowledge, information and belief, this account will not make its "
"way into the hands of Anish Kapoor."
msgstr ""
"Ich bin nicht Anish Kapoor, ich bin in keiner Weise mit Anish Kapoor "
"verbunden, ich melde mich nicht im Namen von Anish Kapoor oder eines "
"Mitarbeiters von Anish Kapoor an. Nach meinem besten Wissen und Gewissen "
"wird dieses Konto nicht in die Hände von Anish Kapoor gelangen."
#: c3nav/site/views.py
msgid "I do not use generative AI to create cheap assets for my talk slides."
msgstr ""
"Ich verwende keine generative KI, um billige Assets für meine Vortragsfolien "
"zu erstellen."
#: c3nav/site/views.py
msgid "I have not checked this checkbox."
msgstr "Ich habe diese Checkbox nicht aktiviert."
#: c3nav/site/views.py
msgid ""
"I will not harm any human being, catgirl or similar creature nor through "
"inaction permit any such creature to be harmed."
msgstr ""
"Ich werde keinem Menschen, Catgirl oder ähnlichen Lebewesen Schaden zufügen "
"und auch nicht durch Untätigkeit zulassen, dass einem solchen Lebewesen "
"Schaden zugefügt wird."
#: c3nav/site/views.py
msgid "I am not a robot or i am at least a cute one."
msgstr "Ich bin kein Roboter oder wenn, dann ein cuter Roboter."
#: c3nav/site/views.py
msgid "I am a robot."
msgstr "Ich bin ein Roboter."
#: c3nav/site/views.py
msgid "Trans rights!"
msgstr "Trans rights!"
#: c3nav/site/views.py
msgid "Be excellent to each other."
msgstr "Be excellent to each other."
#: c3nav/site/views.py
msgid ""
"I acknowledge that any checkboxes shown under this form are optional, non-"
"mandatory serving suggestions."
msgstr ""
"Ich erkenne an, dass alle Checkboxen unter diesem Formular optionale, nicht-"
"verpflichtende Serviervorschläge sind."
#: c3nav/site/views.py
msgid "If you do not like this checkbox, reload to get another one."
msgstr ""
"Wenn dir diese Checkbox nicht gefällt, lade die Seite neu für eine andere."
#: c3nav/site/views.py
msgid "account creation is currently disabled."
msgstr "Benutzerregistrierung ist momentan deaktiviert."

View file

@ -195,6 +195,21 @@ main.account form {
width: 100%;
}
form label:has(+[type=checkbox]) {
float: right;
width: calc(100% - 25px);
margin-bottom: 1px;
}
form [type=checkbox] {
margin-bottom: 1px;
}
form [type=checkbox]+.helptext {
clear: both;
display: block;
mrgin-top: 1px;
margin-bottom: 1px;
}
#modal-content p, main.account p {
margin-bottom: 10px;
}

View file

@ -1,4 +1,5 @@
import json
import random
from itertools import chain
from typing import Optional
from urllib.parse import urlparse
@ -14,6 +15,7 @@ from django.core.exceptions import ObjectDoesNotExist, SuspiciousOperation, Vali
from django.core.paginator import Paginator
from django.core.serializers.json import DjangoJSONEncoder
from django.db import transaction
from django.forms.fields import BooleanField
from django.http import Http404, HttpResponse, HttpResponseBadRequest, QueryDict
from django.middleware import csrf
from django.shortcuts import get_object_or_404, redirect, render
@ -47,7 +49,6 @@ from c3nav.routing.models import RouteOptions
from c3nav.site.forms import APISecretForm, DeleteAccountForm, PositionForm, PositionSetForm, ReportUpdateForm
from c3nav.site.models import Announcement, SiteUpdate
if settings.METRICS:
from prometheus_client import Counter
@ -292,6 +293,24 @@ def migrate_access_permissions_after_login(request):
transaction.on_commit(lambda: cache.delete(AccessPermission.request_access_permission_key(request)))
login_options = (
_('I do not read fefe or i only read the sports section.'),
_('I am not affiliated with Automattic in any way, financially or otherwise.'),
_('I am not Anish Kapoor, i am in no way affiliated to Anish Kapoor, I am not signing in on behalf of '
'Anish Kapoor or an associate of Anish Kapoor. To the best of my knowledge, information and belief, this account '
'will not make its way into the hands of Anish Kapoor.'),
_('I do not use generative AI to create cheap assets for my talk slides.'),
_('I have not checked this checkbox.'),
_('I will not harm any human being, catgirl or similar creature nor through inaction permit any such creature '
'to be harmed.'),
_('I am not a robot or i am at least a cute one.'),
_('I am a robot.'),
_('Trans rights!'),
_('Be excellent to each other.'),
_('I acknowledge that any checkboxes shown under this form are optional, non-mandatory serving suggestions.'),
)
@never_cache
def login_view(request):
if request.user.is_authenticated:
@ -306,6 +325,9 @@ def login_view(request):
else:
form = AuthenticationForm(request)
form.fields["check"] = BooleanField(required=False, label=random.choice(login_options),
help_text=_('If you do not like this checkbox, reload to get another one.'))
redirect_path = request.GET.get(REDIRECT_FIELD_NAME, '/account/')
if referer := request.headers.get('Referer', None):
referer = urlparse(referer)