diff --git a/CHANGELOG.md b/CHANGELOG.md
index 04f26005..7d0ad5c1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ and this project adheres to
- ♻️(frontend) More multi theme friendly #325
- ♻️ Bootstrap frontend #257
+- ♻️ Add username in email #314
## Fixed
diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py
index e3a0003d..23cb87aa 100644
--- a/src/backend/core/api/viewsets.py
+++ b/src/backend/core/api/viewsets.py
@@ -576,8 +576,12 @@ class DocumentAccessViewSet(
"""Add a new access to the document and send an email to the new added user."""
access = serializer.save()
language = self.request.headers.get("Content-Language", "en-us")
+
access.document.email_invitation(
- language, access.user.email, access.role, self.request.user.email
+ language,
+ access.user.email,
+ access.role,
+ self.request.user,
)
@@ -778,6 +782,7 @@ class InvitationViewset(
invitation = serializer.save()
language = self.request.headers.get("Content-Language", "en-us")
+
invitation.document.email_invitation(
- language, invitation.email, invitation.role, self.request.user.email
+ language, invitation.email, invitation.role, self.request.user
)
diff --git a/src/backend/core/models.py b/src/backend/core/models.py
index bea27799..52c401c1 100644
--- a/src/backend/core/models.py
+++ b/src/backend/core/models.py
@@ -520,15 +520,18 @@ class Document(BaseModel):
"versions_retrieve": can_get_versions,
}
- def email_invitation(self, language, email, role, username_sender):
+ def email_invitation(self, language, email, role, sender):
"""Send email invitation."""
+ sender_name = sender.full_name or sender.email
domain = Site.objects.get_current().domain
try:
with override(language):
- title = _("%(username)s shared a document with you: %(document)s") % {
- "username": username_sender,
+ title = _(
+ "%(sender_name)s shared a document with you: %(document)s"
+ ) % {
+ "sender_name": sender_name,
"document": self.title,
}
template_vars = {
@@ -536,7 +539,10 @@ class Document(BaseModel):
"domain": domain,
"document": self,
"link": f"{domain}/docs/{self.id}/",
- "username": username_sender,
+ "sender_name": sender_name,
+ "sender_name_email": f"{sender.full_name} ({sender.email})"
+ if sender.full_name
+ else sender.email,
"role": RoleChoices(role).label.lower(),
}
msg_html = render_to_string("mail/html/invitation.html", template_vars)
diff --git a/src/backend/core/tests/documents/test_api_document_accesses_create.py b/src/backend/core/tests/documents/test_api_document_accesses_create.py
index f19ee1b3..9c453073 100644
--- a/src/backend/core/tests/documents/test_api_document_accesses_create.py
+++ b/src/backend/core/tests/documents/test_api_document_accesses_create.py
@@ -171,7 +171,10 @@ def test_api_document_accesses_create_authenticated_administrator(via, mock_user
email = mail.outbox[0]
assert email.to == [other_user["email"]]
email_content = " ".join(email.body.split())
- assert f"{user.email} shared a document with you: {document.title}" in email_content
+ assert (
+ f"{user.full_name} shared a document with you: {document.title}"
+ in email_content
+ )
assert "docs/" + str(document.id) + "/" in email_content
@@ -225,5 +228,8 @@ def test_api_document_accesses_create_authenticated_owner(via, mock_user_teams):
email = mail.outbox[0]
assert email.to == [other_user["email"]]
email_content = " ".join(email.body.split())
- assert f"{user.email} shared a document with you: {document.title}" in email_content
+ assert (
+ f"{user.full_name} shared a document with you: {document.title}"
+ in email_content
+ )
assert "docs/" + str(document.id) + "/" in email_content
diff --git a/src/backend/core/tests/documents/test_api_document_invitations.py b/src/backend/core/tests/documents/test_api_document_invitations.py
index 1dd6870c..c9d0ecd6 100644
--- a/src/backend/core/tests/documents/test_api_document_invitations.py
+++ b/src/backend/core/tests/documents/test_api_document_invitations.py
@@ -119,7 +119,7 @@ def test_api_document_invitations__create__privileged_members(
assert email.to == ["guest@example.com"]
email_content = " ".join(email.body.split())
assert (
- f"{user.email} shared a document with you: {document.title}"
+ f"{user.full_name} shared a document with you: {document.title}"
in email_content
)
else:
@@ -162,7 +162,7 @@ def test_api_document_invitations__create__email_from_content_language():
email_content = " ".join(email.body.split())
assert (
- f"{user.email} a partagé un document avec vous: {document.title}"
+ f"{user.full_name} a partagé un document avec vous: {document.title}"
in email_content
)
@@ -201,8 +201,52 @@ def test_api_document_invitations__create__email_from_content_language_not_suppo
assert email.to == ["guest@example.com"]
+ email_content = " ".join(email.body.split())
+ assert (
+ f"{user.full_name} shared a document with you: {document.title}"
+ in email_content
+ )
+
+
+def test_api_document_invitations__create__email__full_name_empty():
+ """
+ If the full name of the user is empty, it will display the email address.
+ """
+ user = factories.UserFactory(full_name="")
+ document = factories.DocumentFactory()
+ factories.UserDocumentAccessFactory(document=document, user=user, role="owner")
+
+ invitation_values = {
+ "email": "guest@example.com",
+ "role": "reader",
+ }
+
+ assert len(mail.outbox) == 0
+
+ client = APIClient()
+ client.force_login(user)
+ response = client.post(
+ f"/api/v1.0/documents/{document.id}/invitations/",
+ invitation_values,
+ format="json",
+ headers={"Content-Language": "not-supported"},
+ )
+
+ assert response.status_code == status.HTTP_201_CREATED
+ assert response.json()["email"] == "guest@example.com"
+ assert models.Invitation.objects.count() == 1
+ assert len(mail.outbox) == 1
+
+ email = mail.outbox[0]
+
+ assert email.to == ["guest@example.com"]
+
email_content = " ".join(email.body.split())
assert f"{user.email} shared a document with you: {document.title}" in email_content
+ assert (
+ f'{user.email} invited you with the role "reader" on the '
+ f"following document : {document.title}" in email_content
+ )
def test_api_document_invitations__create__issuer_and_document_override():
diff --git a/src/backend/core/tests/test_models_documents.py b/src/backend/core/tests/test_models_documents.py
index ed76321f..970bf2f2 100644
--- a/src/backend/core/tests/test_models_documents.py
+++ b/src/backend/core/tests/test_models_documents.py
@@ -363,8 +363,9 @@ def test_models_documents__email_invitation__success():
# pylint: disable-next=no-member
assert len(mail.outbox) == 0
+ sender = factories.UserFactory(full_name="Test Sender", email="sender@example.com")
document.email_invitation(
- "en", "guest@example.com", models.RoleChoices.EDITOR, "sender@example.com"
+ "en", "guest@example.com", models.RoleChoices.EDITOR, sender
)
# pylint: disable-next=no-member
@@ -377,8 +378,8 @@ def test_models_documents__email_invitation__success():
email_content = " ".join(email.body.split())
assert (
- f"sender@example.com invited you as an editor on the following document : {document.title}"
- in email_content
+ f'Test Sender (sender@example.com) invited you with the role "editor" '
+ f"on the following document : {document.title}" in email_content
)
assert f"docs/{document.id}/" in email_content
@@ -392,8 +393,14 @@ def test_models_documents__email_invitation__success_fr():
# pylint: disable-next=no-member
assert len(mail.outbox) == 0
+ sender = factories.UserFactory(
+ full_name="Test Sender2", email="sender2@example.com"
+ )
document.email_invitation(
- "fr-fr", "guest2@example.com", models.RoleChoices.OWNER, "sender2@example.com"
+ "fr-fr",
+ "guest2@example.com",
+ models.RoleChoices.OWNER,
+ sender,
)
# pylint: disable-next=no-member
@@ -406,7 +413,7 @@ def test_models_documents__email_invitation__success_fr():
email_content = " ".join(email.body.split())
assert (
- f"sender2@example.com vous a invité en tant que propriétaire "
+ f'Test Sender2 (sender2@example.com) vous a invité avec le rôle "propriétaire" '
f"sur le document suivant : {document.title}" in email_content
)
assert f"docs/{document.id}/" in email_content
@@ -424,8 +431,12 @@ def test_models_documents__email_invitation__failed(mock_logger, _mock_send_mail
# pylint: disable-next=no-member
assert len(mail.outbox) == 0
+ sender = factories.UserFactory()
document.email_invitation(
- "en", "guest3@example.com", models.RoleChoices.ADMIN, "sender3@example.com"
+ "en",
+ "guest3@example.com",
+ models.RoleChoices.ADMIN,
+ sender,
)
# No email has been sent
diff --git a/src/backend/locale/en_US/LC_MESSAGES/django.mo b/src/backend/locale/en_US/LC_MESSAGES/django.mo
index 65545c69..51b7498c 100644
Binary files a/src/backend/locale/en_US/LC_MESSAGES/django.mo and b/src/backend/locale/en_US/LC_MESSAGES/django.mo differ
diff --git a/src/backend/locale/en_US/LC_MESSAGES/django.po b/src/backend/locale/en_US/LC_MESSAGES/django.po
index 5320d813..7c3ba97f 100644
--- a/src/backend/locale/en_US/LC_MESSAGES/django.po
+++ b/src/backend/locale/en_US/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-people\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-09-25 10:15+0000\n"
-"PO-Revision-Date: 2024-09-25 10:17\n"
+"POT-Creation-Date: 2024-10-15 07:19+0000\n"
+"PO-Revision-Date: 2024-10-15 07:23\n"
"Last-Translator: \n"
"Language-Team: English\n"
"Language: en_US\n"
@@ -17,15 +17,15 @@ msgstr ""
"X-Crowdin-File: backend-impress.pot\n"
"X-Crowdin-File-ID: 8\n"
-#: core/admin.py:32
+#: core/admin.py:33
msgid "Personal info"
msgstr ""
-#: core/admin.py:34
+#: core/admin.py:46
msgid "Permissions"
msgstr ""
-#: core/admin.py:46
+#: core/admin.py:58
msgid "Important dates"
msgstr ""
@@ -41,7 +41,7 @@ msgstr ""
msgid "Format"
msgstr ""
-#: core/authentication/backends.py:56
+#: core/authentication/backends.py:57
msgid "Invalid response format or token verification failed"
msgstr ""
@@ -49,10 +49,6 @@ msgstr ""
msgid "User info contained no recognizable user identification"
msgstr ""
-#: core/authentication/backends.py:101
-msgid "Claims contained no recognizable user identification"
-msgstr ""
-
#: core/models.py:62 core/models.py:69
msgid "Reader"
msgstr ""
@@ -117,223 +113,236 @@ msgstr ""
msgid "Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only."
msgstr ""
-#: core/models.py:148
+#: core/models.py:149
+msgid "full name"
+msgstr ""
+
+#: core/models.py:150
+msgid "short name"
+msgstr ""
+
+#: core/models.py:152
msgid "identity email address"
msgstr ""
-#: core/models.py:153
+#: core/models.py:157
msgid "admin email address"
msgstr ""
-#: core/models.py:160
+#: core/models.py:164
msgid "language"
msgstr ""
-#: core/models.py:161
+#: core/models.py:165
msgid "The language in which the user wants to see the interface."
msgstr ""
-#: core/models.py:167
+#: core/models.py:171
msgid "The timezone in which the user wants to see times."
msgstr ""
-#: core/models.py:170
+#: core/models.py:174
msgid "device"
msgstr ""
-#: core/models.py:172
+#: core/models.py:176
msgid "Whether the user is a device or a real user."
msgstr ""
-#: core/models.py:175
+#: core/models.py:179
msgid "staff status"
msgstr ""
-#: core/models.py:177
+#: core/models.py:181
msgid "Whether the user can log into this admin site."
msgstr ""
-#: core/models.py:180
+#: core/models.py:184
msgid "active"
msgstr ""
-#: core/models.py:183
+#: core/models.py:187
msgid "Whether this user should be treated as active. Unselect this instead of deleting accounts."
msgstr ""
-#: core/models.py:195
+#: core/models.py:199
msgid "user"
msgstr ""
-#: core/models.py:196
+#: core/models.py:200
msgid "users"
msgstr ""
-#: core/models.py:328 core/models.py:644
+#: core/models.py:332 core/models.py:638
msgid "title"
msgstr ""
-#: core/models.py:343
+#: core/models.py:347
msgid "Document"
msgstr ""
-#: core/models.py:344
+#: core/models.py:348
msgid "Documents"
msgstr ""
-#: core/models.py:347
+#: core/models.py:351
msgid "Untitled Document"
msgstr ""
-#: core/models.py:537
+#: core/models.py:530
#, python-format
-msgid "%(username)s shared a document with you: %(document)s"
+msgid "%(sender_name)s shared a document with you: %(document)s"
msgstr ""
-#: core/models.py:580
+#: core/models.py:574
msgid "Document/user link trace"
msgstr ""
-#: core/models.py:581
+#: core/models.py:575
msgid "Document/user link traces"
msgstr ""
-#: core/models.py:587
+#: core/models.py:581
msgid "A link trace already exists for this document/user."
msgstr ""
-#: core/models.py:608
+#: core/models.py:602
msgid "Document/user relation"
msgstr ""
-#: core/models.py:609
+#: core/models.py:603
msgid "Document/user relations"
msgstr ""
-#: core/models.py:615
+#: core/models.py:609
msgid "This user is already in this document."
msgstr ""
-#: core/models.py:621
+#: core/models.py:615
msgid "This team is already in this document."
msgstr ""
-#: core/models.py:627 core/models.py:816
+#: core/models.py:621 core/models.py:810
msgid "Either user or team must be set, not both."
msgstr ""
-#: core/models.py:645
+#: core/models.py:639
msgid "description"
msgstr ""
-#: core/models.py:646
+#: core/models.py:640
msgid "code"
msgstr ""
-#: core/models.py:647
+#: core/models.py:641
msgid "css"
msgstr ""
-#: core/models.py:649
+#: core/models.py:643
msgid "public"
msgstr ""
-#: core/models.py:651
+#: core/models.py:645
msgid "Whether this template is public for anyone to use."
msgstr ""
-#: core/models.py:657
+#: core/models.py:651
msgid "Template"
msgstr ""
-#: core/models.py:658
+#: core/models.py:652
msgid "Templates"
msgstr ""
-#: core/models.py:797
+#: core/models.py:791
msgid "Template/user relation"
msgstr ""
-#: core/models.py:798
+#: core/models.py:792
msgid "Template/user relations"
msgstr ""
-#: core/models.py:804
+#: core/models.py:798
msgid "This user is already in this template."
msgstr ""
-#: core/models.py:810
+#: core/models.py:804
msgid "This team is already in this template."
msgstr ""
-#: core/models.py:833
+#: core/models.py:827
msgid "email address"
msgstr ""
-#: core/models.py:850
+#: core/models.py:844
msgid "Document invitation"
msgstr ""
-#: core/models.py:851
+#: core/models.py:845
msgid "Document invitations"
msgstr ""
-#: core/models.py:868
+#: core/models.py:862
msgid "This email is already associated to a registered user."
msgstr ""
-#: core/templates/mail/html/invitation.html:160
-#: core/templates/mail/html/invitation2.html:160
+#: core/templates/mail/html/hello.html:159 core/templates/mail/text/hello.txt:3
+msgid "Company logo"
+msgstr ""
+
+#: core/templates/mail/html/hello.html:188 core/templates/mail/text/hello.txt:5
+#, python-format
+msgid "Hello %(name)s"
+msgstr ""
+
+#: core/templates/mail/html/hello.html:188 core/templates/mail/text/hello.txt:5
+msgid "Hello"
+msgstr ""
+
+#: core/templates/mail/html/hello.html:189 core/templates/mail/text/hello.txt:6
+msgid "Thank you very much for your visit!"
+msgstr ""
+
+#: core/templates/mail/html/hello.html:221
+#, python-format
+msgid "This mail has been sent to %(email)s by %(name)s"
+msgstr ""
+
+#: core/templates/mail/html/invitation.html:159
#: core/templates/mail/text/invitation.txt:3
-#: core/templates/mail/text/invitation2.txt:3
msgid "La Suite Numérique"
msgstr ""
-#: core/templates/mail/html/invitation.html:190
+#: core/templates/mail/html/invitation.html:189
#: core/templates/mail/text/invitation.txt:6
#, python-format
-msgid " %(username)s shared a document with you ! "
+msgid " %(sender_name)s shared a document with you ! "
msgstr ""
-#: core/templates/mail/html/invitation.html:197
+#: core/templates/mail/html/invitation.html:196
#: core/templates/mail/text/invitation.txt:8
#, python-format
-msgid " %(username)s invited you as an %(role)s on the following document : "
+msgid " %(sender_name_email)s invited you with the role \"%(role)s\" on the following document : "
msgstr ""
-#: core/templates/mail/html/invitation.html:206
-#: core/templates/mail/html/invitation2.html:211
+#: core/templates/mail/html/invitation.html:205
#: core/templates/mail/text/invitation.txt:10
-#: core/templates/mail/text/invitation2.txt:11
msgid "Open"
msgstr ""
-#: core/templates/mail/html/invitation.html:223
+#: core/templates/mail/html/invitation.html:222
#: core/templates/mail/text/invitation.txt:14
-msgid " Docs, your new essential tool for organizing, sharing and collaborate on your documents as a team. "
+msgid " Docs, your new essential tool for organizing, sharing and collaborating on your documents as a team. "
msgstr ""
-#: core/templates/mail/html/invitation.html:230
-#: core/templates/mail/html/invitation2.html:235
+#: core/templates/mail/html/invitation.html:229
#: core/templates/mail/text/invitation.txt:16
-#: core/templates/mail/text/invitation2.txt:17
msgid "Brought to you by La Suite Numérique"
msgstr ""
-#: core/templates/mail/html/invitation2.html:190
+#: core/templates/mail/text/hello.txt:8
#, python-format
-msgid "%(username)s shared a document with you"
-msgstr ""
-
-#: core/templates/mail/html/invitation2.html:197
-#: core/templates/mail/text/invitation2.txt:8
-#, python-format
-msgid "%(username)s invited you as an %(role)s on the following document :"
-msgstr ""
-
-#: core/templates/mail/html/invitation2.html:228
-#: core/templates/mail/text/invitation2.txt:15
-msgid "Docs, your new essential tool for organizing, sharing and collaborate on your document as a team."
+msgid "This mail has been sent to %(email)s by %(name)s [%(href)s]"
msgstr ""
#: impress/settings.py:176
diff --git a/src/backend/locale/fr_FR/LC_MESSAGES/django.mo b/src/backend/locale/fr_FR/LC_MESSAGES/django.mo
index b6e0032a..1062972e 100644
Binary files a/src/backend/locale/fr_FR/LC_MESSAGES/django.mo and b/src/backend/locale/fr_FR/LC_MESSAGES/django.mo differ
diff --git a/src/backend/locale/fr_FR/LC_MESSAGES/django.po b/src/backend/locale/fr_FR/LC_MESSAGES/django.po
index 8c4ad0b4..07894e5d 100644
--- a/src/backend/locale/fr_FR/LC_MESSAGES/django.po
+++ b/src/backend/locale/fr_FR/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-people\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-09-25 10:15+0000\n"
-"PO-Revision-Date: 2024-09-25 10:21\n"
+"POT-Creation-Date: 2024-10-15 07:19+0000\n"
+"PO-Revision-Date: 2024-10-15 07:23\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -17,15 +17,15 @@ msgstr ""
"X-Crowdin-File: backend-impress.pot\n"
"X-Crowdin-File-ID: 8\n"
-#: core/admin.py:32
+#: core/admin.py:33
msgid "Personal info"
msgstr "Infos Personnelles"
-#: core/admin.py:34
+#: core/admin.py:46
msgid "Permissions"
msgstr "Permissions"
-#: core/admin.py:46
+#: core/admin.py:58
msgid "Important dates"
msgstr "Dates importantes"
@@ -41,7 +41,7 @@ msgstr ""
msgid "Format"
msgstr ""
-#: core/authentication/backends.py:56
+#: core/authentication/backends.py:57
msgid "Invalid response format or token verification failed"
msgstr ""
@@ -49,10 +49,6 @@ msgstr ""
msgid "User info contained no recognizable user identification"
msgstr ""
-#: core/authentication/backends.py:101
-msgid "Claims contained no recognizable user identification"
-msgstr ""
-
#: core/models.py:62 core/models.py:69
msgid "Reader"
msgstr "Lecteur"
@@ -117,224 +113,237 @@ msgstr ""
msgid "Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only."
msgstr ""
-#: core/models.py:148
+#: core/models.py:149
+msgid "full name"
+msgstr ""
+
+#: core/models.py:150
+msgid "short name"
+msgstr ""
+
+#: core/models.py:152
msgid "identity email address"
msgstr ""
-#: core/models.py:153
+#: core/models.py:157
msgid "admin email address"
msgstr ""
-#: core/models.py:160
+#: core/models.py:164
msgid "language"
msgstr ""
-#: core/models.py:161
+#: core/models.py:165
msgid "The language in which the user wants to see the interface."
msgstr ""
-#: core/models.py:167
+#: core/models.py:171
msgid "The timezone in which the user wants to see times."
msgstr ""
-#: core/models.py:170
+#: core/models.py:174
msgid "device"
msgstr ""
-#: core/models.py:172
+#: core/models.py:176
msgid "Whether the user is a device or a real user."
msgstr ""
-#: core/models.py:175
+#: core/models.py:179
msgid "staff status"
msgstr ""
-#: core/models.py:177
+#: core/models.py:181
msgid "Whether the user can log into this admin site."
msgstr ""
-#: core/models.py:180
+#: core/models.py:184
msgid "active"
msgstr ""
-#: core/models.py:183
+#: core/models.py:187
msgid "Whether this user should be treated as active. Unselect this instead of deleting accounts."
msgstr ""
-#: core/models.py:195
+#: core/models.py:199
msgid "user"
msgstr ""
-#: core/models.py:196
+#: core/models.py:200
msgid "users"
msgstr ""
-#: core/models.py:328 core/models.py:644
+#: core/models.py:332 core/models.py:638
msgid "title"
msgstr ""
-#: core/models.py:343
+#: core/models.py:347
msgid "Document"
msgstr ""
-#: core/models.py:344
+#: core/models.py:348
msgid "Documents"
msgstr ""
-#: core/models.py:347
+#: core/models.py:351
msgid "Untitled Document"
msgstr ""
-#: core/models.py:537
+#: core/models.py:530
#, python-format
-msgid "%(username)s shared a document with you: %(document)s"
-msgstr "%(username)s a partagé un document avec vous: %(document)s"
+msgid "%(sender_name)s shared a document with you: %(document)s"
+msgstr "%(sender_name)s a partagé un document avec vous: %(document)s"
-#: core/models.py:580
+#: core/models.py:574
msgid "Document/user link trace"
msgstr ""
-#: core/models.py:581
+#: core/models.py:575
msgid "Document/user link traces"
msgstr ""
-#: core/models.py:587
+#: core/models.py:581
msgid "A link trace already exists for this document/user."
msgstr ""
-#: core/models.py:608
+#: core/models.py:602
msgid "Document/user relation"
msgstr ""
-#: core/models.py:609
+#: core/models.py:603
msgid "Document/user relations"
msgstr ""
-#: core/models.py:615
+#: core/models.py:609
msgid "This user is already in this document."
msgstr ""
-#: core/models.py:621
+#: core/models.py:615
msgid "This team is already in this document."
msgstr ""
-#: core/models.py:627 core/models.py:816
+#: core/models.py:621 core/models.py:810
msgid "Either user or team must be set, not both."
msgstr ""
-#: core/models.py:645
+#: core/models.py:639
msgid "description"
msgstr ""
-#: core/models.py:646
+#: core/models.py:640
msgid "code"
msgstr ""
-#: core/models.py:647
+#: core/models.py:641
msgid "css"
msgstr ""
-#: core/models.py:649
+#: core/models.py:643
msgid "public"
msgstr ""
-#: core/models.py:651
+#: core/models.py:645
msgid "Whether this template is public for anyone to use."
msgstr ""
-#: core/models.py:657
+#: core/models.py:651
msgid "Template"
msgstr ""
-#: core/models.py:658
+#: core/models.py:652
msgid "Templates"
msgstr ""
-#: core/models.py:797
+#: core/models.py:791
msgid "Template/user relation"
msgstr ""
-#: core/models.py:798
+#: core/models.py:792
msgid "Template/user relations"
msgstr ""
-#: core/models.py:804
+#: core/models.py:798
msgid "This user is already in this template."
msgstr ""
-#: core/models.py:810
+#: core/models.py:804
msgid "This team is already in this template."
msgstr ""
-#: core/models.py:833
+#: core/models.py:827
msgid "email address"
msgstr ""
-#: core/models.py:850
+#: core/models.py:844
msgid "Document invitation"
msgstr ""
-#: core/models.py:851
+#: core/models.py:845
msgid "Document invitations"
msgstr ""
-#: core/models.py:868
+#: core/models.py:862
msgid "This email is already associated to a registered user."
msgstr ""
-#: core/templates/mail/html/invitation.html:160
-#: core/templates/mail/html/invitation2.html:160
+#: core/templates/mail/html/hello.html:159 core/templates/mail/text/hello.txt:3
+msgid "Company logo"
+msgstr ""
+
+#: core/templates/mail/html/hello.html:188 core/templates/mail/text/hello.txt:5
+#, python-format
+msgid "Hello %(name)s"
+msgstr ""
+
+#: core/templates/mail/html/hello.html:188 core/templates/mail/text/hello.txt:5
+msgid "Hello"
+msgstr ""
+
+#: core/templates/mail/html/hello.html:189 core/templates/mail/text/hello.txt:6
+msgid "Thank you very much for your visit!"
+msgstr ""
+
+#: core/templates/mail/html/hello.html:221
+#, python-format
+msgid "This mail has been sent to %(email)s by %(name)s"
+msgstr ""
+
+#: core/templates/mail/html/invitation.html:159
#: core/templates/mail/text/invitation.txt:3
-#: core/templates/mail/text/invitation2.txt:3
msgid "La Suite Numérique"
msgstr ""
-#: core/templates/mail/html/invitation.html:190
+#: core/templates/mail/html/invitation.html:189
#: core/templates/mail/text/invitation.txt:6
#, python-format
-msgid " %(username)s shared a document with you ! "
-msgstr " %(username)s a partagé un document avec vous ! "
+msgid " %(sender_name)s shared a document with you ! "
+msgstr " %(sender_name)s a partagé un document avec vous ! "
-#: core/templates/mail/html/invitation.html:197
+#: core/templates/mail/html/invitation.html:196
#: core/templates/mail/text/invitation.txt:8
#, python-format
-msgid " %(username)s invited you as an %(role)s on the following document : "
-msgstr " %(username)s vous a invité en tant que %(role)s sur le document suivant : "
+msgid " %(sender_name_email)s invited you with the role \"%(role)s\" on the following document : "
+msgstr " %(sender_name_email)s vous a invité avec le rôle \"%(role)s\" sur le document suivant : "
-#: core/templates/mail/html/invitation.html:206
-#: core/templates/mail/html/invitation2.html:211
+#: core/templates/mail/html/invitation.html:205
#: core/templates/mail/text/invitation.txt:10
-#: core/templates/mail/text/invitation2.txt:11
msgid "Open"
msgstr "Ouvrir"
-#: core/templates/mail/html/invitation.html:223
+#: core/templates/mail/html/invitation.html:222
#: core/templates/mail/text/invitation.txt:14
-msgid " Docs, your new essential tool for organizing, sharing and collaborate on your documents as a team. "
+msgid " Docs, your new essential tool for organizing, sharing and collaborating on your documents as a team. "
msgstr " Docs, votre nouvel outil incontournable pour organiser, partager et collaborer sur vos documents en équipe. "
-#: core/templates/mail/html/invitation.html:230
-#: core/templates/mail/html/invitation2.html:235
+#: core/templates/mail/html/invitation.html:229
#: core/templates/mail/text/invitation.txt:16
-#: core/templates/mail/text/invitation2.txt:17
msgid "Brought to you by La Suite Numérique"
msgstr "Proposé par La Suite Numérique"
-#: core/templates/mail/html/invitation2.html:190
+#: core/templates/mail/text/hello.txt:8
#, python-format
-msgid "%(username)s shared a document with you"
-msgstr "%(username)s a partagé un document avec vous"
-
-#: core/templates/mail/html/invitation2.html:197
-#: core/templates/mail/text/invitation2.txt:8
-#, python-format
-msgid "%(username)s invited you as an %(role)s on the following document :"
-msgstr "%(username)s vous a invité en tant que %(role)s sur le document suivant :"
-
-#: core/templates/mail/html/invitation2.html:228
-#: core/templates/mail/text/invitation2.txt:15
-msgid "Docs, your new essential tool for organizing, sharing and collaborate on your document as a team."
-msgstr "Docs, votre nouvel outil essentiel pour organiser, partager et collaborer sur votre document en équipe."
+msgid "This mail has been sent to %(email)s by %(name)s [%(href)s]"
+msgstr ""
#: impress/settings.py:176
msgid "English"
diff --git a/src/mail/mjml/invitation.mjml b/src/mail/mjml/invitation.mjml
index 4e5841b1..f0db2e76 100644
--- a/src/mail/mjml/invitation.mjml
+++ b/src/mail/mjml/invitation.mjml
@@ -24,14 +24,14 @@
{% blocktrans %}
- {{username}} shared a document with you !
+ {{sender_name}} shared a document with you !
{% endblocktrans %}
{% blocktrans %}
- {{username}} invited you as an {{role}} on the following document :
+ {{sender_name_email}} invited you with the role "{{role}}" on the following document :
{% endblocktrans %}
{{document.title}}
@@ -52,7 +52,7 @@
/>
{% blocktrans %}
- Docs, your new essential tool for organizing, sharing and collaborate on your documents as a team.
+ Docs, your new essential tool for organizing, sharing and collaborating on your documents as a team.
{% endblocktrans %}
diff --git a/src/mail/mjml/partial/header.mjml b/src/mail/mjml/partial/header.mjml
index daedebb8..489cdf02 100644
--- a/src/mail/mjml/partial/header.mjml
+++ b/src/mail/mjml/partial/header.mjml
@@ -32,8 +32,7 @@
/* Global styles */
h1 {
color: #161616;
- font-size: 1.5rem;
- line-height: 1em;
+ font-size: 1.4rem;
font-weight: 700;
}