Updated notifications and open grpah for forums and wiki, should now email new
topics to the mailing list.
This commit is contained in:
parent
8c99019476
commit
28e0cd8f94
|
@ -435,7 +435,9 @@ SASS_PROCESSOR_INCLUDE_DIRS = [
|
||||||
SASS_PROCESSOR_ENABLED = True
|
SASS_PROCESSOR_ENABLED = True
|
||||||
SASS_PROCESSOR_AUTO_INCLUDE = True
|
SASS_PROCESSOR_AUTO_INCLUDE = True
|
||||||
|
|
||||||
|
EMAIL_NOTIFY = True
|
||||||
EMAIL_SUPPORT = 'support@maidstone-hackspace.org.uk'
|
EMAIL_SUPPORT = 'support@maidstone-hackspace.org.uk'
|
||||||
|
EMAIL_MAILING_LIST = 'maidstone-hackspace@googlegroups.com'
|
||||||
|
|
||||||
REST_FRAMEWORK = {
|
REST_FRAMEWORK = {
|
||||||
'DEFAULT_FILTER_BACKENDS': (
|
'DEFAULT_FILTER_BACKENDS': (
|
||||||
|
@ -466,4 +468,4 @@ CORS_ORIGIN_WHITELIST = (
|
||||||
MATRIX_USER=env('MATRIX_USERNAME')
|
MATRIX_USER=env('MATRIX_USERNAME')
|
||||||
MATRIX_PASSWORD=env('MATRIX_PASSWORD')
|
MATRIX_PASSWORD=env('MATRIX_PASSWORD')
|
||||||
MATRIX_ROOM=env('MATRIX_ROOM')
|
MATRIX_ROOM=env('MATRIX_ROOM')
|
||||||
MSG_PREFIX = '[MH]'
|
MSG_PREFIX = 'MH'
|
||||||
|
|
|
@ -31,6 +31,7 @@ SECRET_KEY = env('DJANGO_SECRET_KEY', default='wq)sg12k&5&adv)e%56n5e97o@))6xu90
|
||||||
EMAIL_PORT = 1025
|
EMAIL_PORT = 1025
|
||||||
|
|
||||||
EMAIL_HOST = env("EMAIL_HOST", default='mailhog')
|
EMAIL_HOST = env("EMAIL_HOST", default='mailhog')
|
||||||
|
MSG_PREFIX = 'MHT'
|
||||||
|
|
||||||
|
|
||||||
# CACHING
|
# CACHING
|
||||||
|
|
|
@ -113,6 +113,7 @@ EMAIL_HOST = 'smtp.gmail.com'
|
||||||
EMAIL_HOST_PASSWORD = env('EMAIL_PASSWORD')
|
EMAIL_HOST_PASSWORD = env('EMAIL_PASSWORD')
|
||||||
EMAIL_HOST_USER = env('EMAIL_USER')
|
EMAIL_HOST_USER = env('EMAIL_USER')
|
||||||
EMAIL_PORT = 587
|
EMAIL_PORT = 587
|
||||||
|
EMAIL_NOTIFY = False
|
||||||
|
|
||||||
# Anymail with Mailgun
|
# Anymail with Mailgun
|
||||||
#INSTALLED_APPS += ("anymail", )
|
#INSTALLED_APPS += ("anymail", )
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals, absolute_import
|
from __future__ import unicode_literals, absolute_import
|
||||||
from django.contrib.sites.models import Site
|
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.conf import settings
|
||||||
|
from django.contrib.sites.models import Site
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from stdimage.models import StdImageField
|
from stdimage.models import StdImageField
|
||||||
from stdimage.utils import UploadToAutoSlugClassNameDir
|
from stdimage.utils import UploadToAutoSlugClassNameDir
|
||||||
from stdimage.validators import MinSizeValidator
|
from stdimage.validators import MinSizeValidator
|
||||||
|
|
||||||
from spirit.comment.models import Comment
|
from spirit.comment.models import Comment
|
||||||
|
from spirit.topic.models import Topic
|
||||||
from wiki.models.article import ArticleRevision
|
from wiki.models.article import ArticleRevision
|
||||||
# from django.contrib.auth.models import User
|
# from django.contrib.auth.models import User
|
||||||
from django.core.mail import EmailMessage
|
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}
|
addresses = {comment.user.email for comment in comments}
|
||||||
for user_email in addresses:
|
for user_email in addresses:
|
||||||
email = EmailMessage(
|
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(),
|
'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',
|
'no-reply@maidstone-hackspace.org.uk',
|
||||||
to=[user_email],
|
to=[user_email],
|
||||||
|
@ -80,5 +81,19 @@ def wiki_article_updated(sender, instance, **kwargs):
|
||||||
instance.article.get_absolute_url()))
|
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(wiki_article_updated, sender=ArticleRevision)
|
||||||
post_save.connect(send_topic_update_email, sender=Comment)
|
post_save.connect(send_topic_update_email, sender=Comment)
|
||||||
|
post_save.connect(send_new_topic_notification, sender=Topic)
|
||||||
|
|
|
@ -8,6 +8,7 @@ from mhackspace.feeds.helper import import_feeds
|
||||||
def update_homepage_feeds():
|
def update_homepage_feeds():
|
||||||
return import_feeds()
|
return import_feeds()
|
||||||
|
|
||||||
|
|
||||||
matrix_url = "https://matrix.org/_matrix/client/r0"
|
matrix_url = "https://matrix.org/_matrix/client/r0"
|
||||||
matrix_login_url = matrix_url + "/login"
|
matrix_login_url = matrix_url + "/login"
|
||||||
matrix_join_room_alias_url = matrix_url + "/join/{room}?access_token={access_token}"
|
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}"
|
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
|
@shared_task
|
||||||
def matrix_message(message):
|
def matrix_message(message):
|
||||||
# we dont rely on theses, so ignore if it goes wrong
|
# we dont rely on theses, so ignore if it goes wrong
|
||||||
# TODO at least log that something has gone wrong
|
# TODO at least log that something has gone wrong
|
||||||
try:
|
try:
|
||||||
# login
|
# login
|
||||||
details = {
|
details = {
|
||||||
"type":"m.login.password",
|
"type":"m.login.password",
|
||||||
|
@ -42,9 +59,8 @@ def matrix_message(message):
|
||||||
url = matrix_send_msg_url.format(**url_params)
|
url = matrix_send_msg_url.format(**url_params)
|
||||||
details = {
|
details = {
|
||||||
"msgtype": "m.text",
|
"msgtype": "m.text",
|
||||||
"body": "%s %s" % (settings.MSG_PREFIX, message)}
|
"body": "[%s] %s" % (settings.MSG_PREFIX, message)}
|
||||||
r2 = requests.post(url, json=details)
|
r2 = requests.post(url, json=details)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ class UserRequests(models.Model):
|
||||||
|
|
||||||
|
|
||||||
def send_topic_update_email(sender, instance, **kwargs):
|
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)
|
post_save.connect(send_topic_update_email, sender=UserRequests)
|
||||||
|
|
|
@ -31,10 +31,13 @@
|
||||||
<link href="{% sass_src 'sass/project.scss' %}" rel="stylesheet">
|
<link href="{% sass_src 'sass/project.scss' %}" rel="stylesheet">
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
{% block head-open-graph %}
|
||||||
<meta property="og:title" content="Maidstone Hackspace" />
|
<meta property="og:title" content="Maidstone Hackspace" />
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:url" content="{{ request.build_absolute_uri }}" />
|
<meta property="og:url" content="{{ request.build_absolute_uri }}" />
|
||||||
<meta property="og:image" content="https://maidstone-hackspace.org.uk/static/images/android-chrome-192x192.png" />
|
<meta property="og:image" content="https://maidstone-hackspace.org.uk/static/images/android-chrome-192x192.png" />
|
||||||
|
{% endblock head-open-graph %}
|
||||||
|
|
||||||
{% block css %}{% endblock %}
|
{% block css %}{% endblock %}
|
||||||
|
|
||||||
|
@ -125,7 +128,10 @@
|
||||||
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
|
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
|
||||||
<a class="dropdown-item" href="{% url 'users:detail' request.user.username %}">{% trans "My Profile" %}</a>
|
<a class="dropdown-item" href="{% url 'users:detail' request.user.username %}">{% trans "My Profile" %}</a>
|
||||||
<a class="dropdown-item" href="{% url 'members' %}">Members</a>
|
<a class="dropdown-item" href="{% url 'members' %}">Members</a>
|
||||||
<a class="dropdown-item" href="{% url 'requests' %}">Equipment</a>
|
<a class="dropdown-item" href="{% url 'requests' %}">Requests</a>
|
||||||
|
{% if request.user.is_superuser %}
|
||||||
|
<a class="dropdown-item" href="{% url 'spirit:admin:index' %}">Forum Admin</a>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
|
|
@ -3,6 +3,14 @@
|
||||||
{% load crispy_forms_tags %}
|
{% load crispy_forms_tags %}
|
||||||
{% load recapture %}
|
{% load recapture %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block head-open-graph %}
|
||||||
|
<meta property="og:title" content="New request made" />
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:url" content="{{ request.build_absolute_uri }}" />
|
||||||
|
<meta property="og:image" content="https://maidstone-hackspace.org.uk/static/images/android-chrome-192x192.png" />
|
||||||
|
{% endblock head-open-graph %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Requests</h2>
|
<h2>Requests</h2>
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,13 @@
|
||||||
{% load static i18n %}
|
{% load static i18n %}
|
||||||
{% block title %}Members{% endblock %}
|
{% block title %}Members{% endblock %}
|
||||||
|
|
||||||
|
{% block head-open-graph %}
|
||||||
|
<meta property="og:title" content="{{ topic.title }}" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="{{ request.build_absolute_uri }}" />
|
||||||
|
<meta property="og:image" content="https://maidstone-hackspace.org.uk/static/images/android-chrome-192x192.png" />
|
||||||
|
{% endblock head-open-graph %}
|
||||||
|
|
||||||
{% block css %}
|
{% block css %}
|
||||||
<link rel="stylesheet" href="{% static 'spirit/stylesheets/styles.all.min.css' %}">
|
<link rel="stylesheet" href="{% static 'spirit/stylesheets/styles.all.min.css' %}">
|
||||||
<link href="{% sass_src 'sass/project.scss' %}" rel="stylesheet">
|
<link href="{% sass_src 'sass/project.scss' %}" rel="stylesheet">
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% load sekizai_tags i18n wiki_tags static %}
|
{% load sekizai_tags i18n wiki_tags static %}
|
||||||
|
|
||||||
|
{% block head-open-graph %}
|
||||||
|
<meta property="og:title" content="{{ article.current_revision.title }}" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="{{ request.build_absolute_uri }}" />
|
||||||
|
<meta property="og:image" content="https://maidstone-hackspace.org.uk/static/images/android-chrome-192x192.png" />
|
||||||
|
{% endblock head-open-graph %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% block wiki_body %}
|
{% block wiki_body %}
|
||||||
|
|
Loading…
Reference in New Issue