36347-vm/core/views.py
2025-11-27 08:45:23 +00:00

59 lines
2.2 KiB
Python

import os
import platform
from django import get_version as django_version
from django.contrib.auth import login
from django.contrib.auth.models import User
from django.contrib import messages
from django.shortcuts import render, redirect
from django.utils import timezone
from .models import MachineModel, SparePart, ServiceIntervention, TechnicianProfile
def index(request):
"""Render the landing screen with dashboard stats."""
host_name = request.get_host().lower()
agent_brand = "AppWizzy" if host_name == "appwizzy.com" else "Flatlogic"
now = timezone.now()
context = {
"project_name": "Nespresso Repair Assistant",
"agent_brand": agent_brand,
"django_version": django_version(),
"python_version": platform.python_version(),
"current_time": now,
"host_name": host_name,
"project_description": os.getenv("PROJECT_DESCRIPTION", "A guided tool for Nespresso machine repairs."),
"project_image_url": os.getenv("PROJECT_IMAGE_URL", ""),
"intervention_count": ServiceIntervention.objects.count(),
"spare_part_count": SparePart.objects.count(),
"machine_model_count": MachineModel.objects.count(),
"pending_interventions": ServiceIntervention.objects.filter(status='PENDING').count(),
}
return render(request, "core/index.html", context)
def article_detail(request):
return render(request, "core/article_detail.html")
def technician_login(request):
if request.method == 'POST':
technician_id = request.POST.get('technician')
pin = request.POST.get('pin')
try:
user = User.objects.get(id=technician_id, technician_profile__is_technician=True, is_active=True)
if user.technician_profile.pin == pin:
login(request, user)
return redirect('index')
else:
messages.error(request, 'PIN incorrecto.')
except User.DoesNotExist:
messages.error(request, 'Técnico no encontrado.')
return redirect('technician_login')
technicians = User.objects.filter(technician_profile__is_technician=True, is_active=True)
return render(request, 'core/technician_login.html', {'technicians': technicians})