From 8af5a0bcf2719e42de984f697a5398cf5aba4186 Mon Sep 17 00:00:00 2001 From: Heimbs Date: Tue, 10 Dec 2019 14:48:03 +0100 Subject: [PATCH] Prak V9; Working on edit --- news/news/routing.py | 17 ++++++++++++++ news/news/settings.py | 5 +++++ news/posts/forms.py | 18 ++++++++++++++- news/posts/urls.py | 1 + news/posts/views.py | 40 +++++++++++++++++++++++++++++---- news/templates/base.html | 5 +++++ news/templates/posts/index.html | 11 ++++++++- 7 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 news/news/routing.py diff --git a/news/news/routing.py b/news/news/routing.py new file mode 100644 index 0000000..6e466ad --- /dev/null +++ b/news/news/routing.py @@ -0,0 +1,17 @@ +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 = [ + re_path(r'^events/', + AuthMiddlewareStack(URLRouter(django_eventstream.routing.urlpatterns)), + {'channels': ['notice']}), + re_path(r'', AsgiHandler), +] + +application = ProtocolTypeRouter({ + 'http': URLRouter(urlpatterns), +}) diff --git a/news/news/settings.py b/news/news/settings.py index 5f65550..8744e0a 100644 --- a/news/news/settings.py +++ b/news/news/settings.py @@ -39,6 +39,8 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'channels', + 'django_eventstream', ] MIDDLEWARE = [ @@ -49,6 +51,8 @@ MIDDLEWARE = [ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django_grip.GripMiddleware', + 'django.middleware.security.SecurityMiddleware', ] ROOT_URLCONF = 'news.urls' @@ -72,6 +76,7 @@ TEMPLATES = [ ] WSGI_APPLICATION = 'news.wsgi.application' +ASGI_APPLICATION = 'news.routing.application' # Database diff --git a/news/posts/forms.py b/news/posts/forms.py index b34b80b..8a85e3b 100644 --- a/news/posts/forms.py +++ b/news/posts/forms.py @@ -10,4 +10,20 @@ class NoticeForm(forms.Form): initial=datetime.date.today) end = forms.DateField(label='Bis', input_formats=date_formats, - initial=datetime.date.today) + initial=datetime.datetime.today() + datetime.timedelta(days=1)) + +class EditNoticeForm(forms.Form): + def __init__(self, *args, **kwargs): + self.title = forms.CharField(label='Titel', + max_length=80, + initial=kwargs.pop('notice_title')) + self.text = forms.CharField(label='Text', + max_length=400, + initial=kwargs.pop('notice_text')) + self.start = forms.DateField(label='Von', + initial=kwargs.pop('notice.pub_start'), + input_formats=NoticeForm.date_formats) + self.end = forms.DateField(label='Bis', + initial=kwargs.pop('pub_end'), + input_formats=NoticeForm.date_formats) + super(EditNoticeForm, self).__init__(*args, **kwargs) diff --git a/news/posts/urls.py b/news/posts/urls.py index 3b621f3..2048f50 100644 --- a/news/posts/urls.py +++ b/news/posts/urls.py @@ -5,6 +5,7 @@ urlpatterns = [ path('', views.index, name='posts'), path('new', views.new, name='new'), path('delete/', views.delete, name='delete'), + path('edit/', views.edit, name='edit'), path('notices/', views.notice_list), path('notices//', views.notice_detail), diff --git a/news/posts/views.py b/news/posts/views.py index 035cf5b..32bd43c 100644 --- a/news/posts/views.py +++ b/news/posts/views.py @@ -5,12 +5,13 @@ from django.http import HttpResponse, JsonResponse from django.utils import timezone from django.contrib import messages from django.views.decorators.csrf import csrf_exempt +from django_eventstream import send_event from rest_framework.renderers import JSONRenderer from rest_framework.parsers import JSONParser from .models import Notice -from .forms import NoticeForm +from .forms import NoticeForm, EditNoticeForm from .serializers import NoticeSerializer logger = None @@ -35,6 +36,7 @@ def index(request): } return render(request, 'posts/index.html', context) +#@login_required def new(request): if request.method == "POST": form = NoticeForm(request.POST) @@ -44,6 +46,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('posts') context = {'form' : NoticeForm()} @@ -58,9 +61,38 @@ def delete(request, deleteId=None): if delNotice: delNotice.delete() message = "Notice has been deleted." + send_event('notice', 'message', "Notice has been deleted.") return redirect('posts') - - + + +def edit(request, editId=None): + init_loger(__name__) + logger.debug(editId) + logger.debug(request.method) + editNotice = None + if editId: + editNotice = Notice.objects.get(id=editId) + logger.debug(editNotice) + if editNotice: + form = EditNoticeForm(editNotice) + #form.title = editNotice.notice_title + #form.notice_to_form(editNotice) + logger.info(form) + #if form.is_valid(): + # return HttpResponse(status=204) + context = {'form' : form} + return render(request, 'posts/edit.html', context) + +""" + newNotice = Notice(notice_title=form.cleaned_data['title'], + notice_text=form.cleaned_data['text'], + pub_start=form.cleaned_data['start'], + pub_end=form.cleaned_data['end']) + newNotice.save() + send_event('notice', 'message', newNotice.id) + return redirect('posts') +""" + @csrf_exempt def notice_list(request): if request.method == 'GET': @@ -98,4 +130,4 @@ def notice_detail(request, id): elif request.method == 'DELETE': notice.delete() - return HttpResponse(status=204) \ No newline at end of file + return HttpResponse(status=204) diff --git a/news/templates/base.html b/news/templates/base.html index c40c56f..6d26c11 100644 --- a/news/templates/base.html +++ b/news/templates/base.html @@ -7,6 +7,11 @@ + + {% load static %} + + + {% include 'navbar.html' %} diff --git a/news/templates/posts/index.html b/news/templates/posts/index.html index 7067d72..3a3e26e 100644 --- a/news/templates/posts/index.html +++ b/news/templates/posts/index.html @@ -5,6 +5,12 @@ Index {% endblock %} {% block content %} + + +

Your Posts

@@ -13,7 +19,10 @@ Index

{{ notice.notice_title }}

{{ notice.notice_text }}

-

Delete

+

+ Delete + Edit +

{% if message %}