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.contrib.auth.decorators import permission_required, login_required
from django.conf import settings
from django.core.mail import send_mail
import logging
import requests
+3 -3
View File
@@ -11,7 +11,7 @@ import logging
from smtplib import SMTPAuthenticationError
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)
@@ -24,7 +24,7 @@ def email_on_request(sender, instance, created, **kwargs):
if created:
subject = 'Test1'
message = 'Please validate your email address\r\n'
send_mail_wrapper(subject, message, instance.email)
send_email(instance.email, subject, message)
except SMTPAuthenticationError:
logging.error('Failed to send email to accepted request!')
@@ -39,6 +39,6 @@ def email_on_accept(sender, instance, created, **kwargs):
if created:
subject = 'Test2'
message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n'
send_mail_wrapper(subject, message, instance.email)
send_email(instance.email, subject, message)
except SMTPAuthenticationError:
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.csrf import ensure_csrf_cookie
from django.http import HttpResponse, HttpResponseRedirect
from django.core.mail import send_mail
from django.conf import settings
from django.utils.translation import ugettext as _
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.csrf import ensure_csrf_cookie
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse, HttpResponseForbidden
from django.core.mail import send_mail
from django.conf import settings
from django.utils.translation import ugettext as _
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.csrf import ensure_csrf_cookie
from django.http import HttpResponse, HttpResponseRedirect
from django.core.mail import send_mail
from django.conf import settings
from django.utils.translation import ugettext as _
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.csrf import ensure_csrf_cookie
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.utils.translation import ugettext as _
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)
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):
res = Resource()
dataset = res.export()
+2 -1
View File
@@ -29,7 +29,7 @@ django-auditlog==0.4.5
phonenumbers==8.11.4
django-phonenumber-field[phonenumbers]==4.0.0
django-autocomplete-light==3.4.1
six==1.11.0
six==1.12.0
django-suit==0.2.26
telepot==12.3
pyexcel==0.5.14
@@ -40,3 +40,4 @@ django-app-namespace-template-loader==0.4.1
django-filter==2.0.0
whitenoise==4.1.4
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")
# Email settings (more settings in base.py)
EMAIL_HOST_USER = os.getenv('EMAIL_HOST', 'sikviestinta@gmail.com')
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_PASSWD', '<gmail_passu>')
DEFAULT_EMAIL_FROM = 'SIK Viestintä <sikviestinta@gmail.com>'
EMAIL_API_KEY = os.getenv('EMAIL_API_KEY', '')
EMAIL_API_SECRET = os.getenv('EMAIL_API_SECRET', '')
DEFAULT_EMAIL_FROM = 'SIK'
DEFAULT_EMAIL_FROM_ADDR = 'noreply@sahkoinsinoorikilta.fi'
ENABLE_AUTOMATIC_EMAILS = True
# Token for Telegram bot
+14
View File
@@ -29,6 +29,20 @@ services:
environment:
- HOST=api.dev.sik.party
- 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:
dbdata:
+31 -11
View File
@@ -1,13 +1,15 @@
"""Webapp utils."""
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
import logging
from django.conf import settings
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():
@@ -17,18 +19,36 @@ def month_from_now():
def send_email(to, subject, body, fail_silently=False):
try:
success = send_mail(
subject,
body,
settings.DEFAULT_EMAIL_FROM,
[to],
fail_silently=fail_silently,
)
if success == 0:
raise Exception('Failed to send email!')
mailjet = Client(auth=(EMAIL_API_KEY, EMAIL_API_SECRET), version='v3.1')
data = {
'Messages': [
{
"From": {
"Email": DEFAULT_EMAIL_FROM_ADDR,
"Name": DEFAULT_EMAIL_FROM
},
"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:
logging.exception('Failed to send email.')
logging.debug(EMAIL_API_KEY)
logging.debug(EMAIL_API_SECRET)
def send_signup_email(to, subject, id, uuid):