2018-08-18 12:10:40 +02:00

126 lines
3.6 KiB
Python

from django.shortcuts import render, get_object_or_404
from django.utils import timezone
from .models import Post
from .forms import PostForm
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth import authenticate, login, logout
from django.db.models import Q
import logging
import mysite.settings
import operator
# Create your views here.
def navlogin(request):
log = logging.getLogger('medinf')
logout(request)
error = ""
if request.POST:
username = request.POST.get("username", "?")
password = request.POST.get("password", "?")
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect(mysite.settings.LOGIN_REDIRECT_URL)
else:
log.info("Inactive user {} tried to login".format(username))
error = "Ihre Benutzerkennung wurde deaktiviert."
else:
log.info("Login failed for {}".format(username))
error = "Benutzername oder Kennwort falsch."
context = {'error': error}
return render(request, 'index.html', context)
@login_required
def post_list(request):
posts = Post.objects.filter(
published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'post_list.html', {'posts': posts})
@login_required
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'post_detail.html', {'post': post})
@login_required
@staff_member_required
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'post_edit.html', {'form': form})
@login_required
@staff_member_required
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'post_edit.html', {'form': form})
@login_required
@staff_member_required
def post_draft_list(request):
posts = Post.objects.filter(
published_date__isnull=True).order_by('created_date')
return render(request, 'post_draft_list.html', {'posts': posts})
@login_required
@staff_member_required
def post_publish(request, pk):
post = get_object_or_404(Post, pk=pk)
post.publish()
return redirect('post_detail', pk=pk)
@login_required
@staff_member_required
def post_remove(request, pk):
post = get_object_or_404(Post, pk=pk)
post.delete()
return redirect('post_list')
@login_required
def student_page(request):
return render(request, 'student_page.html', {})
def blog_search_list_view(post_list, self):
result = super(post_list, self).get_queryset()
query = self.request.GET.get('q')
if query:
query_list = query.split()
result = result.filter(
reduce(operator.and_,
(Q(title__icontains=q) for q in query_list)) |
reduce(operator.and_,
(Q(content__icontains=q) for q in query_list))
)
return result