zkt26/z1/diary/views.py
2026-04-01 06:53:48 +02:00

87 lines
3.1 KiB
Python

from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth import login
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages
from django.db.models import Q
from .models import Entry
@login_required
def entry_list(request):
query = request.GET.get('q', '')
mood = request.GET.get('mood', '')
entries = Entry.objects.filter(user=request.user)
if query:
entries = entries.filter(Q(title__icontains=query) | Q(content__icontains=query))
if mood:
entries = entries.filter(mood=mood)
return render(request, 'diary/entry_list.html', {
'entries': entries,
'query': query,
'mood_filter': mood,
'mood_choices': Entry.MOOD_CHOICES,
})
@login_required
def entry_detail(request, pk):
entry = get_object_or_404(Entry, pk=pk, user=request.user)
return render(request, 'diary/entry_detail.html', {'entry': entry})
@login_required
def entry_create(request):
if request.method == 'POST':
title = request.POST.get('title', '').strip()
content = request.POST.get('content', '').strip()
mood = request.POST.get('mood', 'calm')
if title and content:
Entry.objects.create(user=request.user, title=title, content=content, mood=mood)
messages.success(request, 'Entry created!')
return redirect('entry_list')
messages.error(request, 'Title and content are required.')
return render(request, 'diary/entry_form.html', {
'mood_choices': Entry.MOOD_CHOICES,
'action': 'Create',
})
@login_required
def entry_edit(request, pk):
entry = get_object_or_404(Entry, pk=pk, user=request.user)
if request.method == 'POST':
title = request.POST.get('title', '').strip()
content = request.POST.get('content', '').strip()
mood = request.POST.get('mood', 'calm')
if title and content:
entry.title = title
entry.content = content
entry.mood = mood
entry.save()
messages.success(request, 'Entry updated!')
return redirect('entry_detail', pk=pk)
messages.error(request, 'Title and content are required.')
return render(request, 'diary/entry_form.html', {
'entry': entry,
'mood_choices': Entry.MOOD_CHOICES,
'action': 'Edit',
})
@login_required
def entry_delete(request, pk):
entry = get_object_or_404(Entry, pk=pk, user=request.user)
if request.method == 'POST':
entry.delete()
messages.success(request, 'Entry deleted.')
return redirect('entry_list')
return render(request, 'diary/entry_confirm_delete.html', {'entry': entry})
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
messages.success(request, f'Welcome, {user.username}!')
return redirect('entry_list')
else:
form = UserCreationForm()
return render(request, 'diary/register.html', {'form': form})