diff --git a/config/settings/common.py b/config/settings/common.py index e4ef36c..1ac9c19 100644 --- a/config/settings/common.py +++ b/config/settings/common.py @@ -435,7 +435,9 @@ SASS_PROCESSOR_INCLUDE_DIRS = [ SASS_PROCESSOR_ENABLED = True SASS_PROCESSOR_AUTO_INCLUDE = True +EMAIL_NOTIFY = True EMAIL_SUPPORT = 'support@maidstone-hackspace.org.uk' +EMAIL_MAILING_LIST = 'maidstone-hackspace@googlegroups.com' REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ( @@ -466,4 +468,4 @@ CORS_ORIGIN_WHITELIST = ( MATRIX_USER=env('MATRIX_USERNAME') MATRIX_PASSWORD=env('MATRIX_PASSWORD') MATRIX_ROOM=env('MATRIX_ROOM') -MSG_PREFIX = '[MH]' +MSG_PREFIX = 'MH' diff --git a/config/settings/local.py b/config/settings/local.py index 951f960..8022b67 100644 --- a/config/settings/local.py +++ b/config/settings/local.py @@ -31,6 +31,7 @@ SECRET_KEY = env('DJANGO_SECRET_KEY', default='wq)sg12k&5&adv)e%56n5e97o@))6xu90 EMAIL_PORT = 1025 EMAIL_HOST = env("EMAIL_HOST", default='mailhog') +MSG_PREFIX = 'MHT' # CACHING diff --git a/config/settings/stage.py b/config/settings/stage.py index fc60406..157cb70 100644 --- a/config/settings/stage.py +++ b/config/settings/stage.py @@ -113,6 +113,7 @@ EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_PASSWORD = env('EMAIL_PASSWORD') EMAIL_HOST_USER = env('EMAIL_USER') EMAIL_PORT = 587 +EMAIL_NOTIFY = False # Anymail with Mailgun #INSTALLED_APPS += ("anymail", ) diff --git a/mhackspace/base/models.py b/mhackspace/base/models.py index 8f067e8..123a75b 100644 --- a/mhackspace/base/models.py +++ b/mhackspace/base/models.py @@ -1,14 +1,15 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals, absolute_import -from django.contrib.sites.models import Site - from django.db import models +from django.conf import settings +from django.contrib.sites.models import Site from django.utils import timezone from stdimage.models import StdImageField from stdimage.utils import UploadToAutoSlugClassNameDir from stdimage.validators import MinSizeValidator from spirit.comment.models import Comment +from spirit.topic.models import Topic from wiki.models.article import ArticleRevision # from django.contrib.auth.models import User from django.core.mail import EmailMessage @@ -63,7 +64,7 @@ def send_topic_update_email(sender, instance, **kwargs): addresses = {comment.user.email for comment in comments} for user_email in addresses: email = EmailMessage( - '[%s] - %s' % ('MH', instance.topic.title), + '[%s] - %s' % (settings.MSG_PREFIX, instance.topic.title), 'A topic you have interacted with has been updated click link to see new comments %s' % instance.get_absolute_url(), 'no-reply@maidstone-hackspace.org.uk', to=[user_email], @@ -80,5 +81,19 @@ def wiki_article_updated(sender, instance, **kwargs): instance.article.get_absolute_url())) +def send_new_topic_notification(sender, instance, **kwargs): + matrix_message.delay('https://%s%s' % ( + Site.objects.get_current().domain, + instance.get_absolute_url())) + email = EmailMessage( + '[%s - TOPIC] - %s' % (settings.MSG_PREFIX, instance), + 'A new topic has been created, click link to view %s' % instance.get_absolute_url(), + settings.EMAIL_MAILING_LIST, + to=[settings.EMAIL_MAILING_LIST], + headers={'Reply-To': settings.EMAIL_MAILING_LIST}) + email.send() + + post_save.connect(wiki_article_updated, sender=ArticleRevision) post_save.connect(send_topic_update_email, sender=Comment) +post_save.connect(send_new_topic_notification, sender=Topic) diff --git a/mhackspace/base/tasks.py b/mhackspace/base/tasks.py index 2a0898b..74a998d 100644 --- a/mhackspace/base/tasks.py +++ b/mhackspace/base/tasks.py @@ -8,6 +8,7 @@ from mhackspace.feeds.helper import import_feeds def update_homepage_feeds(): return import_feeds() + matrix_url = "https://matrix.org/_matrix/client/r0" matrix_login_url = matrix_url + "/login" matrix_join_room_alias_url = matrix_url + "/join/{room}?access_token={access_token}" @@ -15,11 +16,27 @@ matrix_join_room_id_url = matrix_url + "rooms/%21{room}/join?access_token={acces matrix_send_msg_url = matrix_url + "/rooms/%21{room}/send/m.room.message?access_token={access_token}" +@shared_task +def send_email(email_to, + message, + email_from='no-reply@maidstone-hackspace.org.uk', + reply_to='no-reply@maidstone-hackspace.org.uk'): + + if settings.EMAIL_NOTIFY is False: + return + email = EmailMessage( + '[%s] - %s' % (settings.MSG_PREFIX, instance.topic.title), + 'A topic you have interacted with has been updated click link to see new comments %s' % instance.get_absolute_url(), + 'no-reply@maidstone-hackspace.org.uk', + to=[email_to], + headers={'Reply-To': 'no-reply@maidstone-hackspace.org.uk'}) + email.send() + @shared_task def matrix_message(message): # we dont rely on theses, so ignore if it goes wrong # TODO at least log that something has gone wrong - try: + try: # login details = { "type":"m.login.password", @@ -42,9 +59,8 @@ def matrix_message(message): url = matrix_send_msg_url.format(**url_params) details = { "msgtype": "m.text", - "body": "%s %s" % (settings.MSG_PREFIX, message)} + "body": "[%s] %s" % (settings.MSG_PREFIX, message)} r2 = requests.post(url, json=details) except: pass return True - diff --git a/mhackspace/requests/models.py b/mhackspace/requests/models.py index d3cf76f..982abe7 100644 --- a/mhackspace/requests/models.py +++ b/mhackspace/requests/models.py @@ -45,7 +45,7 @@ class UserRequests(models.Model): def send_topic_update_email(sender, instance, **kwargs): - matrix_message.delay('[MH] New Request - %s' % instance.title) + matrix_message.delay('New Request - %s' % instance.title) post_save.connect(send_topic_update_email, sender=UserRequests) diff --git a/mhackspace/templates/base.html b/mhackspace/templates/base.html index ce2cb7c..f0fc887 100644 --- a/mhackspace/templates/base.html +++ b/mhackspace/templates/base.html @@ -31,10 +31,13 @@ + + {% block head-open-graph %} + {% endblock head-open-graph %} {% block css %}{% endblock %} @@ -125,7 +128,10 @@