From acdccde2fba554e061563e529c144f4a75a665df Mon Sep 17 00:00:00 2001 From: Douglas Paz Date: Tue, 3 Jul 2018 10:40:36 -0300 Subject: [PATCH 1/2] Add welcome email, send email when user is created --- bothub/authentication/models.py | 22 ++++++++++++++++++ .../static/authentication/emails/welcome.png | Bin 0 -> 14463 bytes .../authentication/emails/welcome.html | 18 ++++++++++++++ .../authentication/emails/welcome.txt | 5 ++++ bothub/urls.py | 19 +++++++++++++++ 5 files changed, 64 insertions(+) create mode 100644 bothub/authentication/static/authentication/emails/welcome.png create mode 100644 bothub/authentication/templates/authentication/emails/welcome.html create mode 100644 bothub/authentication/templates/authentication/emails/welcome.txt diff --git a/bothub/authentication/models.py b/bothub/authentication/models.py index e9b9fd8a..503d0778 100644 --- a/bothub/authentication/models.py +++ b/bothub/authentication/models.py @@ -9,6 +9,7 @@ from django.template.loader import render_to_string from django.conf import settings from django.core.exceptions import ValidationError +from django.dispatch import receiver user_nickname_re = _lazy_re_compile(r'^[-a-zA-Z0-9_]+\Z') @@ -101,6 +102,21 @@ class Meta: def token_generator(self): return PasswordResetTokenGenerator() + def send_welcome_email(self): + context = { + 'name': self.name, + } + send_mail( + _('Welcome to Bothub'), + render_to_string( + 'authentication/emails/welcome.txt', + context), + None, + [self.email], + html_message=render_to_string( + 'authentication/emails/welcome.html', + context)) + def make_password_reset_token(self): return self.token_generator.make_token(self) @@ -126,3 +142,9 @@ def send_reset_password_email(self): def check_password_reset_token(self, token): return self.token_generator.check_token(self, token) + + +@receiver(models.signals.post_save, sender=User) +def send_welcome_email(instance, created, **kwargs): + if created: + instance.send_welcome_email() diff --git a/bothub/authentication/static/authentication/emails/welcome.png b/bothub/authentication/static/authentication/emails/welcome.png new file mode 100644 index 0000000000000000000000000000000000000000..29406d1edf72886842be676f8546436a8fff0f77 GIT binary patch literal 14463 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 + + {% trans 'Welcome to Bothub' %} +

{% trans 'Welcome to Bothub' %}

+ + +{% endblock %} + +{% block main-content %} +

{% blocktrans %}Hello, {{ name }}!{% endblocktrans %}

+

{% trans 'You\'ve successfully signed up for Bothub and now you can start creating, improving and translating bots on the platform.' %}

+

{% trans 'We are happy to have you with us and hope you enjoy Bothub.' %}

+{% endblock %} \ No newline at end of file diff --git a/bothub/authentication/templates/authentication/emails/welcome.txt b/bothub/authentication/templates/authentication/emails/welcome.txt new file mode 100644 index 00000000..9b284655 --- /dev/null +++ b/bothub/authentication/templates/authentication/emails/welcome.txt @@ -0,0 +1,5 @@ +{% load i18n %}{% trans 'Welcome to Bothub' %} + +{% blocktrans %}Hello, {{ name }}!{% endblocktrans %} +{% trans 'You\'ve successfully signed up for Bothub and now you can start creating, improving and translating bots on the platform.' %} +{% trans 'We are happy to have you with us and hope you enjoy Bothub.' %} \ No newline at end of file diff --git a/bothub/urls.py b/bothub/urls.py index 15440980..3eaa52ba 100644 --- a/bothub/urls.py +++ b/bothub/urls.py @@ -1,11 +1,30 @@ from django.contrib import admin from django.urls import path, include +from django.conf import settings from rest_framework.documentation import include_docs_urls from bothub.api.routers import router as bothub_api_routers + urlpatterns = [ path('api/', include(bothub_api_routers.urls)), path('docs/', include_docs_urls(title='API Documentation')), path('admin/', admin.site.urls), ] + +if settings.DEBUG: + def render_template(template_name, **kwargs): + def wrapper(request): + from django.shortcuts import render + return render(request, template_name, kwargs) + return wrapper + + urlpatterns += [ + path('emails/', include([ + path( + 'welcome/', + render_template( + 'authentication/emails/welcome.html', + name='Douglas')), + ])), + ] From 77d746a226124a3e81e54bbd7bd552051b346425 Mon Sep 17 00:00:00 2001 From: Douglas Paz Date: Tue, 3 Jul 2018 10:45:45 -0300 Subject: [PATCH 2/2] break line eof --- .../authentication/templates/authentication/emails/welcome.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bothub/authentication/templates/authentication/emails/welcome.html b/bothub/authentication/templates/authentication/emails/welcome.html index 3257c288..751e5924 100644 --- a/bothub/authentication/templates/authentication/emails/welcome.html +++ b/bothub/authentication/templates/authentication/emails/welcome.html @@ -15,4 +15,4 @@

{% trans 'Welcome to Bothub' %}

{% blocktrans %}Hello, {{ name }}!{% endblocktrans %}

{% trans 'You\'ve successfully signed up for Bothub and now you can start creating, improving and translating bots on the platform.' %}

{% trans 'We are happy to have you with us and hope you enjoy Bothub.' %}

-{% endblock %} \ No newline at end of file +{% endblock %}