import os import platform import json from django.shortcuts import render, redirect, get_object_or_404 from django.utils import timezone from django.contrib.auth.decorators import login_required from .models import Worker, Project, Team, WorkLog from .forms import WorkLogForm def home(request): """Render the landing screen with dashboard stats.""" workers_count = Worker.objects.count() projects_count = Project.objects.count() teams_count = Team.objects.count() recent_logs = WorkLog.objects.order_by('-date')[:5] context = { "workers_count": workers_count, "projects_count": projects_count, "teams_count": teams_count, "recent_logs": recent_logs, "current_time": timezone.now(), } return render(request, "core/index.html", context) def log_attendance(request): if request.method == 'POST': form = WorkLogForm(request.POST, user=request.user) if form.is_valid(): work_log = form.save(commit=False) if request.user.is_authenticated: work_log.supervisor = request.user work_log.save() form.save_m2m() return redirect('home') else: form = WorkLogForm(user=request.user if request.user.is_authenticated else None) # Build team workers map for frontend JS teams_qs = Team.objects.filter(is_active=True) if request.user.is_authenticated and not request.user.is_superuser: teams_qs = teams_qs.filter(supervisor=request.user) team_workers_map = {} for team in teams_qs: # Get active workers for the team active_workers = team.workers.filter(is_active=True).values_list('id', flat=True) team_workers_map[team.id] = list(active_workers) context = { 'form': form, 'team_workers_json': json.dumps(team_workers_map) } return render(request, 'core/log_attendance.html', context) def work_log_list(request): logs = WorkLog.objects.all().order_by('-date') return render(request, 'core/work_log_list.html', {'logs': logs})