+
{% for notice in allnotice %}
{{ notice.notice_title }}
{{ notice.notice_text |linebreaks }}
@@ -17,4 +17,10 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
+
+
\ No newline at end of file
diff --git a/posts/templates/registration/login.html b/posts/templates/registration/login.html
new file mode 100644
index 0000000..b7288ae
--- /dev/null
+++ b/posts/templates/registration/login.html
@@ -0,0 +1,32 @@
+{% extends 'base.html' %}
+{% block title %}
+ Login
+{% endblock %}
+{% block content %}
+
+ {% if next %}
+ {% if user.is_authenticated %}
+
Your account doesn't have access to this page. To proceed,
+ please login with an account that has access.
+ {% else %}
+
Please login to see this page.
+ {% endif %}
+ {% endif %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/posts/urls.py b/posts/urls.py
index 7d52370..5577c70 100644
--- a/posts/urls.py
+++ b/posts/urls.py
@@ -8,5 +8,7 @@ urlpatterns = [
path('home', views.welcome_seite),
path('about', views.about_seite),
url(r'^new', views.new, name='new'),
- path('delete/
', views.delete, name ='delete')
+ path('delete/', views.delete, name ='delete'),
+ path('notices', views.notice_list),
+ path('notices/', views.notice_detail)
]
\ No newline at end of file
diff --git a/posts/views.py b/posts/views.py
index 9e5a7c5..8673b8e 100644
--- a/posts/views.py
+++ b/posts/views.py
@@ -1,11 +1,18 @@
-from django.http import HttpResponse
+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 rest_framework.parsers import JSONParser
from posts.forms import NoticeForm
from posts.models import Notice
# Create your views here.
+from posts.serializers import NoticeSerializer
+
+
def index(request):
notices = Notice.objects.all()
notices = notices.filter(pub_start__lte=timezone.now())
@@ -18,6 +25,8 @@ def welcome_seite(request):
def about_seite(request):
return render(request, 'posts/about.html')
+
+@login_required
def new(request):
if request.method == "POST":
form = NoticeForm(request.POST)
@@ -32,9 +41,48 @@ def new(request):
return render(request, 'posts/edit.html', context)
+@staff_member_required
def delete(request, deleteId = None):
if deleteId != None:
delNotice = Notice.objects.get(id=deleteId)
if delNotice != None:
delNotice.delete()
return redirect('index')
+
+@csrf_exempt
+def notice_list(request):
+ if request.method == 'GET':
+ notices = Notice.objects.all()
+ serializer = NoticeSerializer(notices, many=True)
+ return JsonResponse(serializer.data, safe=False)
+ elif request.method=='POST':
+ data = JSONParser().parse(request)
+ serializer = NoticeSerializer(data=data)
+ if serializer.is_valid():
+ serializer.save()
+ return JsonResponse(serializer.data, status=201)
+ return JsonResponse(serializer.errors, status=201)
+
+
+@csrf_exempt
+def notice_detail(request, id):
+ try:
+ notice= Notice.objects.get(id =id)
+ except Notice.DoesNotExist:
+ return HttpResponse(status=404)
+ if request.method =='GET':
+ serializer = NoticeSerializer(notice)
+ return JsonResponse(serializer.data)
+ elif request.method =='PUT':
+ data = JSONParser().parse(request)
+ serializer = NoticeSerializer(notice, data=data)
+ if serializer.is_valid():
+ serializer.save()
+ return JsonResponse(serializer.data)
+ return JsonResponse(serializer.errors, status=400)
+ elif request.method == 'DELETE':
+ notice.delete()
+ return HttpResponse(status=204)
+
+
+
diff --git a/templates/base.html b/templates/base.html
index c1d1357..583c120 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -11,21 +11,24 @@
+
+
+
{% block title %}First Django Application{% endblock %}
{% block nav %}
-
+
+
{% endblock %}