From 0ca77edc6fa3f620da099b3467bb4a8177544fda Mon Sep 17 00:00:00 2001
From: sistason <c3infra@sistason.de>
Date: Sat, 2 Apr 2022 14:50:28 +0000
Subject: [PATCH] Use translation on the signup/invite validation messages (and
 fix a typo)

---
 uffd/invite/models.py                        | 13 +++--
 uffd/invite/views.py                         |  2 +-
 uffd/signup/models.py                        | 23 ++++----
 uffd/signup/views.py                         |  2 +-
 uffd/translations/de/LC_MESSAGES/messages.po | 60 ++++++++++++++++----
 5 files changed, 71 insertions(+), 29 deletions(-)

diff --git a/uffd/invite/models.py b/uffd/invite/models.py
index d2e4bd4f..f3c97004 100644
--- a/uffd/invite/models.py
+++ b/uffd/invite/models.py
@@ -1,5 +1,6 @@
 import datetime
 
+from flask_babel import gettext as _
 from flask import current_app
 from sqlalchemy import Column, String, Integer, ForeignKey, DateTime, Boolean
 from sqlalchemy.orm import relationship
@@ -77,16 +78,16 @@ class InviteGrant(db.Model):
 
 	def apply(self):
 		if not self.invite.active:
-			return False, 'Invite link is invalid'
+			return False, _('Invite link is invalid')
 		if not self.invite.roles:
-			return False, 'Invite link does not grant any roles'
+			return False, _('Invite link does not grant any roles')
 		if set(self.invite.roles).issubset(self.user.roles):
-			return False, 'Invite link does not grant any new roles'
+			return False, _('Invite link does not grant any new roles')
 		for role in self.invite.roles:
 			self.user.roles.append(role)
 		self.user.update_groups()
 		self.invite.used = True
-		return True, 'Success'
+		return True, _('Success')
 
 class InviteSignup(Signup):
 	__tablename__ = 'invite_signup'
@@ -100,12 +101,12 @@ class InviteSignup(Signup):
 
 	def validate(self):
 		if not self.invite.active or not self.invite.allow_signup:
-			return False, 'Invite link is invalid'
+			return False, _('Invite link is invalid')
 		return super().validate()
 
 	def finish(self, password):
 		if not self.invite.active or not self.invite.allow_signup:
-			return None, 'Invite link is invalid'
+			return None, _('Invite link is invalid')
 		user, msg = super().finish(password)
 		if user is not None:
 			for role in self.invite.roles:
diff --git a/uffd/invite/views.py b/uffd/invite/views.py
index 4a1e7b4c..ef406294 100644
--- a/uffd/invite/views.py
+++ b/uffd/invite/views.py
@@ -192,6 +192,6 @@ def signup_submit(invite_id, token):
 	db.session.commit()
 	sent = sendmail(signup.mail, 'Confirm your mail address', 'signup/mail.txt', signup=signup)
 	if not sent:
-		return render_template('signup/start.html', error=_('Cound not send mail'))
+		return render_template('signup/start.html', error=_('Could not send mail'))
 	signup_ratelimit.log(request.form['mail'])
 	return render_template('signup/submitted.html', signup=signup)
diff --git a/uffd/signup/models.py b/uffd/signup/models.py
index ab9920ae..073d5eab 100644
--- a/uffd/signup/models.py
+++ b/uffd/signup/models.py
@@ -1,5 +1,6 @@
 import datetime
 
+from flask_babel import gettext as _
 from sqlalchemy import Column, Integer, String, DateTime, Text, ForeignKey
 from sqlalchemy.orm import relationship, backref
 from sqlalchemy.ext.hybrid import hybrid_property
@@ -73,18 +74,18 @@ class Signup(db.Model):
 		          is False and `errmsg` contains a string describing why. Otherwise
 		          `valid` is True.'''
 		if self.completed or self.expired:
-			return False, 'Invalid signup request'
+			return False, _('Invalid signup request')
 		if not User().set_loginname(self.loginname):
-			return False, 'Login name is invalid'
+			return False, _('Login name is invalid')
 		if not User().set_displayname(self.displayname):
-			return False, 'Display name is invalid'
+			return False, _('Display name is invalid')
 		if not User().set_mail(self.mail):
-			return False, 'Mail address is invalid'
+			return False, _('Mail address is invalid')
 		if not self.password:
-			return False, 'Invalid password'
+			return False, _('Invalid password')
 		if User.query.filter_by(loginname=self.loginname).all():
-			return False, 'A user with this login name already exists'
-		return True, 'Valid'
+			return False, _('A user with this login name already exists')
+		return True, _('Valid')
 
 	def finish(self, password):
 		'''Complete the signup procedure and return the new user
@@ -98,11 +99,11 @@ class Signup(db.Model):
 		          `errmsg` contains a string describing why. Otherwise `user` is a
 		          User object.'''
 		if self.completed or self.expired:
-			return None, 'Invalid signup request'
+			return None, _('Invalid signup request')
 		if not self.password.verify(password):
-			return None, 'Wrong password'
+			return None, _('Wrong password')
 		if User.query.filter_by(loginname=self.loginname).all():
-			return None, 'A user with this login name already exists'
+			return None, _('A user with this login name already exists')
 		user = User(loginname=self.loginname, displayname=self.displayname, mail=self.mail, password=self.password)
 		db.session.add(user)
 		user.update_groups() # pylint: disable=no-member
@@ -111,4 +112,4 @@ class Signup(db.Model):
 		self.displayname = None
 		self.mail = None
 		self.password = None
-		return user, 'Success'
+		return user, _('Success')
diff --git a/uffd/signup/views.py b/uffd/signup/views.py
index f0d858ec..a14d0ef0 100644
--- a/uffd/signup/views.py
+++ b/uffd/signup/views.py
@@ -69,7 +69,7 @@ def signup_submit():
 	db.session.commit()
 	sent = sendmail(signup.mail, 'Confirm your mail address', 'signup/mail.txt', signup=signup)
 	if not sent:
-		return render_template('signup/start.html', error=_('Cound not send mail'))
+		return render_template('signup/start.html', error=_('Could not send mail'))
 	signup_ratelimit.log(request.form['mail'])
 	return render_template('signup/submitted.html', signup=signup)
 
diff --git a/uffd/translations/de/LC_MESSAGES/messages.po b/uffd/translations/de/LC_MESSAGES/messages.po
index 1433cc6c..cedf033d 100644
--- a/uffd/translations/de/LC_MESSAGES/messages.po
+++ b/uffd/translations/de/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2022-02-18 04:41+0100\n"
+"POT-Creation-Date: 2022-03-20 13:07+0100\n"
 "PO-Revision-Date: 2021-05-25 21:18+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: de\n"
@@ -44,6 +44,22 @@ msgstr "eine Stunde"
 msgid "%(hours)d hours"
 msgstr "%(hours)d Stunden"
 
+#: uffd/invite/models.py:81 uffd/invite/models.py:104 uffd/invite/models.py:109
+msgid "Invite link is invalid"
+msgstr "Einladungslink ist ungültig"
+
+#: uffd/invite/models.py:83
+msgid "Invite link does not grant any roles"
+msgstr "Einladungslink weist keine Rollen zu"
+
+#: uffd/invite/models.py:85
+msgid "Invite link does not grant any new roles"
+msgstr "Einladungslink weist keine neuen Rollen zu"
+
+#: uffd/invite/models.py:90 uffd/signup/models.py:115
+msgid "Success"
+msgstr "Erfolgreich"
+
 #: uffd/invite/views.py:46
 msgid "Invites"
 msgstr "Einladungslinks"
@@ -92,7 +108,7 @@ msgid "Too many requests! Please wait %(delay)s."
 msgstr "Zu viele Anfragen! Bitte warte %(delay)s."
 
 #: uffd/invite/views.py:195 uffd/signup/views.py:72
-msgid "Cound not send mail"
+msgid "Could not send mail"
 msgstr "Mailversand fehlgeschlagen"
 
 #: uffd/invite/templates/invite/list.html:6
@@ -801,11 +817,11 @@ msgstr "Abmeldung bei allen Diensten ..."
 msgid "Skip this and continue"
 msgstr "Automatisches Abmelden überspringen"
 
-#: uffd/oauth2/templates/oauth2/logout.html:75
+#: uffd/oauth2/templates/oauth2/logout.html:72
 msgid "Done, redirecting ..."
 msgstr "Abgeschlossen, leite weiter ..."
 
-#: uffd/oauth2/templates/oauth2/logout.html:79
+#: uffd/oauth2/templates/oauth2/logout.html:76
 msgid "Log out failed on some services. Retry?"
 msgstr ""
 "Automatisches Abmelden bei einigen Diensten fehlgeschlagen. Nochmal "
@@ -969,7 +985,7 @@ msgstr "Wir haben dir eine E-Mail gesendet, bitte prüfe deine E-Mail-Adresse."
 msgid "Password changed"
 msgstr "Passwort geändert"
 
-#: uffd/selfservice/views.py:54
+#: uffd/selfservice/views.py:54 uffd/signup/models.py:85
 msgid "Invalid password"
 msgstr "Passwort ungültig"
 
@@ -1195,7 +1211,7 @@ msgstr "Passwort zurücksetzen"
 msgid "Set password"
 msgstr "Passwort setzen"
 
-#: uffd/service/views.py:22
+#: uffd/service/views.py:34
 msgid "Services"
 msgstr "Dienste"
 
@@ -1419,6 +1435,34 @@ msgstr "Registrieren"
 msgid "Forgot Password?"
 msgstr "Passwort vergessen?"
 
+#: uffd/signup/models.py:77 uffd/signup/models.py:102
+msgid "Invalid signup request"
+msgstr "Ungültiger Account-Registrierungs-Link"
+
+#: uffd/signup/models.py:79
+msgid "Login name is invalid"
+msgstr "Anmeldename ist ungültig"
+
+#: uffd/signup/models.py:81
+msgid "Display name is invalid"
+msgstr "Anzeigename ist ungültig"
+
+#: uffd/signup/models.py:83
+msgid "Mail address is invalid"
+msgstr "E-Mail-Adresse nicht valide"
+
+#: uffd/signup/models.py:87 uffd/signup/models.py:106
+msgid "A user with this login name already exists"
+msgstr "Ein Account mit diesem Anmeldenamen existiert bereits"
+
+#: uffd/signup/models.py:88
+msgid "Valid"
+msgstr "Gültig"
+
+#: uffd/signup/models.py:104 uffd/signup/views.py:100
+msgid "Wrong password"
+msgstr "Falsches Passwort"
+
 #: uffd/signup/views.py:23
 msgid "Signup not enabled"
 msgstr "Account-Registrierung ist deaktiviert"
@@ -1432,10 +1476,6 @@ msgstr "Ungültiger Account-Registrierungs-Link"
 msgid "Too many failed attempts! Please wait %(delay)s."
 msgstr "Zu viele fehlgeschlagene Versuche! Bitte warte mindestens %(delay)s."
 
-#: uffd/signup/views.py:100
-msgid "Wrong password"
-msgstr "Falsches Passwort"
-
 #: uffd/signup/views.py:106
 msgid "Your account was successfully created"
 msgstr "Account erfolgreich erstellt"
-- 
GitLab