Creación de index.html y primera creación de la pagina principal

This commit is contained in:
adrigongv23 2026-05-23 13:09:59 +02:00
parent fd1c6250a4
commit 8d3205bf8f
9 changed files with 129 additions and 19 deletions

View file

@ -60,10 +60,11 @@ ROOT_URLCONF = 'gades_manager.urls'
TEMPLATES = [ TEMPLATES = [
{ {
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [], 'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': { 'OPTIONS': {
'context_processors': [ 'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request', 'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth', 'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',

View file

@ -16,20 +16,14 @@ Including another URLconf
""" """
from django.contrib import admin from django.contrib import admin
from django.urls import path from django.urls import path, include
from django.conf import settings from gestion import views # Importamos las vistas de la app donde guardaste la función
from django.conf.urls.static import static
# 1. IMPORTA TU VISTA NUEVA
from gestion import views as gestion_views
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
# 2. AÑADE ESTA RUTA (La cadena vacía '' significa "la página principal") # Ruta raíz: cuando entres a la web, cargará directamente nuestro Dashboard
path('', gestion_views.home, name='home'), path('', views.inicio, name='inicio'),
]
# Configuración de archivos (esto déjalo como estaba) # Tus otras rutas de aplicaciones...
if settings.DEBUG: ]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View file

@ -1,6 +1,14 @@
from django.shortcuts import render from django.shortcuts import render
from django.http import HttpResponse from django.contrib.auth.decorators import login_required
from temporadas.models import Temporada
def home(request): @login_required
# Esta función es la que decide qué mostrar cuando alguien entra a la web def inicio(request):
return HttpResponse("<h1>¡Bienvenido a la Plataforma de Gades! 🏎️💨</h1><p>Sistema de Telemetría y Gestión v1.0</p>") # Buscamos la temporada que configuraste como actual
temporada_activa = Temporada.objects.filter(actual=True).first()
context = {
'temporada_actual': temporada_activa
}
# Renderiza index.html, el cual hereda automáticamente de base.html
return render(request, 'index.html', context)

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View file

@ -0,0 +1,94 @@
{% extends 'base.html' %}
{% load static %}
{% block title %}Inicio | Gades Manager{% endblock title %}
{% block content %}
<div class="row mb-4">
<div class="col-12">
<div class="bg-dark text-white p-4 rounded-3 shadow-sm d-flex justify-content-between align-items-center flex-wrap" style="border-left: 5px solid #0d6efd;">
<div>
<h1 class="display-6 fw-bold mb-1">Bienvenido, {{ user.first_name }} {{ user.last_name }}</h1>
<p class="text-muted mb-0"> Panel de control de la plataforma de gestión interna.</p>
</div>
<div class="text-end mt-2 mt-md-0">
<span class="badge bg-primary fs-6 px-3 py-2 shadow-sm">
Temporada Activa: {% if temporada_actual %}{{ temporada_actual.nombre }}{% else %}Ninguna activa{% endif %}
</span>
</div>
</div>
</div>
</div>
<div class="row g-4">
{% if user.rol != 'directiva' %}
<div class="col-12 col-md-6 col-lg-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body d-flex flex-column p-4">
<h4 class="card-title fw-bold mb-3 text-dark">Mi Área Técnica</h4>
<p class="card-text text-secondary flex-grow-1">
Acceso directo al espacio de trabajo de tu departamento asignado. Permite consultar la documentación técnica interna, subir archivos y tramitar el buzón de compras.
</p>
<a href="#" class="btn btn-outline-primary w-100 mt-3 fw-bold">Acceder a mi Área</a>
</div>
</div>
</div>
{% endif %}
<div class="col-12 col-md-6 col-lg-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body d-flex flex-column p-4">
<h4 class="card-title fw-bold mb-3 text-dark">Pruebas y Telemetría</h4>
<p class="card-text text-secondary flex-grow-1">
Módulo destinado a la carga de registros de datos en formato CSV y al procesamiento de la telemetría del monoplaza para su posterior visualización gráfica.
</p>
<a href="#" class="btn btn-outline-primary w-100 mt-3 fw-bold">Ver Telemetría</a>
</div>
</div>
</div>
<div class="col-12 col-md-6 col-lg-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body d-flex flex-column p-4">
<h4 class="card-title fw-bold mb-3 text-dark">Miembros del Equipo</h4>
<p class="card-text text-secondary flex-grow-1">
Directorio completo del personal. Permite buscar integrantes del equipo, consultar correos de contacto corporativos y verificar la distribución por departamentos.
</p>
<a href="#" class="btn btn-outline-primary w-100 mt-3 fw-bold">Ver Directorio</a>
</div>
</div>
</div>
{% if user.rol == 'directiva' %}
<div class="col-12 col-md-6 col-lg-4">
<div class="card h-100 border-0 shadow-sm" style="border-top: 4px solid #ffc107;">
<div class="card-body d-flex flex-column p-4">
<h4 class="card-title fw-bold mb-3 text-dark">Contabilidad Global</h4>
<p class="card-text text-secondary flex-grow-1">
Panel financiero de supervisión económica. Permite auditar el presupuesto global de la temporada, autorizar facturas técnicas y registrar los flujos de caja.
</p>
<a href="#" class="btn btn-warning w-100 mt-3 fw-bold text-dark">Gestionar Finanzas</a>
</div>
</div>
</div>
<div class="col-12 col-md-6 col-lg-4">
<div class="card h-100 border-0 shadow-sm" style="border-top: 4px solid #ffc107;">
<div class="card-body d-flex flex-column p-4">
<h4 class="card-title fw-bold mb-3 text-dark">Administración del Sistema</h4>
<p class="card-text text-secondary flex-grow-1">
Módulo avanzado de configuración global. Habilita la edición de usuarios del sistema, la asignación de roles de seguridad y la creación de nuevas temporadas.
</p>
<a href="#" class="btn btn-warning w-100 mt-3 fw-bold text-dark">Panel de Control</a>
</div>
</div>
</div>
{% endif %}
</div>
{% endblock content %}

View file

@ -1,3 +1,16 @@
from django.shortcuts import render from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from temporadas.models import Temporada # Importamos tu modelo Temporada
# Create your views here. @login_required
def dashboard(request):
# Buscamos en la base de datos la temporada que tenga actual=True.
# Usamos .first() por seguridad para evitar errores si no hubiera ninguna creada todavía.
temporada_activa = Temporada.objects.filter(actual=True).first()
# Metemos los datos en el diccionario de contexto para mandarlos al HTML
context = {
'temporada_actual': temporada_activa
}
return render(request, 'index.html', context)