diff --git a/PR/routing.py b/PR/routing.py new file mode 100644 index 0000000..9bc9fe1 --- /dev/null +++ b/PR/routing.py @@ -0,0 +1,18 @@ +from channels.routing import ProtocolTypeRouter, URLRouter +from django.urls import re_path +from channels.routing import URLRouter +from channels.http import AsgiHandler +from channels.auth import AuthMiddlewareStack +import django_eventstream + +urlpatterns = [ + #idz lt. URL ein Eventstream auszuliefern + re_path(r'^events/', + AuthMiddlewareStack(URLRouter(django_eventstream.routing.urlpatterns)), + {'channels': ['notice']}), + #bei allen anderen Anfragen werden die Standart-Router verwendet + re_path(r'', AsgiHandler), +] +application = ProtocolTypeRouter({ + 'http': URLRouter(urlpatterns) +}) diff --git a/PR/settings.py b/PR/settings.py index fef5317..46b47a4 100644 --- a/PR/settings.py +++ b/PR/settings.py @@ -39,6 +39,8 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', + 'channels', + 'django_eventstream', ] MIDDLEWARE = [ @@ -49,6 +51,9 @@ MIDDLEWARE = [ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django_grip.GripMiddleware', + 'django.middleware.security.SecurityMiddleware', + ] ROOT_URLCONF = 'PR.urls' @@ -71,7 +76,7 @@ TEMPLATES = [ ] WSGI_APPLICATION = 'PR.wsgi.application' - +ASGI_APPLICATION = 'PR.routing.application' # Database # https://docs.djangoproject.com/en/2.2/ref/settings/#databases diff --git a/polls/urls.py b/polls/urls.py index 6086fad..df982bf 100644 --- a/polls/urls.py +++ b/polls/urls.py @@ -19,7 +19,7 @@ from django.urls import path from polls import views urlpatterns = [ - #path('', views.index , name='index'), + path('', views.index , name='index'), path('new', views.new, name='new'), #path('index',views.index, name='index'), path('notice',views.index, name = 'index'), diff --git a/polls/views.py b/polls/views.py index 9f6bc51..c0fdc6c 100644 --- a/polls/views.py +++ b/polls/views.py @@ -11,7 +11,20 @@ from polls.models import Notice from polls.serializers import NoticeSerializer from rest_framework.parsers import JSONParser #XXXX +from django.contrib.admin.views.decorators import staff_member_required +from django.contrib.auth.decorators import login_required +from django.http import HttpResponse, JsonResponse +from django.shortcuts import render, redirect +from django.utils import timezone +from django.views.decorators.csrf import csrf_exempt +from django_eventstream import send_event +from rest_framework.parsers import JSONParser +from polls.forms import NoticeForm +from polls.models import Notice + +# Create your views here. +from polls.serializers import NoticeSerializer # Create your views here. logger = None @@ -48,6 +61,8 @@ def new(request): pub_start= timezone.now(), pub_end=form.cleaned_data['end']) newNotice.save() + #Absetzen eines Events + send_event('notice', 'message', newNotice.id) return redirect('index') context = {'form': NoticeForm()} return render(request, 'polls/edit.html', context) @@ -103,3 +118,4 @@ def notice_detail(request, id): elif request.method == 'DELETE': notice.delete() return HttpResponse(status=204) + diff --git a/templates/base.html b/templates/base.html index 4c9a251..5779b98 100644 --- a/templates/base.html +++ b/templates/base.html @@ -4,6 +4,10 @@
+ + {% load static %} + + {# #} diff --git a/templates/polls/index.html b/templates/polls/index.html index 65f2d2f..1b19f16 100644 --- a/templates/polls/index.html +++ b/templates/polls/index.html @@ -1,6 +1,10 @@ {% extends "base.html" %} {% block content %} +