37123-vm/core/views.py
2025-12-22 19:50:44 +00:00

63 lines
2.1 KiB
Python

import os
import platform
from django import get_version as django_version
from django.shortcuts import render, redirect
from django.utils import timezone
from django.contrib.auth.decorators import login_required
from django.http import JsonResponse
from .forms import MoodEntryForm
from .models import MoodEntry
from django_pandas.io import read_frame
def home(request):
"""Render the home page with mood entries."""
context = {
'project_name': "PixelMinds",
}
if request.user.is_authenticated:
mood_entries = MoodEntry.objects.filter(user=request.user).order_by('-date_time')[:7]
context['mood_entries'] = mood_entries
return render(request, "core/index.html", context)
@login_required
def dashboard(request):
mood_entries = MoodEntry.objects.filter(user=request.user).order_by('date_time')
df = read_frame(mood_entries, fieldnames=['date_time', 'mood_score'])
df['date_time'] = df['date_time'].dt.strftime('%Y-%m-%d')
chart_data = df.to_json(orient='records')
return render(request, 'core/dashboard.html', {'chart_data': chart_data})
@login_required
def create_mood_entry(request):
if request.method == 'POST':
form = MoodEntryForm(request.POST)
if form.is_valid():
mood_entry = form.save(commit=False)
mood_entry.user = request.user
# Assign color based on mood score
mood_score = form.cleaned_data['mood_score']
if mood_score == 1:
mood_entry.color_code = '#FF0000' # Red
elif mood_score == 2:
mood_entry.color_code = '#FFC107' # Amber
elif mood_score == 3:
mood_entry.color_code = '#FFFF00' # Yellow
elif mood_score == 4:
mood_entry.color_code = '#4CAF50' # Green
elif mood_score == 5:
mood_entry.color_code = '#2196F3' # Blue
mood_entry.save()
form.save_m2m() # Save the many-to-many relationships
return redirect('core:index')
else:
form = MoodEntryForm()
return render(request, 'core/mood_entry_form.html', {'form': form})