This commit is contained in:
Aarni Halinen
2020-07-16 01:36:02 +03:00
parent 5c4e4c7f5a
commit 0adca6bd2e
10 changed files with 55 additions and 32 deletions
-1
View File
@@ -6,7 +6,6 @@ from django.views.decorators.csrf import ensure_csrf_cookie
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.decorators import permission_required, login_required from django.contrib.auth.decorators import permission_required, login_required
from django.conf import settings from django.conf import settings
from django.core.mail import send_mail
import logging import logging
import requests import requests
+3 -3
View File
@@ -11,7 +11,7 @@ import logging
from smtplib import SMTPAuthenticationError from smtplib import SMTPAuthenticationError
from members.models import Member, Request from members.models import Member, Request
from members.views.utils import send_mail_wrapper from webapp.utils import send_email
@receiver(post_save, sender=Request) @receiver(post_save, sender=Request)
@@ -24,7 +24,7 @@ def email_on_request(sender, instance, created, **kwargs):
if created: if created:
subject = 'Test1' subject = 'Test1'
message = 'Please validate your email address\r\n' message = 'Please validate your email address\r\n'
send_mail_wrapper(subject, message, instance.email) send_email(instance.email, subject, message)
except SMTPAuthenticationError: except SMTPAuthenticationError:
logging.error('Failed to send email to accepted request!') logging.error('Failed to send email to accepted request!')
@@ -39,6 +39,6 @@ def email_on_accept(sender, instance, created, **kwargs):
if created: if created:
subject = 'Test2' subject = 'Test2'
message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n' message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n'
send_mail_wrapper(subject, message, instance.email) send_email(instance.email, subject, message)
except SMTPAuthenticationError: except SMTPAuthenticationError:
logging.error('Failed to send email to accepted member!') logging.error('Failed to send email to accepted member!')
-1
View File
@@ -3,7 +3,6 @@ from django.contrib.auth.decorators import permission_required, login_required
from django.views.decorators.http import require_http_methods from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import ensure_csrf_cookie from django.views.decorators.csrf import ensure_csrf_cookie
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from django.core.mail import send_mail
from django.conf import settings from django.conf import settings
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
-1
View File
@@ -4,7 +4,6 @@ from django.utils.decorators import method_decorator
from django.views.decorators.http import require_http_methods from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import ensure_csrf_cookie from django.views.decorators.csrf import ensure_csrf_cookie
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse, HttpResponseForbidden from django.http import HttpResponse, HttpResponseRedirect, JsonResponse, HttpResponseForbidden
from django.core.mail import send_mail
from django.conf import settings from django.conf import settings
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
-1
View File
@@ -3,7 +3,6 @@ from django.contrib.auth.decorators import permission_required, login_required
from django.views.decorators.http import require_http_methods from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import ensure_csrf_cookie from django.views.decorators.csrf import ensure_csrf_cookie
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from django.core.mail import send_mail
from django.conf import settings from django.conf import settings
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
+1 -10
View File
@@ -3,7 +3,7 @@ from django.contrib.auth.decorators import permission_required, login_required
from django.views.decorators.http import require_http_methods from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import ensure_csrf_cookie from django.views.decorators.csrf import ensure_csrf_cookie
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest
from django.core.mail import send_mail from webapp.utils import send_email
from django.conf import settings from django.conf import settings
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
@@ -145,15 +145,6 @@ def import_csv(request, *args, **kwargs):
return render(request, 'member_add_many_confirm.html', context) return render(request, 'member_add_many_confirm.html', context)
def send_mail_wrapper(subject, message, email_to):
"""Send mail to default email."""
send_mail(subject,
message,
settings.DEFAULT_EMAIL_FROM,
[email_to],
fail_silently=False)
def make_excel_response(Resource): def make_excel_response(Resource):
res = Resource() res = Resource()
dataset = res.export() dataset = res.export()
+2 -1
View File
@@ -29,7 +29,7 @@ django-auditlog==0.4.5
phonenumbers==8.11.4 phonenumbers==8.11.4
django-phonenumber-field[phonenumbers]==4.0.0 django-phonenumber-field[phonenumbers]==4.0.0
django-autocomplete-light==3.4.1 django-autocomplete-light==3.4.1
six==1.11.0 six==1.12.0
django-suit==0.2.26 django-suit==0.2.26
telepot==12.3 telepot==12.3
pyexcel==0.5.14 pyexcel==0.5.14
@@ -40,3 +40,4 @@ django-app-namespace-template-loader==0.4.1
django-filter==2.0.0 django-filter==2.0.0
whitenoise==4.1.4 whitenoise==4.1.4
jsonschema==3.2.0 jsonschema==3.2.0
mailjet-rest==1.3.3
+4 -3
View File
@@ -30,9 +30,10 @@ GOOGLE_RECAPTCHA_SITE_KEY = os.getenv("GOOGLE_RECAPTCHA_SITE_KEY", "YOUR-PUBLIC-
GOOGLE_RECAPTCHA_SECRET_KEY = os.getenv("GOOGLE_RECAPTCHA_SECRET_KEY", "YOUR-PRIVATE-KEY") GOOGLE_RECAPTCHA_SECRET_KEY = os.getenv("GOOGLE_RECAPTCHA_SECRET_KEY", "YOUR-PRIVATE-KEY")
# Email settings (more settings in base.py) # Email settings (more settings in base.py)
EMAIL_HOST_USER = os.getenv('EMAIL_HOST', 'sikviestinta@gmail.com') EMAIL_API_KEY = os.getenv('EMAIL_API_KEY', '')
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_PASSWD', '<gmail_passu>') EMAIL_API_SECRET = os.getenv('EMAIL_API_SECRET', '')
DEFAULT_EMAIL_FROM = 'SIK Viestintä <sikviestinta@gmail.com>' DEFAULT_EMAIL_FROM = 'SIK'
DEFAULT_EMAIL_FROM_ADDR = 'noreply@sahkoinsinoorikilta.fi'
ENABLE_AUTOMATIC_EMAILS = True ENABLE_AUTOMATIC_EMAILS = True
# Token for Telegram bot # Token for Telegram bot
+14
View File
@@ -29,6 +29,20 @@ services:
environment: environment:
- HOST=api.dev.sik.party - HOST=api.dev.sik.party
- DEBUG=True - DEBUG=True
- EMAIL_API_KEY_FILE=/run/secrets/DJANGO_EMAIL_API_KEY
- EMAIL_API_SECRET_FILE=/run/secrets/DJANGO_EMAIL_API_SECRET
- DB_HOST=db
- DB_PORT=5432
secrets:
- DJANGO_EMAIL_API_KEY
- DJANGO_EMAIL_API_SECRET
secrets:
DJANGO_EMAIL_API_KEY:
external: true
DJANGO_EMAIL_API_SECRET:
external: true
volumes: volumes:
dbdata: dbdata:
+31 -11
View File
@@ -1,13 +1,15 @@
"""Webapp utils.""" """Webapp utils."""
from django.utils import timezone from django.utils import timezone
from django.core.mail import send_mail # from django.core.mail import send_mail
import os
from mailjet_rest import Client
from datetime import timedelta from datetime import timedelta
import logging import logging
from django.conf import settings from django.conf import settings
from django.template.loader import render_to_string from django.template.loader import render_to_string
from sikweb.settings import URL from sikweb.settings import URL, EMAIL_API_KEY, EMAIL_API_SECRET, DEFAULT_EMAIL_FROM, DEFAULT_EMAIL_FROM_ADDR
def month_from_now(): def month_from_now():
@@ -17,18 +19,36 @@ def month_from_now():
def send_email(to, subject, body, fail_silently=False): def send_email(to, subject, body, fail_silently=False):
try: try:
success = send_mail( mailjet = Client(auth=(EMAIL_API_KEY, EMAIL_API_SECRET), version='v3.1')
subject,
body, data = {
settings.DEFAULT_EMAIL_FROM, 'Messages': [
[to], {
fail_silently=fail_silently, "From": {
) "Email": DEFAULT_EMAIL_FROM_ADDR,
if success == 0: "Name": DEFAULT_EMAIL_FROM
raise Exception('Failed to send email!') },
"To": [
{
"Email": to,
"Name": "You"
}
],
"Subject": subject,
# "TextPart": "Greetings from Mailjet!",
"HTMLPart": body
}
]
}
success = mailjet.send.create(data=data)
if success.status_code != 201:
raise Exception(f'Failed to send email: {success.json()}')
except Exception as ex: except Exception as ex:
logging.exception('Failed to send email.') logging.exception('Failed to send email.')
logging.debug(EMAIL_API_KEY)
logging.debug(EMAIL_API_SECRET)
def send_signup_email(to, subject, id, uuid): def send_signup_email(to, subject, id, uuid):