Merge branch 'matrix'
This commit is contained in:
commit
031a85c9ab
|
@ -461,3 +461,8 @@ CORS_ORIGIN_WHITELIST = (
|
||||||
'vector.im',
|
'vector.im',
|
||||||
'riot.im'
|
'riot.im'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
MATRIX_USER=env('MATRIX_USERNAME')
|
||||||
|
MATRIX_PASSWORD=env('MATRIX_PASSWORD')
|
||||||
|
MATRIX_ROOM=env('MATRIX_ROOM')
|
||||||
|
MSG_PREFIX = '[MH]'
|
||||||
|
|
|
@ -17,7 +17,7 @@ from .common import * # noqa
|
||||||
# See: https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
|
# See: https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
|
||||||
# Raises ImproperlyConfigured exception if DJANGO_SECRET_KEY not in os.environ
|
# Raises ImproperlyConfigured exception if DJANGO_SECRET_KEY not in os.environ
|
||||||
SECRET_KEY = env('DJANGO_SECRET_KEY')
|
SECRET_KEY = env('DJANGO_SECRET_KEY')
|
||||||
|
SITE_ID = 2
|
||||||
|
|
||||||
# This ensures that Django will be able to detect a secure connection
|
# This ensures that Django will be able to detect a secure connection
|
||||||
# properly on Heroku.
|
# properly on Heroku.
|
||||||
|
|
|
@ -51,3 +51,7 @@ GOCARDLESS_APP_ID=demo
|
||||||
GOCARDLESS_APP_SECRET=demo
|
GOCARDLESS_APP_SECRET=demo
|
||||||
GOCARDLESS_ACCESS_TOKEN=demo
|
GOCARDLESS_ACCESS_TOKEN=demo
|
||||||
GOCARDLESS_MERCHANT_ID=demo
|
GOCARDLESS_MERCHANT_ID=demo
|
||||||
|
|
||||||
|
MATRIX_ROOM=fmCpNwqgIiuwATlcdw:matrix.org
|
||||||
|
MATRIX_USERNAME=mhackspace
|
||||||
|
MATRIX_PASSWORD=
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# -*- 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.utils import timezone
|
from django.utils import timezone
|
||||||
|
@ -8,9 +9,12 @@ 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 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
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
|
from mhackspace.base.tasks import matrix_message
|
||||||
|
|
||||||
|
|
||||||
class BannerImage(models.Model):
|
class BannerImage(models.Model):
|
||||||
url = models.URLField()
|
url = models.URLField()
|
||||||
|
@ -65,6 +69,16 @@ def send_topic_update_email(sender, instance, **kwargs):
|
||||||
to=[user_email],
|
to=[user_email],
|
||||||
headers={'Reply-To': 'no-reply@maidstone-hackspace.org.uk'})
|
headers={'Reply-To': 'no-reply@maidstone-hackspace.org.uk'})
|
||||||
email.send()
|
email.send()
|
||||||
|
matrix_message.delay('https://%s%s' % (
|
||||||
|
Site.objects.get_current().domain,
|
||||||
|
instance.topic.get_absolute_url()))
|
||||||
|
|
||||||
|
|
||||||
|
def wiki_article_updated(sender, instance, **kwargs):
|
||||||
|
matrix_message.delay('https://%s%s' % (
|
||||||
|
Site.objects.get_current().domain,
|
||||||
|
instance.article.get_absolute_url()))
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
|
@ -1,7 +1,50 @@
|
||||||
|
import requests
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
|
from django.conf import settings
|
||||||
from mhackspace.feeds.helper import import_feeds
|
from mhackspace.feeds.helper import import_feeds
|
||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def update_homepage_feeds():
|
def update_homepage_feeds():
|
||||||
return import_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}"
|
||||||
|
matrix_join_room_id_url = matrix_url + "rooms/%21{room}/join?access_token={access_token}"
|
||||||
|
matrix_send_msg_url = matrix_url + "/rooms/%21{room}/send/m.room.message?access_token={access_token}"
|
||||||
|
|
||||||
|
|
||||||
|
@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:
|
||||||
|
# login
|
||||||
|
details = {
|
||||||
|
"type":"m.login.password",
|
||||||
|
"user":settings.MATRIX_USER,
|
||||||
|
"password":settings.MATRIX_PASSWORD}
|
||||||
|
r0 = requests.post(matrix_login_url, json = details)
|
||||||
|
access_token = r0.json().get('access_token')
|
||||||
|
|
||||||
|
# join room by id
|
||||||
|
url_params = {
|
||||||
|
'room': settings.MATRIX_ROOM,
|
||||||
|
'access_token': access_token}
|
||||||
|
url = matrix_join_room_id_url.format(**url_params)
|
||||||
|
r1 = requests.post(url)
|
||||||
|
|
||||||
|
# send message
|
||||||
|
url_params = {
|
||||||
|
"room": settings.MATRIX_ROOM,
|
||||||
|
"access_token": access_token}
|
||||||
|
url = matrix_send_msg_url.format(**url_params)
|
||||||
|
details = {
|
||||||
|
"msgtype": "m.text",
|
||||||
|
"body": "%s %s" % (settings.MSG_PREFIX, message)}
|
||||||
|
r2 = requests.post(url, json=details)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.db import models
|
||||||
|
from django.contrib.admin import ModelAdmin
|
||||||
|
from draceditor.widgets import AdminDraceditorWidget
|
||||||
|
from draceditor.models import DraceditorField
|
||||||
|
|
||||||
|
from mhackspace.requests.models import UserRequests
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(UserRequests)
|
||||||
|
class RequestsAdmin(ModelAdmin):
|
||||||
|
list_display = ('title', 'description', 'created_date')
|
||||||
|
# list_filter = ('author', 'categories', 'members_only')
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from django.db.models.signals import post_save
|
||||||
|
from mhackspace.base.tasks import matrix_message
|
||||||
|
|
||||||
|
|
||||||
REQUEST_TYPES = (
|
REQUEST_TYPES = (
|
||||||
|
@ -40,3 +42,10 @@ class UserRequests(models.Model):
|
||||||
|
|
||||||
# class Meta:
|
# class Meta:
|
||||||
# ordering = ('created_date',)
|
# ordering = ('created_date',)
|
||||||
|
|
||||||
|
|
||||||
|
def send_topic_update_email(sender, instance, **kwargs):
|
||||||
|
matrix_message.delay('[MH] New Request - %s' % instance.title)
|
||||||
|
|
||||||
|
|
||||||
|
post_save.connect(send_topic_update_email, sender=UserRequests)
|
||||||
|
|
|
@ -30,12 +30,19 @@
|
||||||
|
|
||||||
<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 css %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block head-extra %}{% endblock head-extra %}
|
<meta property="og:title" content="Maidstone Hackspace" />
|
||||||
|
<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" />
|
||||||
|
|
||||||
|
{% block css %}{% endblock %}
|
||||||
|
|
||||||
|
{% block head-extra %}
|
||||||
|
{% endblock head-extra %}
|
||||||
|
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
i{
|
||||||
"@context": "http://schema.org",
|
"@context": "http://schema.org",
|
||||||
"@type": "Organization",
|
"@type": "Organization",
|
||||||
"name": "Maidstone Hackspace",
|
"name": "Maidstone Hackspace",
|
||||||
|
|
Loading…
Reference in New Issue