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})