# blog/views.py
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.decorators import login_required
from .forms import PostForm
from .models import Post, PostReference

@staff_member_required
def create_post(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save()
            messages.success(request, "Post created successfully!")
            return redirect(post.get_absolute_url())
    else:
        form = PostForm()
    return render(request, 'blog/create_post.html', {'form': form})

@staff_member_required
def edit_post(request, slug):
    post = get_object_or_404(Post, slug=slug)
    if request.method == 'POST':
        form = PostForm(request.POST, instance=post)
        if form.is_valid():
            post = form.save()
            messages.success(request, "Post updated successfully!")
            return redirect(post.get_absolute_url())
    else:
        form = PostForm(instance=post)
    return render(request, 'blog/create_post.html', {'form': form, 'editing': True, 'post': post})


def home(request):
    posts = Post.objects.filter(is_public=True).order_by('-date')
    return render(request, 'index.html', {'posts': posts})

def post_detail(request, slug):
    post = Post.objects.get(slug=slug)
    sections = post.sections.all()
    references = PostReference.objects.filter(post=post).exclude(reference_title__startswith='Reference from')
    
    return render(request, 'blog/post_detail.html', {
        'post': post,
        'sections': sections,
        'references': references,
    })

def bookshelf(request):
    return render(request, 'bookshelf.html', {})

def quotes(request):
    return render(request, 'quotes.html', {})

def movies(request):
    return render(request, 'movies.html', {})

def sushi(request):
    return render(request, 'sushi.html', {})