diff --git a/www/Dockerfile b/www/Dockerfile index 4a487dd8b299de14b487f286673785acbbd9ca04..931f8d8419185cdfe31ab7d0a4f0b3bf3bca66dd 100644 --- a/www/Dockerfile +++ b/www/Dockerfile @@ -30,6 +30,7 @@ RUN pip3 install \ ldap3 \ uwsgi \ django-two-factor-auth \ + matterhook \ --upgrade RUN pip3 install git+https://github.com/nkunihiko/django-bootstrap3-datetimepicker.git diff --git a/www/conf/config.example.ini b/www/conf/config.example.ini index cf6b5691fca6db839723e20886c385832a809cee..48e8fad5bdb19943fd1f78ad72d3214967268712 100644 --- a/www/conf/config.example.ini +++ b/www/conf/config.example.ini @@ -5,6 +5,9 @@ DEBUG = true SECRET_KEY = '4m4c(_$ubwued9p-insp!950g&r0yu851bp287$2a3ydj^y=0=' PW_RESET_TOKEN_LIFETIME = 5 +[mattermost] +API_KEY = bohtwe6zy7y43p5n36skph7ejy + [ldap] LDAP_HOST = ldap LDAP_BIND_DN = cn=admin,dc=warpzone,dc=ms diff --git a/www/web/warpfood/views.py b/www/web/warpfood/views.py index 890692d74eff46f4628dadf5cd85e4e4013d47ff..7d6dadf43e4e0347b72c5d3d50b8a85677413dae 100644 --- a/www/web/warpfood/views.py +++ b/www/web/warpfood/views.py @@ -3,6 +3,8 @@ from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotAll from django.shortcuts import redirect from django.contrib.auth.decorators import login_required from warpfood.util import * +from warpzone.util import send_to_mattermost +from django.utils.translation import ugettext as _ from warpfood.models import * from reportlab.pdfgen import canvas from django.http import HttpResponse @@ -21,7 +23,8 @@ def index(request): if request.method == 'POST': form = FoodSheetForm(request.POST) if form.is_valid(): - form.save() + sheet = form.save() + send_to_mattermost("PizzaSheet", "town-square", _("pizza_sheet_opened_for_%(est_order_time)s_at_%(pizza_service)s") % ({'est_order_time': sheet.estimated_order_time, 'pizza_service':sheet.food_service})) time_threshold = datetime.now() - timedelta(days=1) FoodSheet.objects.filter(order_time__lte=time_threshold).delete() diff --git a/www/web/warpzone/settings.py b/www/web/warpzone/settings.py index f22beb6663d31fa6a54be94a71eb1ce8f1be89e4..6c9249ddb6a93afc85c4d462677e95e5974947a3 100644 --- a/www/web/warpzone/settings.py +++ b/www/web/warpzone/settings.py @@ -39,9 +39,15 @@ EMAIL_SUBJECT_PREFIX = config.get('email','SUBJECT_PREFIX') PW_RESET_TOKEN_LIFETIME = config.get('security','PW_RESET_TOKEN_LIFETIME') SECRET_KEY = config.get('security','SECRET_KEY') +# MATTERMOST +API_KEY = config.get('mattermost','API_KEY') + # DEBUG DEBUG = config.getboolean('debug','DEBUG') +# MISC +LOG_PATH = config.get('misc','LOG_PATH') + ALLOWED_HOSTS = [config.get('security','ALLOWED_HOSTS')] LOGIN_URL = 'two_factor:login' @@ -185,13 +191,29 @@ AUTH_LDAP_FIND_GROUP_PERMS = True AUTH_LDAP_CACHE_GROUPS = True AUTH_LDAP_GROUP_CACHE_TIMEOUT = 10 -logger = logging.getLogger('django_auth_ldap') -logger.addHandler(logging.StreamHandler()) -hdlr = logging.FileHandler('/tmp/ldap.log') -formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') -hdlr.setFormatter(formatter) -logger.addHandler(hdlr) -logger.setLevel(logging.DEBUG) +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'handlers': { + 'file': { + 'level': 'ERROR', + 'class': 'logging.FileHandler', + 'filename': LOG_PATH+'/error.log', + }, + }, + 'loggers': { + 'django': { + 'handlers': ['file'], + 'level': 'ERROR', + 'propagate': True, + }, + 'django_auth_ldap': { + 'handlers': ['file'], + 'level': 'ERROR', + 'propagate': True, + }, + }, +} STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, "static") diff --git a/www/web/warpzone/util.py b/www/web/warpzone/util.py index f56b7974c73ba917c3f9b15da6b6860e0a86caec..ee10da226c33e567e2e93ea0a717e401eb7e37d3 100644 --- a/www/web/warpzone/util.py +++ b/www/web/warpzone/util.py @@ -1,12 +1,27 @@ from django.core.mail import send_mail from django.conf import settings from django.utils.translation import ugettext as _ +from matterhook import Webhook +import logging page_context = {'pages': [ {"link": "pizza", "name": _("pizza_sheet")}, {"link": "about", "name": _("about")}, ], 'debug': settings.DEBUG} + + +def send_to_mattermost(username, channel, message): + try: + if settings.API_KEY: + hook = Webhook("https://mattermost.warpzone.ms", settings.API_KEY) + if settings.DEBUG: + username = "["+channel+"] "+username + channel = "warpinfradebug" + hook.send(message, channel=channel, username=username) + except Exception as e: + logging.getLogger("django").error(e) + def send_email(to_address, subject, content): try: send_mail(