@@ -39,6 +39,9 @@ INSTALLED_APPS = [ | |||
'django.contrib.staticfiles', | |||
'posts', | |||
'rest_framework', | |||
'channels', | |||
'django_eventstream', | |||
] | |||
MIDDLEWARE = [ | |||
@@ -49,6 +52,7 @@ MIDDLEWARE = [ | |||
'django.contrib.auth.middleware.AuthenticationMiddleware', | |||
'django.contrib.messages.middleware.MessageMiddleware', | |||
'django.middleware.clickjacking.XFrameOptionsMiddleware', | |||
'django_grip.GripMiddleware' | |||
] | |||
ROOT_URLCONF = 'news1.urls' | |||
@@ -71,6 +75,7 @@ TEMPLATES = [ | |||
] | |||
WSGI_APPLICATION = 'news1.wsgi.application' | |||
ASGI_APPLICATION = 'news1.routing.application' | |||
# Database |
@@ -3,6 +3,7 @@ | |||
<div class="container"> | |||
{% for notice in notices %} | |||
<h3> {{ notice.notice_title }}</h3> | |||
@@ -13,4 +14,13 @@ | |||
<p><a href="{% url 'new' %}" class="btn btn-info" role="button">Neue Nachricht</a></p> | |||
<p><a href="{% url 'logout' %}" class="btn btn-warning">Abmelden</a></p> | |||
{% endblock %} | |||
</div> | |||
<script> | |||
var es = new ReconnectingEventSource('/events/'); | |||
es.addEventListener('message',function(e) { | |||
console.log(e.data); location.reload();false | |||
}) | |||
</script> | |||
{% endblock %} |
@@ -1,6 +1,7 @@ | |||
from django.contrib.auth.decorators import login_required | |||
from django.shortcuts import render, redirect | |||
from django.views.decorators.csrf import csrf_exempt | |||
from django_eventstream import send_event | |||
from rest_framework.parsers import JSONParser | |||
from posts.forms import NoticeForm | |||
@@ -27,6 +28,7 @@ def new(request): | |||
pub_start=form.cleaned_data['start'], | |||
pub_end=form.cleaned_data['end']) | |||
newNotice.save() | |||
send_event('notice', 'message', newNotice.id) | |||
return redirect('index') | |||
context = {'form': NoticeForm()} | |||
return render(request, 'posts/edit.html', context) | |||
@@ -36,6 +38,7 @@ def delete(request, deleteId=None): | |||
delNotice= Notice.objects.get(id=deleteId) | |||
if delNotice!= None: | |||
delNotice.delete() | |||
send_event('notice', 'message', deleteId) | |||
return redirect('index') | |||
@csrf_exempt | |||
def notice_list(request): |
@@ -1,6 +1,9 @@ | |||
<!DOCTYPE html> | |||
<html lang="fr"> | |||
<head> | |||
{% load static %} | |||
<script src="{% static 'django_eventstream/eventsource.min.js' %}"></script> | |||
<script src="{% static 'django_eventstream/reconnecting-eventsource.js' %}"></script> | |||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> | |||
@@ -60,4 +63,4 @@ | |||
</section> | |||
<footer>© posts news1</footer> | |||
</body> | |||
</html> | |||
</html> |