From df6ffc7d86b7334b2a3c309318cc8020cd8e781a Mon Sep 17 00:00:00 2001 From: zorun Date: Thu, 21 May 2020 21:13:33 +0200 Subject: [PATCH 1/3] Improve error handling when sending emails (#595) In one case, we were not catching a family of possible exceptions (socket.error), and in the two other cases there was no error handling at all. Sending emails can easily fail if no email server is configured, so it is really necessary to handle these errors instead of crashing with a HTTP 500 error. Refactor email sending code and add proper error handling. Show alert messages that tell the user if an email was sent or if there was an error. When sending a password reminder email or inviting people by email, we don't proceed to the next step in case of error, because sending emails is the whole point of these actions. --- ihatemoney/messages.pot | 19 ++- ihatemoney/tests/tests.py | 129 +++++++++++++++--- .../translations/cs/LC_MESSAGES/messages.po | 26 +++- .../translations/de/LC_MESSAGES/messages.po | 26 +++- .../translations/el/LC_MESSAGES/messages.po | 26 +++- .../es_419/LC_MESSAGES/messages.po | 26 +++- .../translations/fr/LC_MESSAGES/messages.po | 36 +++-- .../translations/id/LC_MESSAGES/messages.po | 26 +++- .../translations/it/LC_MESSAGES/messages.po | 44 ++++-- .../nb_NO/LC_MESSAGES/messages.po | 26 +++- .../translations/nl/LC_MESSAGES/messages.po | 26 +++- .../translations/pl/LC_MESSAGES/messages.po | 39 ++++-- .../translations/ru/LC_MESSAGES/messages.po | 26 +++- .../translations/tr/LC_MESSAGES/messages.po | 26 +++- .../translations/uk/LC_MESSAGES/messages.po | 26 +++- .../zh_HANS-CN/LC_MESSAGES/messages.po | 40 ++++-- ihatemoney/utils.py | 18 +++ ihatemoney/web.py | 68 ++++++--- 18 files changed, 549 insertions(+), 104 deletions(-) diff --git a/ihatemoney/messages.pot b/ihatemoney/messages.pot index dcf16b30..9569d055 100644 --- a/ihatemoney/messages.pot +++ b/ihatemoney/messages.pot @@ -157,13 +157,24 @@ msgstr "" msgid "You have just created '%(project)s' to share your expenses" msgstr "" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "" @@ -192,6 +203,12 @@ msgstr "" msgid "Your invitations have been sent" msgstr "" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" diff --git a/ihatemoney/tests/tests.py b/ihatemoney/tests/tests.py index 4cdf3164..dc6c4558 100644 --- a/ihatemoney/tests/tests.py +++ b/ihatemoney/tests/tests.py @@ -5,6 +5,8 @@ import io import json import os import re +import smtplib +import socket from time import sleep import unittest from unittest.mock import MagicMock, patch @@ -51,10 +53,10 @@ class BaseTestCase(TestCase): follow_redirects=True, ) - def post_project(self, name): + def post_project(self, name, follow_redirects=True): """Create a fake project""" # create the project - self.client.post( + return self.client.post( "/create", data={ "name": name, @@ -63,6 +65,7 @@ class BaseTestCase(TestCase): "contact_email": f"{name}@notmyidea.org", "default_currency": "USD", }, + follow_redirects=follow_redirects, ) def create_project(self, name): @@ -141,10 +144,15 @@ class BudgetTestCase(IhatemoneyTestCase): self.login("raclette") self.post_project("raclette") - self.client.post( - "/raclette/invite", data={"emails": "zorglub@notmyidea.org"} + resp = self.client.post( + "/raclette/invite", + data={"emails": "zorglub@notmyidea.org"}, + follow_redirects=True, ) + # success notification + self.assertIn("Your invitations have been sent", resp.data.decode("utf-8")) + self.assertEqual(len(outbox), 2) self.assertEqual(outbox[0].recipients, ["raclette@notmyidea.org"]) self.assertEqual(outbox[1].recipients, ["zorglub@notmyidea.org"]) @@ -225,7 +233,15 @@ class BudgetTestCase(IhatemoneyTestCase): self.create_project("raclette") # Get password resetting link from mail with self.app.mail.record_messages() as outbox: - self.client.post("/password-reminder", data={"id": "raclette"}) + resp = self.client.post( + "/password-reminder", data={"id": "raclette"}, follow_redirects=True + ) + # Check that we are redirected to the right page + self.assertIn( + "A link to reset your password has been sent to you", + resp.data.decode("utf-8"), + ) + # Check that an email was sent self.assertEqual(len(outbox), 1) url_start = outbox[0].body.find("You can reset it here: ") + 23 url_end = outbox[0].body.find(".\n", url_start) @@ -250,17 +266,26 @@ class BudgetTestCase(IhatemoneyTestCase): def test_project_creation(self): with self.app.test_client() as c: - # add a valid project - c.post( - "/create", - data={ - "name": "The fabulous raclette party", - "id": "raclette", - "password": "party", - "contact_email": "raclette@notmyidea.org", - "default_currency": "USD", - }, - ) + with self.app.mail.record_messages() as outbox: + # add a valid project + resp = c.post( + "/create", + data={ + "name": "The fabulous raclette party", + "id": "raclette", + "password": "party", + "contact_email": "raclette@notmyidea.org", + "default_currency": "USD", + }, + follow_redirects=True, + ) + # an email is sent to the owner with a reminder of the password + self.assertEqual(len(outbox), 1) + self.assertEqual(outbox[0].recipients, ["raclette@notmyidea.org"]) + self.assertIn( + "A reminder email has just been sent to you", + resp.data.decode("utf-8"), + ) # session is updated self.assertTrue(session["raclette"]) @@ -2265,6 +2290,78 @@ class ModelsTestCase(IhatemoneyTestCase): self.assertEqual(bill.pay_each(), pay_each_expected) +class EmailFailureTestCase(IhatemoneyTestCase): + def test_creation_email_failure_smtp(self): + self.login("raclette") + with patch.object( + self.app.mail, "send", MagicMock(side_effect=smtplib.SMTPException) + ): + resp = self.post_project("raclette") + # Check that an error message is displayed + self.assertIn( + "We tried to send you an reminder email, but there was an error", + resp.data.decode("utf-8"), + ) + # Check that we were redirected to the home page anyway + self.assertIn( + 'You probably want to %s<\/em>' % string diff --git a/ihatemoney/translations/cs/LC_MESSAGES/messages.po b/ihatemoney/translations/cs/LC_MESSAGES/messages.po index bb137ee3..96703ac6 100644 --- a/ihatemoney/translations/cs/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/cs/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language: cs\n" @@ -12,7 +12,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -173,13 +173,24 @@ msgstr "" msgid "You have just created '%(project)s' to share your expenses" msgstr "" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "" @@ -208,6 +219,12 @@ msgstr "" msgid "Your invitations have been sent" msgstr "" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" @@ -757,3 +774,6 @@ msgstr "" #~ msgid "each" #~ msgstr "" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/de/LC_MESSAGES/messages.po b/ihatemoney/translations/de/LC_MESSAGES/messages.po index 502793b0..74eed894 100644 --- a/ihatemoney/translations/de/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/de/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2020-02-12 10:50+0000\n" "Last-Translator: flolilo \n" "Language: de\n" @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -182,13 +182,24 @@ msgstr "" "Du hast gerade das Projekt '%(project)s' erstellt, um deine Ausgaben zu " "teilen" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "Kein Token zur Verfügung gestellt" @@ -217,6 +228,12 @@ msgstr "Du wurdest eingeladen, deine Ausgaben für %(project)s zu teilen" msgid "Your invitations have been sent" msgstr "Deine Einladungen wurden versendet" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" @@ -785,3 +802,6 @@ msgstr "" #~ msgid "each" #~ msgstr "alles" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/el/LC_MESSAGES/messages.po b/ihatemoney/translations/el/LC_MESSAGES/messages.po index 23fc2ee5..df8c2ae3 100644 --- a/ihatemoney/translations/el/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/el/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language: el\n" @@ -12,7 +12,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -173,13 +173,24 @@ msgstr "" msgid "You have just created '%(project)s' to share your expenses" msgstr "" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "" @@ -208,6 +219,12 @@ msgstr "" msgid "Your invitations have been sent" msgstr "" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" @@ -757,3 +774,6 @@ msgstr "" #~ msgid "each" #~ msgstr "" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/es_419/LC_MESSAGES/messages.po b/ihatemoney/translations/es_419/LC_MESSAGES/messages.po index b8d6c30c..b446ff8b 100644 --- a/ihatemoney/translations/es_419/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/es_419/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2020-05-03 15:20+0000\n" "Last-Translator: Fabian Rodriguez \n" "Language: es_419\n" @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -182,13 +182,24 @@ msgstr "Este código privado no es el correcto" msgid "You have just created '%(project)s' to share your expenses" msgstr "Acabas de crear '%(project)s' para compartir tus gastos" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "No se proporciono ningún token" @@ -217,6 +228,12 @@ msgstr "Usted ha sido invitado a compartir sus gastos para %(project)s" msgid "Your invitations have been sent" msgstr "Sus invitaciones han sido enviadas" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "Se añadieron %(member)s" @@ -806,3 +823,6 @@ msgstr "Período" #~ msgid "each" #~ msgstr "Cada" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/fr/LC_MESSAGES/messages.po b/ihatemoney/translations/fr/LC_MESSAGES/messages.po index 79faf70c..7ac363da 100644 --- a/ihatemoney/translations/fr/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/fr/LC_MESSAGES/messages.po @@ -7,18 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2020-05-15 20:41+0000\n" "Last-Translator: Glandos \n" -"Language-Team: French \n" "Language: fr\n" +"Language-Team: French \n" +"Plural-Forms: nplurals=2; plural=n > 1\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.1-dev\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -185,13 +184,24 @@ msgstr "Le code que vous avez entré n’est pas correct" msgid "You have just created '%(project)s' to share your expenses" msgstr "Vous venez de créer « %(project)s » pour partager vos dépenses" -msgid "Error while sending reminder email" -msgstr "Erreur lors de l’envoi du courriel de rappel" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." +msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "L’identifiant de ce projet est %(project)s" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "Aucun token n’a été fourni" @@ -220,6 +230,12 @@ msgstr "Vous avez été invité à partager vos dépenses pour %(project)s" msgid "Your invitations have been sent" msgstr "Vos invitations ont bien été envoyées" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "%(member)s a été ajouté" @@ -1019,3 +1035,7 @@ msgstr "Période" #~ msgid "each" #~ msgstr "chacun" + +#~ msgid "Error while sending reminder email" +#~ msgstr "Erreur lors de l’envoi du courriel de rappel" + diff --git a/ihatemoney/translations/id/LC_MESSAGES/messages.po b/ihatemoney/translations/id/LC_MESSAGES/messages.po index 543d9821..cff90b3d 100644 --- a/ihatemoney/translations/id/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/id/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2019-11-16 10:04+0000\n" "Last-Translator: Muhammad Fauzi \n" "Language: id\n" @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -178,13 +178,24 @@ msgstr "Kode pribadi ini tidak benar" msgid "You have just created '%(project)s' to share your expenses" msgstr "Anda baru saja membuat %(project)s untuk membagikan harga Anda" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "Belum ada token diberikan" @@ -213,6 +224,12 @@ msgstr "Anda telah diundang untuk membagikan harga Anda untuk %(project)s" msgid "Your invitations have been sent" msgstr "Undangan Anda telah dikirim" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" @@ -785,3 +802,6 @@ msgstr "" #~ msgid "each" #~ msgstr "setiap" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/it/LC_MESSAGES/messages.po b/ihatemoney/translations/it/LC_MESSAGES/messages.po index 270b8a2f..59661204 100644 --- a/ihatemoney/translations/it/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/it/LC_MESSAGES/messages.po @@ -1,19 +1,19 @@ + msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2020-05-18 13:02+0000\n" "Last-Translator: Anonymous \n" -"Language-Team: Italian \n" "Language: it\n" +"Language-Team: Italian \n" +"Plural-Forms: nplurals=2; plural=n != 1\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -167,12 +167,13 @@ msgstr "Troppi tentativi di accesso non riusciti. Riprova più tardi." #, python-format msgid "This admin password is not the right one. Only %(num)d attempts left." msgstr "" -"Questa password di amministrazione non è corretta. Solo %(num)d tentativi " -"rimasti." +"Questa password di amministrazione non è corretta. Solo %(num)d tentativi" +" rimasti." msgid "You either provided a bad token or no project identifier." msgstr "" -"Hai fornito un token invalido o l'identificatore del progetto non è valido." +"Hai fornito un token invalido o l'identificatore del progetto non è " +"valido." msgid "This private code is not the right one" msgstr "Questo codice privato non è quello corretto" @@ -181,13 +182,24 @@ msgstr "Questo codice privato non è quello corretto" msgid "You have just created '%(project)s' to share your expenses" msgstr "Hai appena creato '%(project)s' per condividere le tue spese" -msgid "Error while sending reminder email" -msgstr "Errore durante l'invio dell'email di promemoria" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." +msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "L'identificatore del progetto è %(project)s" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "Nessun token fornito" @@ -216,6 +228,12 @@ msgstr "Sei stato invitato a condividere le tue spese per %(project)s" msgid "Your invitations have been sent" msgstr "I tuoi inviti sono stati spediti" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "%(member)s è stato aggiunto" @@ -764,3 +782,7 @@ msgstr "" #~ msgid "each" #~ msgstr "" + +#~ msgid "Error while sending reminder email" +#~ msgstr "Errore durante l'invio dell'email di promemoria" + diff --git a/ihatemoney/translations/nb_NO/LC_MESSAGES/messages.po b/ihatemoney/translations/nb_NO/LC_MESSAGES/messages.po index 899bc0e4..d8223b30 100644 --- a/ihatemoney/translations/nb_NO/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/nb_NO/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2019-11-12 09:04+0000\n" "Last-Translator: Allan Nordhøy \n" "Language: nb_NO\n" @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -182,13 +182,24 @@ msgstr "Denne private koden er ikke rett" msgid "You have just created '%(project)s' to share your expenses" msgstr "Du har akkurat opprettet \"%(project)s\" for å dele dine utgifter" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "Inget symbol angitt" @@ -221,6 +232,12 @@ msgstr "" msgid "Your invitations have been sent" msgstr "Invitasjonene dine har blitt sendt" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" @@ -916,3 +933,6 @@ msgstr "" #~ msgid "each" #~ msgstr "hver" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/nl/LC_MESSAGES/messages.po b/ihatemoney/translations/nl/LC_MESSAGES/messages.po index d80861b7..c0917c95 100644 --- a/ihatemoney/translations/nl/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/nl/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2019-10-07 22:56+0000\n" "Last-Translator: Heimen Stoffels \n" "Language: nl\n" @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -176,13 +176,24 @@ msgstr "" "Je hebt zojuist het project '%(project)s' aangemaakt om je uitgaven te " "verdelen" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "Geen toegangssleutel opgegeven" @@ -211,6 +222,12 @@ msgstr "Je bent uitgenodigd om je uitgaven te delen met %(project)s" msgid "Your invitations have been sent" msgstr "Je uitnodigingen zijn verstuurd" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" @@ -774,3 +791,6 @@ msgstr "" #~ msgid "each" #~ msgstr "per persoon" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/pl/LC_MESSAGES/messages.po b/ihatemoney/translations/pl/LC_MESSAGES/messages.po index f2709cff..aa2d19b2 100644 --- a/ihatemoney/translations/pl/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/pl/LC_MESSAGES/messages.po @@ -1,20 +1,20 @@ + msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2020-05-13 15:41+0000\n" "Last-Translator: Szylu \n" -"Language-Team: Polish \n" "Language: pl\n" +"Language-Team: Polish \n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && " +"(n%100<10 || n%100>=20) ? 1 : 2\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.1-dev\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -179,13 +179,24 @@ msgstr "Ten prywatny kod jest niewłaściwy" msgid "You have just created '%(project)s' to share your expenses" msgstr "Właśnie utworzyłeś „%(project)s”, aby podzielić się wydatkami" -msgid "Error while sending reminder email" -msgstr "Błąd podczas wysyłania wiadomości e-mail z przypomnieniem" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." +msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "Identyfikator projektu to %(project)s" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "Nie podano tokena" @@ -214,6 +225,12 @@ msgstr "Zostałeś zaproszony do podzielenia się swoimi wydatkami w %(project)s msgid "Your invitations have been sent" msgstr "Twoje zaproszenia zostały wysłane" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "%(member)s został dodany" @@ -799,3 +816,7 @@ msgstr "Okres" #~ msgid "each" #~ msgstr "każdy" + +#~ msgid "Error while sending reminder email" +#~ msgstr "Błąd podczas wysyłania wiadomości e-mail z przypomnieniem" + diff --git a/ihatemoney/translations/ru/LC_MESSAGES/messages.po b/ihatemoney/translations/ru/LC_MESSAGES/messages.po index a1cd5907..7daaa261 100644 --- a/ihatemoney/translations/ru/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/ru/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2020-04-28 07:11+0000\n" "Last-Translator: Vsevolod \n" "Language: ru\n" @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -181,13 +181,24 @@ msgstr "Этот приватный код не подходит" msgid "You have just created '%(project)s' to share your expenses" msgstr "Вы только что создали '%(project)s' , чтобы разделить расходы" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "Не предоставлен токен" @@ -216,6 +227,12 @@ msgstr "Вас пригласили разделить расходы в про msgid "Your invitations have been sent" msgstr "Ваш код приглашения был отправлен" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "%(member)s был добавлен" @@ -795,3 +812,6 @@ msgstr "Период" #~ msgid "each" #~ msgstr "каждый" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/tr/LC_MESSAGES/messages.po b/ihatemoney/translations/tr/LC_MESSAGES/messages.po index 6343b8a1..04fbbf75 100644 --- a/ihatemoney/translations/tr/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/tr/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2019-08-07 13:24+0000\n" "Last-Translator: Mesut Akcan \n" "Language: tr\n" @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -178,13 +178,24 @@ msgstr "" msgid "You have just created '%(project)s' to share your expenses" msgstr "" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "" @@ -213,6 +224,12 @@ msgstr "" msgid "Your invitations have been sent" msgstr "" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" @@ -762,3 +779,6 @@ msgstr "" #~ msgid "each" #~ msgstr "" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/uk/LC_MESSAGES/messages.po b/ihatemoney/translations/uk/LC_MESSAGES/messages.po index 737add3a..63275344 100644 --- a/ihatemoney/translations/uk/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/uk/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2019-12-08 16:26+0000\n" "Last-Translator: Tymofij Lytvynenko \n" "Language: uk\n" @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -175,13 +175,24 @@ msgstr "" msgid "You have just created '%(project)s' to share your expenses" msgstr "" -msgid "Error while sending reminder email" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "" @@ -210,6 +221,12 @@ msgstr "" msgid "Your invitations have been sent" msgstr "" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "" @@ -759,3 +776,6 @@ msgstr "" #~ msgid "each" #~ msgstr "" +#~ msgid "Error while sending reminder email" +#~ msgstr "" + diff --git a/ihatemoney/translations/zh_HANS-CN/LC_MESSAGES/messages.po b/ihatemoney/translations/zh_HANS-CN/LC_MESSAGES/messages.po index 9409c512..d78604c0 100644 --- a/ihatemoney/translations/zh_HANS-CN/LC_MESSAGES/messages.po +++ b/ihatemoney/translations/zh_HANS-CN/LC_MESSAGES/messages.po @@ -1,19 +1,20 @@ + msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-09 21:41+0200\n" +"POT-Creation-Date: 2020-05-18 15:11+0200\n" "PO-Revision-Date: 2020-05-13 15:41+0000\n" "Last-Translator: Muge Niu \n" -"Language-Team: Chinese (Simplified) \n" -"Language: zh_HANS-CN\n" +"Language: zh_HANS_CN\n" +"Language-Team: Chinese (Simplified) " +"" +"\n" +"Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.1-dev\n" -"Generated-By: Babel 2.7.0\n" +"Generated-By: Babel 2.8.0\n" msgid "" "Not a valid amount or expression. Only numbers and + - * / operators are " @@ -174,13 +175,24 @@ msgstr "专用码不正确" msgid "You have just created '%(project)s' to share your expenses" msgstr "你新建了一个‘%(project)s'来分担你的花费" -msgid "Error while sending reminder email" -msgstr "发送提醒邮件时出错" +msgid "A reminder email has just been sent to you" +msgstr "" + +msgid "" +"We tried to send you an reminder email, but there was an error. You can " +"still use the project normally." +msgstr "" #, python-format msgid "The project identifier is %(project)s" msgstr "项目的标识符是%(project)s" +msgid "" +"Sorry, there was an error while sending you an email with password reset " +"instructions. Please check the email configuration of the server or " +"contact the administrator." +msgstr "" + msgid "No token provided" msgstr "没有符号" @@ -209,6 +221,12 @@ msgstr "你被邀请进入 %(project)s来分担你的花费" msgid "Your invitations have been sent" msgstr "你的申请已发出" +msgid "" +"Sorry, there was an error while trying to send the invitation emails. " +"Please check the email configuration of the server or contact the " +"administrator." +msgstr "" + #, python-format msgid "%(member)s has been added" msgstr "已添加%(member)s" @@ -771,3 +789,7 @@ msgstr "期间" #~ msgid "each" #~ msgstr "每一个·" + +#~ msgid "Error while sending reminder email" +#~ msgstr "发送提醒邮件时出错" + diff --git a/ihatemoney/utils.py b/ihatemoney/utils.py index 175b7621..adced8f7 100644 --- a/ihatemoney/utils.py +++ b/ihatemoney/utils.py @@ -7,6 +7,8 @@ from json import JSONEncoder, dumps import operator import os import re +import smtplib +import socket from babel import Locale from babel.numbers import get_currency_name, get_currency_symbol @@ -28,6 +30,22 @@ def slugify(value): return re.sub(r"[-\s]+", "-", value) +def send_email(mail_message): + """Send an email using Flask-Mail, with proper error handling. + + Return True if everything went well, and False if there was an error. + """ + # Since Python 3.4, SMTPException and socket.error are actually + # identical, but this was not the case before. Also, it is more clear + # to check for both. + try: + current_app.mail.send(mail_message) + except (smtplib.SMTPException, socket.error): + return False + # Email was sent successfully + return True + + class Redirect303(HTTPException, RoutingException): """Raise if the map requests a redirect. This is for example the case if diff --git a/ihatemoney/web.py b/ihatemoney/web.py index ae124ac5..65757201 100644 --- a/ihatemoney/web.py +++ b/ihatemoney/web.py @@ -12,7 +12,6 @@ from datetime import datetime from functools import wraps import json import os -from smtplib import SMTPRecipientsRefused from dateutil.parser import parse from dateutil.relativedelta import relativedelta @@ -60,6 +59,7 @@ from ihatemoney.utils import ( list_of_dicts2json, render_localized_template, same_bill, + send_email, ) main = Blueprint("main", __name__) @@ -308,11 +308,21 @@ def create_project(): msg = Message( message_title, body=message_body, recipients=[project.contact_email] ) - try: - current_app.mail.send(msg) - except SMTPRecipientsRefused: - flash(_("Error while sending reminder email"), category="danger") - + success = send_email(msg) + if success: + flash( + _("A reminder email has just been sent to you"), category="success" + ) + else: + # Display the error as a simple "info" alert, because it's + # not critical and doesn't prevent using the project. + flash( + _( + "We tried to send you an reminder email, but there was an error. " + "You can still use the project normally." + ), + category="info", + ) # redirect the user to the next step (invite) flash(_("The project identifier is %(project)s", project=project.id)) return redirect(url_for(".list_bills", project_id=project.id)) @@ -328,17 +338,25 @@ def remind_password(): # get the project project = Project.query.get(form.id.data) # send a link to reset the password - current_app.mail.send( - Message( - "password recovery", - body=render_localized_template( - "password_reminder", project=project - ), - recipients=[project.contact_email], - ) + remind_message = Message( + "password recovery", + body=render_localized_template("password_reminder", project=project), + recipients=[project.contact_email], ) - return redirect(url_for(".password_reminder_sent")) - + success = send_email(remind_message) + if success: + return redirect(url_for(".password_reminder_sent")) + else: + flash( + _( + "Sorry, there was an error while sending you an email " + "with password reset instructions. " + "Please check the email configuration of the server " + "or contact the administrator." + ), + category="danger", + ) + # Fall-through: we stay on the same page and display the form again return render_template("password_reminder.html", form=form) @@ -585,10 +603,20 @@ def invite(): body=message_body, recipients=[email.strip() for email in form.emails.data.split(",")], ) - current_app.mail.send(msg) - flash(_("Your invitations have been sent")) - return redirect(url_for(".list_bills")) - + success = send_email(msg) + if success: + flash(_("Your invitations have been sent"), category="success") + return redirect(url_for(".list_bills")) + else: + flash( + _( + "Sorry, there was an error while trying to send the invitation emails. " + "Please check the email configuration of the server " + "or contact the administrator." + ), + category="danger", + ) + # Fall-through: we stay on the same page and display the form again return render_template("send_invites.html", form=form) From 23ed467d37a0b1949c9cd4ef5616058d5448e030 Mon Sep 17 00:00:00 2001 From: Glandos Date: Thu, 21 May 2020 21:31:24 +0200 Subject: [PATCH 2/3] Replace currencyformat_nc with currency filter (#625) --- ihatemoney/run.py | 8 ++++++-- ihatemoney/templates/list_bills.html | 2 +- ihatemoney/templates/settle_bills.html | 2 +- ihatemoney/templates/sidebar_table_layout.html | 2 +- ihatemoney/templates/statistics.html | 6 +++--- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/ihatemoney/run.py b/ihatemoney/run.py index e084e5bc..15e295b8 100644 --- a/ihatemoney/run.py +++ b/ihatemoney/run.py @@ -6,6 +6,7 @@ from flask import Flask, g, render_template, request, session from flask_babel import Babel, format_currency from flask_mail import Mail from flask_migrate import Migrate, stamp, upgrade +from jinja2 import contextfilter from werkzeug.middleware.proxy_fix import ProxyFix from ihatemoney import default_settings @@ -155,7 +156,10 @@ def create_app( # Undocumented currencyformat filter from flask_babel is forwarding to Babel format_currency # We overwrite it to remove the currency sign ¤ when there is no currency - def currencyformat_nc(number, currency, *args, **kwargs): + @contextfilter + def currency(context, number, currency=None, *args, **kwargs): + if currency is None: + currency = context.get("g").project.default_currency """ Same as flask_babel.Babel.currencyformat, but without the "no currency ¤" sign when there is no currency. @@ -167,7 +171,7 @@ def create_app( **kwargs ).strip() - app.jinja_env.filters["currencyformat_nc"] = currencyformat_nc + app.jinja_env.filters["currency"] = currency @babel.localeselector def get_locale(): diff --git a/ihatemoney/templates/list_bills.html b/ihatemoney/templates/list_bills.html index 1f4235bb..487e70eb 100644 --- a/ihatemoney/templates/list_bills.html +++ b/ihatemoney/templates/list_bills.html @@ -1,7 +1,7 @@ {% extends "sidebar_table_layout.html" %} {%- macro bill_amount(bill, currency=bill.original_currency, amount=bill.amount) %} - {{ amount|currencyformat_nc(currency) }} ({{ _("%(amount)s each", amount=bill.pay_each_default(amount)|currencyformat_nc(currency)) }}) + {{ amount|currency(currency) }} ({{ _("%(amount)s each", amount=bill.pay_each_default(amount)|currency(currency)) }}) {% endmacro -%} {% block title %} - {{ g.project.name }}{% endblock %} diff --git a/ihatemoney/templates/settle_bills.html b/ihatemoney/templates/settle_bills.html index a9b0dbc2..601156c6 100644 --- a/ihatemoney/templates/settle_bills.html +++ b/ihatemoney/templates/settle_bills.html @@ -15,7 +15,7 @@ {{ bill.ower }} {{ bill.receiver }} - {{ bill.amount|currencyformat_nc(g.project.default_currency) }} + {{ bill.amount|currency }} {% endfor %} diff --git a/ihatemoney/templates/sidebar_table_layout.html b/ihatemoney/templates/sidebar_table_layout.html index d616e684..b25a3d68 100644 --- a/ihatemoney/templates/sidebar_table_layout.html +++ b/ihatemoney/templates/sidebar_table_layout.html @@ -37,7 +37,7 @@ {%- endif %} {%- endif %} - {% if balance[member.id] | round(2) > 0 %}+{% endif %}{{ balance[member.id]|currencyformat_nc(g.project.default_currency) }} + {% if balance[member.id] | round(2) > 0 %}+{% endif %}{{ balance[member.id]|currency }} {%- endfor %} diff --git a/ihatemoney/templates/statistics.html b/ihatemoney/templates/statistics.html index 3b0a9dd5..9e7a10de 100644 --- a/ihatemoney/templates/statistics.html +++ b/ihatemoney/templates/statistics.html @@ -15,8 +15,8 @@ {% for stat in members_stats|sort(attribute='member.name') %} {{ stat.member.name }} - {{ stat.paid|currencyformat_nc(g.project.default_currency) }} - {{ stat.spent|currencyformat_nc(g.project.default_currency) }} + {{ stat.paid|currency }} + {{ stat.spent|currency }} {% endfor %} @@ -28,7 +28,7 @@ {% for month in months %} {{ _(month.strftime("%B")) }} {{ month.year }} - {{ monthly_stats[month.year][month.month]|currencyformat_nc(g.project.default_currency) }} + {{ monthly_stats[month.year][month.month]|currency }} {% endfor %} From 638fc5277cf93b16766ebf56b7e96a853bd10d78 Mon Sep 17 00:00:00 2001 From: Rajat Singh Date: Sun, 24 May 2020 01:08:11 -0700 Subject: [PATCH 3/3] Fix: Change tool-tip message for access code (#623) Fix #610 --- ihatemoney/templates/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ihatemoney/templates/home.html b/ihatemoney/templates/home.html index 4af6a80a..c13c4244 100644 --- a/ihatemoney/templates/home.html +++ b/ihatemoney/templates/home.html @@ -91,7 +91,7 @@ {% endblock %} {% block js %} $('#creation-form #password').tooltip({ - title: '{{ _("This access code will be sent to your friends. It is stored as-is by the server, so don\\'t reuse a personal password!")}}', + title: '{{ _("Don't reuse a personal password. Make an access code and send it to your friends")}}', trigger: 'focus', placement: 'right' });