From 0e0c8d7d1b9818ca7f32b6a83605eae50b22d730 Mon Sep 17 00:00:00 2001 From: adrigongv23 Date: Tue, 17 Feb 2026 13:39:49 +0100 Subject: [PATCH] Inicio del Django y base de datos --- Escritorio_Boxes/diseño.py | 28 ++-- Escritorio_Boxes/monitor.py | 103 +++++++------- Plataform_Web/documentos/__init__.py | 0 .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 169 bytes .../__pycache__/admin.cpython-314.pyc | Bin 0 -> 1187 bytes .../__pycache__/apps.cpython-314.pyc | Bin 0 -> 477 bytes .../__pycache__/models.cpython-314.pyc | Bin 0 -> 3068 bytes Plataform_Web/documentos/admin.py | 14 ++ Plataform_Web/documentos/apps.py | 5 + .../documentos/migrations/0001_initial.py | 37 +++++ .../documentos/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-314.pyc | Bin 0 -> 2814 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 180 bytes Plataform_Web/documentos/models.py | 59 ++++++++ Plataform_Web/documentos/tests.py | 3 + Plataform_Web/documentos/views.py | 3 + Plataform_Web/gades_manager/__init__.py | 0 .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 172 bytes .../__pycache__/settings.cpython-314.pyc | Bin 0 -> 2788 bytes .../__pycache__/urls.cpython-314.pyc | Bin 0 -> 1482 bytes .../__pycache__/wsgi.cpython-314.pyc | Bin 0 -> 667 bytes Plataform_Web/gades_manager/asgi.py | 16 +++ Plataform_Web/gades_manager/settings.py | 130 ++++++++++++++++++ Plataform_Web/gades_manager/urls.py | 35 +++++ Plataform_Web/gades_manager/wsgi.py | 16 +++ Plataform_Web/gestion/__init__.py | 0 .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 166 bytes .../gestion/__pycache__/views.cpython-314.pyc | Bin 0 -> 515 bytes Plataform_Web/gestion/admin.py | 3 + Plataform_Web/gestion/apps.py | 5 + Plataform_Web/gestion/migrations/__init__.py | 0 Plataform_Web/gestion/models.py | 3 + Plataform_Web/gestion/tests.py | 3 + Plataform_Web/gestion/views.py | 6 + Plataform_Web/manage.py | 22 +++ .../media/ingenieria_docs/PruebaTest1.png | Bin 0 -> 120904 bytes Plataform_Web/temporadas/__init__.py | 0 .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 169 bytes .../__pycache__/admin.cpython-314.pyc | Bin 0 -> 747 bytes .../__pycache__/apps.cpython-314.pyc | Bin 0 -> 477 bytes .../__pycache__/models.cpython-314.pyc | Bin 0 -> 2013 bytes Plataform_Web/temporadas/admin.py | 13 ++ Plataform_Web/temporadas/apps.py | 5 + .../temporadas/migrations/0001_initial.py | 30 ++++ .../temporadas/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-314.pyc | Bin 0 -> 1465 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 180 bytes Plataform_Web/temporadas/models.py | 30 ++++ Plataform_Web/temporadas/tests.py | 3 + Plataform_Web/temporadas/views.py | 3 + Plataform_Web/users/__init__.py | 0 .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 164 bytes .../users/__pycache__/admin.cpython-314.pyc | Bin 0 -> 925 bytes .../users/__pycache__/apps.cpython-314.pyc | Bin 0 -> 462 bytes .../users/__pycache__/models.cpython-314.pyc | Bin 0 -> 1570 bytes Plataform_Web/users/admin.py | 18 +++ Plataform_Web/users/apps.py | 5 + .../users/migrations/0001_initial.py | 46 +++++++ ...muser_especialidad_alter_customuser_rol.py | 23 ++++ Plataform_Web/users/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-314.pyc | Bin 0 -> 4194 bytes ...lidad_alter_customuser_rol.cpython-314.pyc | Bin 0 -> 1441 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 175 bytes Plataform_Web/users/models.py | 43 ++++++ Plataform_Web/users/tests.py | 3 + Plataform_Web/users/views.py | 3 + 66 files changed, 647 insertions(+), 69 deletions(-) create mode 100644 Plataform_Web/documentos/__init__.py create mode 100644 Plataform_Web/documentos/__pycache__/__init__.cpython-314.pyc create mode 100644 Plataform_Web/documentos/__pycache__/admin.cpython-314.pyc create mode 100644 Plataform_Web/documentos/__pycache__/apps.cpython-314.pyc create mode 100644 Plataform_Web/documentos/__pycache__/models.cpython-314.pyc create mode 100644 Plataform_Web/documentos/admin.py create mode 100644 Plataform_Web/documentos/apps.py create mode 100644 Plataform_Web/documentos/migrations/0001_initial.py create mode 100644 Plataform_Web/documentos/migrations/__init__.py create mode 100644 Plataform_Web/documentos/migrations/__pycache__/0001_initial.cpython-314.pyc create mode 100644 Plataform_Web/documentos/migrations/__pycache__/__init__.cpython-314.pyc create mode 100644 Plataform_Web/documentos/models.py create mode 100644 Plataform_Web/documentos/tests.py create mode 100644 Plataform_Web/documentos/views.py create mode 100644 Plataform_Web/gades_manager/__init__.py create mode 100644 Plataform_Web/gades_manager/__pycache__/__init__.cpython-314.pyc create mode 100644 Plataform_Web/gades_manager/__pycache__/settings.cpython-314.pyc create mode 100644 Plataform_Web/gades_manager/__pycache__/urls.cpython-314.pyc create mode 100644 Plataform_Web/gades_manager/__pycache__/wsgi.cpython-314.pyc create mode 100644 Plataform_Web/gades_manager/asgi.py create mode 100644 Plataform_Web/gades_manager/settings.py create mode 100644 Plataform_Web/gades_manager/urls.py create mode 100644 Plataform_Web/gades_manager/wsgi.py create mode 100644 Plataform_Web/gestion/__init__.py create mode 100644 Plataform_Web/gestion/__pycache__/__init__.cpython-314.pyc create mode 100644 Plataform_Web/gestion/__pycache__/views.cpython-314.pyc create mode 100644 Plataform_Web/gestion/admin.py create mode 100644 Plataform_Web/gestion/apps.py create mode 100644 Plataform_Web/gestion/migrations/__init__.py create mode 100644 Plataform_Web/gestion/models.py create mode 100644 Plataform_Web/gestion/tests.py create mode 100644 Plataform_Web/gestion/views.py create mode 100644 Plataform_Web/manage.py create mode 100644 Plataform_Web/media/ingenieria_docs/PruebaTest1.png create mode 100644 Plataform_Web/temporadas/__init__.py create mode 100644 Plataform_Web/temporadas/__pycache__/__init__.cpython-314.pyc create mode 100644 Plataform_Web/temporadas/__pycache__/admin.cpython-314.pyc create mode 100644 Plataform_Web/temporadas/__pycache__/apps.cpython-314.pyc create mode 100644 Plataform_Web/temporadas/__pycache__/models.cpython-314.pyc create mode 100644 Plataform_Web/temporadas/admin.py create mode 100644 Plataform_Web/temporadas/apps.py create mode 100644 Plataform_Web/temporadas/migrations/0001_initial.py create mode 100644 Plataform_Web/temporadas/migrations/__init__.py create mode 100644 Plataform_Web/temporadas/migrations/__pycache__/0001_initial.cpython-314.pyc create mode 100644 Plataform_Web/temporadas/migrations/__pycache__/__init__.cpython-314.pyc create mode 100644 Plataform_Web/temporadas/models.py create mode 100644 Plataform_Web/temporadas/tests.py create mode 100644 Plataform_Web/temporadas/views.py create mode 100644 Plataform_Web/users/__init__.py create mode 100644 Plataform_Web/users/__pycache__/__init__.cpython-314.pyc create mode 100644 Plataform_Web/users/__pycache__/admin.cpython-314.pyc create mode 100644 Plataform_Web/users/__pycache__/apps.cpython-314.pyc create mode 100644 Plataform_Web/users/__pycache__/models.cpython-314.pyc create mode 100644 Plataform_Web/users/admin.py create mode 100644 Plataform_Web/users/apps.py create mode 100644 Plataform_Web/users/migrations/0001_initial.py create mode 100644 Plataform_Web/users/migrations/0002_alter_customuser_especialidad_alter_customuser_rol.py create mode 100644 Plataform_Web/users/migrations/__init__.py create mode 100644 Plataform_Web/users/migrations/__pycache__/0001_initial.cpython-314.pyc create mode 100644 Plataform_Web/users/migrations/__pycache__/0002_alter_customuser_especialidad_alter_customuser_rol.cpython-314.pyc create mode 100644 Plataform_Web/users/migrations/__pycache__/__init__.cpython-314.pyc create mode 100644 Plataform_Web/users/models.py create mode 100644 Plataform_Web/users/tests.py create mode 100644 Plataform_Web/users/views.py diff --git a/Escritorio_Boxes/diseño.py b/Escritorio_Boxes/diseño.py index 094772d..9d97477 100644 --- a/Escritorio_Boxes/diseño.py +++ b/Escritorio_Boxes/diseño.py @@ -2,34 +2,28 @@ import socket import time import math import random -from datetime import datetime # <--- IMPORTANTE: Nueva librería -UDP_IP = "127.0.0.1" +# --- CONFIGURACIÓN --- +UDP_IP = "127.0.0.1" UDP_PORT = 4210 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) -print("TELEMETRÍA SIMULADA - ENVÍO DE DATOS") -print(" Formato: ECT | RPM | BATT | SPEED | HH:MM:SS") +print(f"--- SIMULADOR DE COCHE G26 ---") +print(f"Enviando datos falsos a {UDP_IP}:{UDP_PORT}") t = 0 while True: - # Generación de datos (Igual que antes) - ect = 85 + (5 * math.sin(t / 5.0)) + random.uniform(-0.2, 0.2) - rpm = 3000 + (1000 * math.sin(t / 2.0)) - batt = 13.8 + random.uniform(-0.1, 0.1) - speed = 90 + (30 * math.sin(t / 3.0)) + # Generar una temperatura que sube y baja mucho para probar todos los colores + # Oscilará entre 40ºC y 120ºC + ect = 80 + (40 * math.sin(t / 10.0)) + random.uniform(-0.5, 0.5) - # --- CAMBIO AQUÍ: OBTENER HORA REAL --- - # Obtenemos hora actual y la convertimos a texto - hora_real = datetime.now().strftime("%H:%M:%S.%f")[:-3] # Hora con milisegundos - - # Mensaje con la hora legible al final - mensaje = f"{ect:.2f}|{int(rpm)}|{batt:.2f}|{int(speed)}|{hora_real}" + # Enviar solo el número + mensaje = f"{ect:.2f}" sock.sendto(mensaje.encode(), (UDP_IP, UDP_PORT)) - print(f"TX: {mensaje}") + print(f"Simulando: {mensaje} °C") t += 0.1 - time.sleep(0.002) \ No newline at end of file + time.sleep(0.05) \ No newline at end of file diff --git a/Escritorio_Boxes/monitor.py b/Escritorio_Boxes/monitor.py index b78278d..920d7c6 100644 --- a/Escritorio_Boxes/monitor.py +++ b/Escritorio_Boxes/monitor.py @@ -2,91 +2,90 @@ import socket import matplotlib.pyplot as plt import matplotlib.animation as animation from collections import deque +from datetime import datetime # --- CONFIGURACIÓN --- -UDP_IP = "0.0.0.0" -UDP_PORT = 4210 -MAX_PUNTOS = 150 +UDP_IP = "0.0.0.0" # Escuchamos en Todas las interfaces posibles (WiFi, Ethernet...) +UDP_PORT = 4210 # Mismo puerto que usamos para la ESP32 +MAX_PUNTOS = 200 # Vamos a mostrar en la gráfica los últimos 200 datos +# Cola de datos data_ect = deque([0]*MAX_PUNTOS, maxlen=MAX_PUNTOS) -data_rpm = deque([0]*MAX_PUNTOS, maxlen=MAX_PUNTOS) -data_bat = deque([0]*MAX_PUNTOS, maxlen=MAX_PUNTOS) -data_spd = deque([0]*MAX_PUNTOS, maxlen=MAX_PUNTOS) +#Ocultamos estos valores ya que por el momento únicamente vamos a trabajar con la temperatura +#data_rpm = deque([0]*MAX_PUNTOS, maxlen=MAX_PUNTOS) +#data_bat = deque([0]*MAX_PUNTOS, maxlen=MAX_PUNTOS) + +# Configuración del socket UDP sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((UDP_IP, UDP_PORT)) sock.setblocking(False) # --- DISEÑO GRÁFICO --- plt.style.use('dark_background') -fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, 1, sharex=True, figsize=(8, 10)) +fig, ax1 = plt.subplots(figsize=(10, 6)) # Usaremos una única ventana grande # Título principal + RELOJ +fig.canvas.manager.set_window_title('G26 Telemetry - Monitor de Temperatura') fig.suptitle('GADES TELEMETRY SYSTEM', fontsize=16, fontweight='bold', color='white') -# Creamos un texto vacío arriba a la derecha para la hora -texto_reloj = fig.text(0.85, 0.97, "--:--:--", fontsize=12, color='cyan', ha='center', fontweight='bold') -def setup_plot(ax, color, label, y_min, y_max): - line, = ax.plot([], [], color=color, lw=2) - ax.set_ylabel(label) - ax.set_ylim(y_min, y_max) - ax.grid(True, alpha=0.3, linestyle='--') - props = dict(boxstyle='round', facecolor='black', alpha=0.7, edgecolor=color) - text = ax.text(0.03, 0.85, '', transform=ax.transAxes, - fontsize=14, color=color, fontweight='bold', bbox=props) - return line, text +# Reloj en la esquina superior derecha +txt_reloj = fig.text(0.85, 0.95, '--:--:--', fontsize=12, color='white', fontweight='bold') -line_ect, txt_ect = setup_plot(ax1, '#ff3333', 'ECT (°C)', 50, 110) -line_rpm, txt_rpm = setup_plot(ax2, '#ffff33', 'RPM', 0, 5000) -line_bat, txt_bat = setup_plot(ax3, '#33ffff', 'BATT (V)', 12, 15) -line_spd, txt_spd = setup_plot(ax4, '#33ff33', 'SPEED', 0, 140) +# Configuración de la línea (empieza en blanco pero cambiará) +line_ect, = ax1.plot([], [], color='white', lw=3) +ax1.set_ylabel('Temperatura (°C)', fontsize=14) +ax1.set_ylim(0, 130) # Rango de temperatura (0 a 130 grados) +ax1.grid(True, alpha=0.3, linestyle='--') + +# Caja de texto con el valor actual +props = dict(boxstyle='round', facecolor='black', alpha=0.8, edgecolor='white') +txt_ect = ax1.text(0.02, 0.90, 'ESPERANDO...', transform=ax1.transAxes, + fontsize=16, color='white', fontweight='bold', bbox=props) + +def get_color(temp): + if temp > 105: + return '#ff3333' # ROJO (Peligro) + elif temp >= 95: + return '#ffff33' # AMARILLO (Precaución) + elif temp >= 65: + return '#33ff33' # VERDE (Ok) + else: + return '#33ffff' # AZUL (Frío) def update(frame): + # 1. Actualizar el Reloj con la hora del PC + ahora = datetime.now().strftime("%H:%M:%S") + txt_reloj.set_text(f"HORA: {ahora}") try: while True: data, addr = sock.recvfrom(1024) msg = data.decode('utf-8') - partes = msg.split('|') + # partes = msg.split('|') - # Extraer valores numéricos - val_ect = float(partes[0]) - val_rpm = float(partes[1]) - val_bat = float(partes[2]) - val_spd = float(partes[3]) + try: + val_ect = float(msg) # Convertimos texto a número + + data_ect.append(val_ect) # Guardamos el dato + color_actual = get_color(val_ect) # Para que el valor cambie de color segun la temepratura + + txt_ect.set_text(f"TEMP: {val_ect: .1f} °C") + txt_ect.set_color(color_actual) - # --- EXTRAER LA HORA (Es el elemento 4) --- - val_time = partes[4] - - # Guardar datos - data_ect.append(val_ect) - data_rpm.append(val_rpm) - data_bat.append(val_bat) - data_spd.append(val_spd) - - # Actualizar textos gráficas - txt_ect.set_text(f"TEMP: {val_ect:.1f} °C") - txt_rpm.set_text(f"RPM: {int(val_rpm)}") - txt_bat.set_text(f"BATT: {val_bat:.2f} V") - txt_spd.set_text(f"VEL: {int(val_spd)} Km/h") - - # --- ACTUALIZAR EL RELOJ DE ARRIBA --- - texto_reloj.set_text(f"{val_time}") + except ValueError: + print(f"Error de formato: {msg}") except BlockingIOError: pass except Exception as e: print(f"Error: {e}") + # Actualizamos la línea gráfica x_range = range(len(data_ect)) line_ect.set_data(x_range, data_ect) - line_rpm.set_data(x_range, data_rpm) - line_bat.set_data(x_range, data_bat) - line_spd.set_data(x_range, data_spd) + ax1.set_xlim(0, max(len(data_ect), 1)) - ax1.set_xlim(0, len(data_ect)) - - return line_ect, line_rpm, line_bat, line_spd, txt_ect, txt_rpm, txt_bat, txt_spd, texto_reloj + return line_ect, txt_ect, txt_reloj -plt.tight_layout(rect=[0, 0, 1, 0.96]) # Dejar hueco arriba para el reloj ani = animation.FuncAnimation(fig, update, interval=20, blit=False, cache_frame_data=False) plt.show() \ No newline at end of file diff --git a/Plataform_Web/documentos/__init__.py b/Plataform_Web/documentos/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plataform_Web/documentos/__pycache__/__init__.cpython-314.pyc b/Plataform_Web/documentos/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b85ee5fa202e203d573434bc89bba3c9cda51f10 GIT binary patch literal 169 zcmdPq`mJOrVq#!m_zaS~<>qV^ z6Iz^FR2-9-Qk0n<<8EXYACj7rnwwful$jVG;^rO`kds)Fn3i9Z8y}vU6qAylT$-Dj ySCU^G6Ca2KczG$)vkz@fq?;JaWRPTiJ6g+v51+0fdK$GxGARq literal 0 HcmV?d00001 diff --git a/Plataform_Web/documentos/__pycache__/admin.cpython-314.pyc b/Plataform_Web/documentos/__pycache__/admin.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c50c4acd33b8d644e8b41ebb171efa8a00a67cb1 GIT binary patch literal 1187 zcmdPqm?10^2*pss7R0K| zpvm?U#MflJ#hRFso0+G{c#G2|Ke;qFHLoN;86*Y6Oi;#WI|c@ZM21Ah28LLM62>5g z5~eto5@s=me8wQ=5|$vA64oHr61Fe~W5ysxafTd@680db5{@v&63#FNYsL~Tkfpcy z;FdUotW9Qxnhv5sLBhv4J6sDF7snhSj0`bRh-?8HO;%0GJD*;vg!F z31kL{#lR550-+fgf?2~D5_lOH!iB<3OrWCj3_%Ra44RC7nk=`tic6C+Q}W{r@{4Y< zloqEJ-C`{+El4f8#Z{bGmKvX%pOTuR$##pSI5j8j7JE@@VQFe{$t~vmq^w&kY57ID zx7d<167$kiZ*j)QC+8#<7stmJgFK}M0u8sEovmU*i&Kk=V-iz}GSg$+jm+XhQgc#s zQ%j066XQeN++zZA5=#<6M#YDxCdH({A_Sx(H#1MKpt6XYfq~(cBx)$?A)E)2E>>e; zVEEC%aD!i{zplToqwa>R%KVs_F&)l5es?%{JJ~OCNX;-`A##nw>@z56Rx)U^-C`@r zEGf;&zr~rHSdyBaUzC}6i=`y9ApaI;NosCEeoDiQ;^kUJ%{IJqdZAUQKXPm}u=M|^xNp1q?Wk#tlOq`776GE?xs$LXT{mj70X#Sa*fl2xkNEqx!0M5BA AYybcN literal 0 HcmV?d00001 diff --git a/Plataform_Web/documentos/__pycache__/apps.cpython-314.pyc b/Plataform_Web/documentos/__pycache__/apps.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de968a13f3434c14e699889a61c1bd35fe26b33c GIT binary patch literal 477 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 PxhSCWjX{=?4QvJgpvdT$ literal 0 HcmV?d00001 diff --git a/Plataform_Web/documentos/migrations/__pycache__/__init__.cpython-314.pyc b/Plataform_Web/documentos/migrations/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f42726ef508934b11a53322b1bc5b3c02b9e45c5 GIT binary patch literal 180 zcmdPq`mJOrVq#!m_zaS~73gdg z6Iz^FR2-9-Qk0n<<8EXYACj7rnwwful$jVG;^rO`kds)Fn3i9Z8y}vU6qAylT$-Dj zSCU^Glbe}dlvt9PpI00cAD@|*SrQ+wS5SG2!zMRBr8Fniu85U^fdS-(Vi4mKGb1Bo J5i models.CASCADE (Sí) + temporada = models.ForeignKey(Temporada, on_delete=models.CASCADE) + + # 2. Si borras un usuario, ¿borramos sus docs? -> models.SET_NULL (No, mejor mantenemos el doc y ponemos usuario a null) + subido_por = models.ForeignKey(CustomUser, on_delete=models.SET_NULL, null=True, related_name="documentos_subidos") + + fecha_subida = models.DateTimeField(auto_now_add=True) + + class Meta: + verbose_name = "Documento Técnico" + verbose_name_plural = "Documentos de Ingeniería" + ordering = ['-fecha_subida'] + + def __str__(self): + return f"{self.titulo} ({self.temporada})" + + def delete(self, *args, **kwargs): + # Esto borra el archivo físico del disco duro cuando borras la entrada en la base de datos + if self.archivo: + if os.path.isfile(self.archivo.path): + os.remove(self.archivo.path) + super().delete(*args, **kwargs) \ No newline at end of file diff --git a/Plataform_Web/documentos/tests.py b/Plataform_Web/documentos/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/Plataform_Web/documentos/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Plataform_Web/documentos/views.py b/Plataform_Web/documentos/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/Plataform_Web/documentos/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/Plataform_Web/gades_manager/__init__.py b/Plataform_Web/gades_manager/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plataform_Web/gades_manager/__pycache__/__init__.cpython-314.pyc b/Plataform_Web/gades_manager/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df7337922f10ed9424590872fd2b99f433de0946 GIT binary patch literal 172 zcmdPqASbaTF)hC+H$FTyDJDHJCABy{ zH!&|UJ+&w%K0Y%qvm`!Vub}c4hfQvNN@-52T@fn-0|UtJVi4mKGb1Bo5i>a*xEmhc7fl<)`f2Jr>)2MGiT z1_=cT2Z;oU28jiU2T24;>a*!HmIwq11WD;L1_=a7gGm`MDXY(@$5J8~Bv&F7Bwr#N z#8M&>#8M&}q);Ljq*x*zq*Nji%N$^YWM~- z3=CW@S&4b+`3l9UB_)}8>BS0Z`9%upi7BbY@wth4iRr0D3I#>^S*gh-dR$!Ysd=eI zi6yBi3Q3g;>M3BIx``>dnRyDuC5c5PP?hQmrNx+OfJ@kIa?oMd`U*CLRx7~jzUgmafw2H8p2zNc_|7d8L62?3T25o zrK!cF*j1F8hGdZ@<1Lne#F7lZDkq5RbTjjcQhj|BOufW{f}G4`aNOKtPf1NnEX^so#pdeg z?&;@RB>{C#N)o~$xs}C*Ik#B+9DQAH34r3YG$%10VsKK*Etb$=*PvT0Mfv$9w>SbE zgM-8UgIsQLg42wlk+I1w77zd6kXxKN`N@en8TrK}w^#!FgF-R z(&Agpp&`yy?8POCC7H?kRRX2OsYS(l&ZWgA`MID_sAAX8O-;#6)W5|FrZqWlv4Yjy z;sPb2{G!B^#Nu0ADf!8zxv6<2`NdTt=q>~0=PF@z(bAHPDrq!9P`sq(m6TK#q!w3+ zqe&L078hsc=V40ZrWO|`rl%HHNulcidkRz%6l=0q=|W|5GgDG>Qp*#IQuV;uEVHCi zFBp{HGD|9b;c`_bP~{*ufzk@hdOall!4M}Q>C%MiLQ<3rjzK+0L=sS1T$HBgTwIhE zmYG_Pq|_X0D$Fh5bcD*pY)H<@OwP_q zOwP{COV^8VD@x2w^)CPwxWx#4n#@&NP@SNp0WM!aE=DaS^omjoOH+$WsvPIO5|$ zDFY-|lvW)WT|6DZax9>Lxy6!|pP6@y3nC11^-6}%pvwK0r?XWI zs2C`YNlYoqOpkFlGK&vM%}LEoEh)-Oj1O^hj|s?0EJ*|v)bZh|NimR;8d}xIz^YTd zg34PQHo5sJr8%i~Mdl0)44@WOu_Yq|!v|(YM#hg!T#PJVB^VebZ!>UyWMkkFn849( zcb!}DBDdmYZsqITS{J#su5%k+L5A8hAc%FmMW85O%r2!8d{F28YlDmm3^{H+U32F|a7}ePCu2;rhVI z&C2$HnU|NTf%AhLgNVrm27wQJ46J-NI0P;T>D=JpyC9$h(#{6b?hRsbg9x?{yzByO zADB788kHD0`7a1WePCu{WdqsCe?cGsnG=Z234(A$d1aU`Fi3n*V-S>R;C;X&*ueRK zo4~)I;C`7`r-`cw)GPx4 DdiIcp literal 0 HcmV?d00001 diff --git a/Plataform_Web/gades_manager/__pycache__/urls.cpython-314.pyc b/Plataform_Web/gades_manager/__pycache__/urls.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c5651d9e038415c4566e13cc928a2b7485e9255 GIT binary patch literal 1482 zcmdPqe3t`cr}hFBIwh9I_BrT_`3xkyxi6cPu@ zG+}};!1~x@xdUV%d}K0+BZ$+S86u*`RKg$27N7v(A(QG*PKpKtgA79~e=LV0Lo8c> z5>yz8ie(E>LE=K0L0slgx9IRfg%}tZO8A4gl^H--lP9r-iGhJDG{{FGIX^EgGrhDZ zu_QA;Pa!S8NFhBjCABy{H!&|UJ+(-opeR2pHMvBOiz_4}RUx6YD5oH?q$IT{uQ)*= zC$qRjp(ww!B(+!}G{~n|p(J0SEHkydSWm$%zepiBzbI89GcPT_C>LUSK~8F7ajHUb zYN{2Nf`WoVMoCFQv6a4lN`7*&UP@MCUV1*vy5#&^{nR{tGd%jkKGg^~nK2VYp8<+z~-uJYI12Z-eOHm$<55uWW2=!3T#crTO7ry zB_)}8>BX9ix7dnH5=%0ZLCQdWEv{k%tJc58aEk>L0U&Ll=+I=m#ha3!T$-DjR}x>8 zpI_pqDSV4PK0YNsIX?atAJjL=`FSNpnMp;U+;NK=DhTpo5hzc>ML=Oy#KOS9a7!Gj z1|$M@vmV4fMXVrM_VmtvY(_`F?%;G~*b5e6t zONufR<3rrsV*+v#OAa9_%Gn_?!F0OSM62oc6YVdv zC_}`AI%2Q$%3tJ_Uyyc%MfU?ID?d{M_Xhz67M^yycDn|<8!Y@2&1Ps^m(sZ?rL)81 dx{d!u8~-c90asZ9n!GxWjGl}ojByM>OrA_0 z%q7h746%#>98i@=Q~);;2g(d$4q`E3f^g&+Vwn{gOduSF61E^lWd=>ws=Hj_!S0?4 z$@zI{ndu5?`9%upi7BbY@wth4iRr0D3I#>^S*gh-dR$zdB?_q(1^LCP#R?@EsR|Hn zi8(omNja$siNy+u3c2|yr8%j(IjLo-ISOToMVVl!yu{qp6orI@#DapH%;dz9%>2BB z1U)V;xBMc7-29?ch0MIP{Gwd2ghGCvLP+#Najg}zQ z`1o5)`Ng*cATH5M&M!*U0~uZf3g%nvsd;6YMfrKRxQbItQc}|rOLIzYaUAj9gC{3?DEswR1Ic gU1t!z$RK(_Oz(n$#}x+8hkQzx`Ba*?i$G}y08PKdSO5S3 literal 0 HcmV?d00001 diff --git a/Plataform_Web/gades_manager/asgi.py b/Plataform_Web/gades_manager/asgi.py new file mode 100644 index 0000000..153ca09 --- /dev/null +++ b/Plataform_Web/gades_manager/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for gades_manager project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/6.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gades_manager.settings') + +application = get_asgi_application() diff --git a/Plataform_Web/gades_manager/settings.py b/Plataform_Web/gades_manager/settings.py new file mode 100644 index 0000000..ac5e8e2 --- /dev/null +++ b/Plataform_Web/gades_manager/settings.py @@ -0,0 +1,130 @@ +""" +Django settings for gades_manager project. + +Generated by 'django-admin startproject' using Django 6.0.2. + +For more information on this file, see +https://docs.djangoproject.com/en/6.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/6.0/ref/settings/ +""" + +from pathlib import Path +import os + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-mwlyo^0ax9u9ts5(hw(e&vlgmr$nbla-3az0d%s(lymmp5^)$-' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'users', + 'temporadas', + 'documentos', + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'gades_manager.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'gades_manager.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/6.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'formula_gades_bd', # El nombre exacto que pusiste en Workbench + 'USER': 'root', + 'PASSWORD': 'admin1234', # ¡La que apuntaste en el papel! + 'HOST': 'localhost', # Significa "este ordenador" + 'PORT': '3306', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/6.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/6.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/6.0/howto/static-files/ + +STATIC_URL = 'static/' + +AUTH_USER_MODEL = 'users.CustomUser' + +MEDIA_URL = '/media/' # La URL pública (ej: tudominio.com/media/archivo.pdf) +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # La carpeta física en tu ordenador diff --git a/Plataform_Web/gades_manager/urls.py b/Plataform_Web/gades_manager/urls.py new file mode 100644 index 0000000..f33adf1 --- /dev/null +++ b/Plataform_Web/gades_manager/urls.py @@ -0,0 +1,35 @@ +""" +URL configuration for gades_manager project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/6.0/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" + +from django.contrib import admin +from django.urls import path +from django.conf import settings +from django.conf.urls.static import static + +# 1. IMPORTA TU VISTA NUEVA +from gestion import views as gestion_views + +urlpatterns = [ + path('admin/', admin.site.urls), + + # 2. AÑADE ESTA RUTA (La cadena vacía '' significa "la página principal") + path('', gestion_views.home, name='home'), +] + +# Configuración de archivos (esto déjalo como estaba) +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) \ No newline at end of file diff --git a/Plataform_Web/gades_manager/wsgi.py b/Plataform_Web/gades_manager/wsgi.py new file mode 100644 index 0000000..ef3583b --- /dev/null +++ b/Plataform_Web/gades_manager/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for gades_manager project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/6.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gades_manager.settings') + +application = get_wsgi_application() diff --git a/Plataform_Web/gestion/__init__.py b/Plataform_Web/gestion/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plataform_Web/gestion/__pycache__/__init__.cpython-314.pyc b/Plataform_Web/gestion/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de9913849311b5b6e4b870ede94f4933639e37af GIT binary patch literal 166 zcmdPq`mJOrVq#!m_zaS~T#}ie v7ZV?!nU`4-AFo$Xd5gm)H$SB`C)KWqm4Sf)WNR^q@rjv{k+F!Gfq?-4Vz(#u literal 0 HcmV?d00001 diff --git a/Plataform_Web/gestion/__pycache__/views.cpython-314.pyc b/Plataform_Web/gestion/__pycache__/views.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d7b789fddd403c78a26d4baed942025476ae5af GIT binary patch literal 515 zcmdPqCQ!CAgC=8X1_J|wO@^V}p@mMFsd;6od6_Bs3W*9ii3$NZi6x0? z`9-;j3Mr`y?ujX>#fl0a=J)r#-_ieJ{-hN)`Wc3HHU)OUnZ+fk5Je%WIjOm+B}IqV zCMr}axThAEWFFp}r%-07XJDgWU{}P#z`&r%c#FL#wXig`xTF~55Vczl&Q>v@#i>Qb zF^MTfndvd^MrQFalQI+IL)_eB;BJWzPfdzR2N|577gLs*T3)PIPOV literal 0 HcmV?d00001 diff --git a/Plataform_Web/gestion/admin.py b/Plataform_Web/gestion/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/Plataform_Web/gestion/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/Plataform_Web/gestion/apps.py b/Plataform_Web/gestion/apps.py new file mode 100644 index 0000000..48586ea --- /dev/null +++ b/Plataform_Web/gestion/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class GestionConfig(AppConfig): + name = 'gestion' diff --git a/Plataform_Web/gestion/migrations/__init__.py b/Plataform_Web/gestion/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plataform_Web/gestion/models.py b/Plataform_Web/gestion/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/Plataform_Web/gestion/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/Plataform_Web/gestion/tests.py b/Plataform_Web/gestion/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/Plataform_Web/gestion/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Plataform_Web/gestion/views.py b/Plataform_Web/gestion/views.py new file mode 100644 index 0000000..021ad80 --- /dev/null +++ b/Plataform_Web/gestion/views.py @@ -0,0 +1,6 @@ +from django.shortcuts import render +from django.http import HttpResponse + +def home(request): + # Esta función es la que decide qué mostrar cuando alguien entra a la web + return HttpResponse("

¡Bienvenido a la Plataforma de Gades! 🏎️💨

Sistema de Telemetría y Gestión v1.0

") \ No newline at end of file diff --git a/Plataform_Web/manage.py b/Plataform_Web/manage.py new file mode 100644 index 0000000..d8daff8 --- /dev/null +++ b/Plataform_Web/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gades_manager.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/Plataform_Web/media/ingenieria_docs/PruebaTest1.png b/Plataform_Web/media/ingenieria_docs/PruebaTest1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c824e63c649af81dc7f7f5f6bfe35b8cfe2ac06 GIT binary patch literal 120904 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

uvX6T;e%(e#)Bv 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 z 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 literal 0 HcmV?d00001 diff --git a/Plataform_Web/temporadas/__init__.py b/Plataform_Web/temporadas/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plataform_Web/temporadas/__pycache__/__init__.cpython-314.pyc b/Plataform_Web/temporadas/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..73d6bbc0c90e4a18098ffbcfa656866aca65bd5c GIT binary patch literal 169 zcmdPq`mJOrVq#!m_zaS~<>qV^ z6Iz^FR2-9-Qk0n<<8EXYACj7rnwwful$jVG;^rO`kds)Fn3i9Z8y}vU6jPF#TaaIr yn37l=6Ca2KczG$)vkz@fq?;JaWRPTiJ6g+v51+0fdK#vYAI9z literal 0 HcmV?d00001 diff --git a/Plataform_Web/temporadas/__pycache__/admin.cpython-314.pyc b/Plataform_Web/temporadas/__pycache__/admin.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c57527b987ef2c7f4b7b1f9aca11263beaa37809 GIT binary patch literal 747 zcmdPq)PoRWEuk%8echy%lHP{!vX1_p)(hB$^GMo$J0#u7$(hB(F`CQl|0 z<`QOkhFHb`4yZ~bN|7O!*@O`yAj+V~5X3Cb5X2J87yz~pA`T->m?10^2*pss7R0K| zpvm?U#MflJ#hRFso0+G{c#AV6HMbzYC^02586*Y6P-_@ID}fyv%TU4?#8AQ%$5O%^ z#9YD>#8Sc<#9G1@#8|=}!~`<<79ZRoN08Ag8T>R^Z?Wa&=Oz`U-r`A1P0mP+&&=H22hC`v6ZEhtSbF3G>emY7^pnwX=>Sj5A?z@W)k1PTOAj$0h@@p*~4 zsqyi*xZ>k;^HWN5Ky04)_`=e}9Hn@kQ(m z3=E$^;c?5^*(xTqIJKxaCNZTbGd;%L$Sgi2H77MUwWKIBF+Rl2JtiP0u_Q4qzbH38 zJT)n%1QwTay2VkHnx0t<@)(yd zNEjUcVEte}K#UV(U|_h#VFL+0yCP`@1_n?Z7aKD$FnnNUWMsU{pm3K#_5mYXyIhmp m1kTHhQeT)j7!@XjUKdrpD60CIfrC-uGcyB|^e2!o*iZmx3BHH` literal 0 HcmV?d00001 diff --git a/Plataform_Web/temporadas/__pycache__/apps.cpython-314.pyc b/Plataform_Web/temporadas/__pycache__/apps.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..be03dbf0f199c403d872842a562a5d67a930f377 GIT binary patch literal 477 zcmdPqoz`*br#DQT}DC4sR0|P??LmWd8qbGw0V+o@?gD8U{LlBcV zLlAQ;qX{!aT?tbVi!y^I>q`(qgBVJf z;#f+UgBVL#f|yEJgP4^WG+Ay5grw#cRr^$AUBR)PaF*h|n z{uWn!d~SY9X%2|Z6CYn#nwSHX;g63`%PcA`$;r%1&C8FEzr_NQxFs4NUtE${l9?Qz zSW;4ynN(VmS{xr=#LmFL@EPR9TTaeaF`>n&Ma40RDMgv-G44iY@gb=>skx~oMVX25 zA#Uz50Xc~!iD~&ox$)ttNihh=#UvIK6zdgK7J-5gOt3I8FcgE#ZezH?E#Bf%#K*wE z0G9F7WWL3nl9ia3p05YeRs;%8ungEO5QY2<3=Fq8Y#=_gD-vX2U;u?NzExv2617S4a)e;#mK;r$dJg` zz!1w&!WhI*!W73`!Ysy+<-R0Cpx+C6rQRh%*Xe3}P~8f(Vqb#j*tOLD3CC*U7AI4zJ7{o2kki$_T5X4g=7{*v46vkl9SR$;It#x1teyv)MV)O4tw44TXk>6Fa$%#z|;d?~5PnYoEM@dY`F z$*IM+*i%x|5=(PR+)5=G7#I%icP&=PNmM9-nXZtSTvD2tW3S0n1PbO`JY}gxN%_U8 z@p*~4sVH&92(|FD3OGr?<4K@|If$`@C5WknHHcY{v4ky%rG!0*RhdDP?G_*07ka*_ zC5c6#WOa)RE?8W}tDBaZoRJuxnU|TInZJ_3Pm|*oM?Bc_`1o5~@$tF&DWy57@$t8K z;^PZT6LUb$ijTj=A0MBVSyWt-lbM&AmmeQr#Ld9Ka7!53@$m&YrA3K3w>a{PQc{aD z^U`mL#>W?zB$i|*$0wGQ6lErrmZTQP#~1N4Ffe=udG3~rvsFxJacWUr!es%a2G0*{48oGvg;XyIscsND;CQ0sicm;{ z_XjoxK9TFZ3YT~lR)}7(jkv-a+2Hn_g@sl1BLfSo>L(sXR_X6-tgLEZ8CY4>AOQ_> zj-MvWEzXpz#Ju!;y_BRPki%}V`hsdlutUL-0Z|Rk$Q(A1LeQ?rf`Nenlu?R7;vbk9 b85!>~$b4auW>lNNHl1f8&o>5XMuFeQ_fg@NHQhy%l{P{wBm1_p)(hB$^GMo$J0#u7#krV=K322ln@ zh9D+!h9Krx#sD^`S|rMZ8Nw-H4q{Pe&}4lH;%YM8;>yiTFG?)Q%+D*n#g?0&lA2ST z43dIjJ}Bd}A0x=xScVeDAchjAIJOezAjT3FJ%$q2ShfI|DyU)*1#(Uhb1X-I5QvA0 z6&ZpUgBXKYf>?vt%vm6E#!Nx%u^a&+5FRqA$Pi}~#2Cb3&IA!PW(wkr

ai@Q_JG z1`{aPm??;h2sPZX903wgEl89iLmX2OPaIbeuQ@c>jG2P?VmSh&kQ70giVQ(4LHt1i z2-oSc1qlW*1qlTS2Z;oU>M`mw2Z_PV(PJ#(3lcBk50X%3(3HHz=?e?}kXxJ~sksID zMTseix0o_h+-@;>x@fZ8;z=wm$&XJiN=+a&bNiE9EORwV9g*X-Ba82f0ED+D8Wv1q&6yIXc zF94_Fl?;BG0=GEg!9fupe~T+VJ~uz5G$%Da{uWPsd|_!~4oF{o{4M_Y__WNT;*y-q zywtq>`1o7wnR%HdnTa{Kcv4aeQu9($^O7@Di;F->;1;(tI0}40Iiv`bWN+~}Wu`lp zmgKvE?7zk7oRL@rWx6Dmq(YcHE|8#u@|^PXb5axYAUv-8f>c<}6OE5AE=erOOpZ@1 zDJjZKDlJJZj*l;rV_;zT42p?cq0Uw@p~b01#W9H~MVaX_?nY+uA*ng3xv3>ZnThcs zZtgJwIf*5SY57ID@!_dSG4QZ2jzQ$`7y|zD;i%AFu5TpGb8P~oZcll zy~}b27X%D%2+A#ByRKk-Nx}Gl;fdr6aS2xx5-$iOL5xP78GJ@@hZ{zW@Kdi d&c?u~`Grk_k!=Fkbpe%&0xI7aBpBJix&f!{gD(I8 literal 0 HcmV?d00001 diff --git a/Plataform_Web/temporadas/migrations/__pycache__/__init__.cpython-314.pyc b/Plataform_Web/temporadas/migrations/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b932b4a2005060657d4579ac03280baa16aa415 GIT binary patch literal 180 zcmdPq`mJOrVq#!m_zaS~73gdg z6Iz^FR2-9-Qk0n<<8EXYACj7rnwwful$jVG;^rO`kds)Fn3i9Z8y}vU6jPF#TaaIr zn37l=lbe}dlvt9PpI00cAD@|*SrQ+wS5SG2!zMRBr8Fniu85U^fdS-(Vi4mKGb1Bo J5iASbaTF)hC+H$FTyDW(*xI6giz qFS8^*Uaz3?7Kcr4eoARhs$CH)0|Nud&SDVb6EhIwf;569dCz5C?`?p^VQJ3=9kn3~>xWjGhc0j3tcnAU2aHlLvDN zvpho_V-T|^iwA27t2~1!gCau^i#S6NYb>(~Gemz0TP$M$AB2re1_&baAnaJyST++T z2wR>Zh)tP6ll>)#tI2qaH8CYOGf$K87H4R2YLO$9!{uCBT#}y)5=sUsgkcsa<8u|* z@v#ggj6n<~OmVCw%&{ybtg&p^oD{?u#1zD;&uGkK%%}r307R9r$FcTm8q?Q!l;!R9R ziAQinM7#Kc-!r+#jvsDZz(2HXdQ;IUvW896* z;zLq%Qgc&FiZT=9L)_eB0&)^d5<%XK4^K^sDJ@Pd0x8bT%+o8VEMjM1U;q;!M->M$ zFfg<++~5&waQ(o>ASiWRK>4D8@(oUn6&4pveJ*JEUf}Tiz|5r1_LYH2kgdV<0~dp+ z+;tJ{iz3<>iu6H>MA=$=i$q{{_-S(9;!DX&%uCPLOU};&d8i1KI&Vp$3hE`6mSpIG z(-|ay*ua5R3=TQ4Yj3d>XO^Vi;wVZ@&nzxUEdqxK#3E4!28LT4Hjv1$E0ShlU|?im zU??_VU|{&b%*e=imqFn!gZ^Cxxi2i-jBFD!zc6q!vVD+ZU}S6OYUH}kAbgQQc!Jjg K{%Z^dU=sngz2Q~> literal 0 HcmV?d00001 diff --git a/Plataform_Web/users/__pycache__/apps.cpython-314.pyc b/Plataform_Web/users/__pycache__/apps.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4ee0e1e1afef82bc5ad531c911005a3d604ba804 GIT binary patch literal 462 zcmdPq4v5VYA75CSm;;sJkB?8wEGjO^$;?a5%a4!0#R8JJB^n=JT#{IlnH-;3Qc{$e zR9cc+93NlA&cML%8RW2Aw$4^DV0&W{Q;IUvW896*;zLq%Qgc&FiZT=9L)_eB0&)^d z64UaFa^u5OlVZT`ib*UeDAp^eECPiYm|$UGU?>I|+s1H%Td2jQh>wAR0W9OE$$X1D zB`Yy6Jzo!`tq2r;U>UG8APV^z7#MDG*g!mIS0u>5zyJ!kVi5)gh7Zh)jEr{~6u+=B QG73-7{Kmk@C=AvG0CQY%r2qf` literal 0 HcmV?d00001 diff --git a/Plataform_Web/users/__pycache__/models.cpython-314.pyc b/Plataform_Web/users/__pycache__/models.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1835ea8c27f76b3b96c051f9de7ef8ee3799e776 GIT binary patch literal 1570 zcmdPq{I8KS3zC5Tm-L6hwzh^xtXi^nmkxTGjCxg@kWwMdik7F%w9 zN@`AVGDsSRIiQTs9SjT%i3|-4u?!`QK@25KaV#awVhs5VL0ly)LEI&*v1|c+P_;;u zB14==EK3k$5K|DdISWLhgafBqxmea9mLQfO)*v=>s7FgUgV@CxO1OeJO1Q%qN_c`e zl^Ha7ZgDx67MJAbf?R%!BQ>`mCp9r8ze*q|KSv=oPa!o&A+@kHvmjrSIt#x3^bjQq^x)Z$z0DXD3Rr8y+++t12NzBVG;$~oANM?li2~2|2F*7i5d@cb;O&CJ} zSQwSyVF+RfV+deE6$SBl7=jqX7y_W71QLN^9)=*MFopnj7#~4{5&?+E!(ha&%%I79 zi&3G9NkOBEMN>gn0p$6#%%b8Fu;*@Z<|M+H9HqsnMIayF;!jU4i7(2}iBHKaF33r& z)MUKHQkW#bJ-8&bCCZp_^ff57F0$aT-yi=MHUJ>xHUBwXN6yugw88RYYo z41Su-noPGiQ!MOVa%eK$;z>*`%1_D6OU%tohG=qx2pnDr647M3#g?3rSe#jWi_IBKYck#9 zNGdJP%u6jUt`c>EvJ})5{0mZx5=%1k^NKZ@ZgHm;%wl@ujr=2h{y>IT4hV9A`+ zL(%VPIfz1@jMY1_@{~-C{0INxQ`y?Bb@$bW1Qdza+mXzN9EIuQ)feI5R)5 zRD^+n!51W|pr#N46FVP{4MSvf1h|~4}VW**Wgkoa%N&qW=dj8kr*f=iGq?qVo7Fl zd}2vSQD#zUNosL?{4K%w_~e|#;^LId%z*Hgq6XvDmQoqZ}17-5LNxc%_hRu;PYLGi8YDw0|SUGl7QLh zr^$LtDkUp1FFju`IX@5N2ff77k_3R0550RwTbB*+M`IUqmW;;?}P pzg-b1CxCKYF-XM+W=2NFy9~y68Dze&s52%pPLTP=0HVQ8004)Gt6Km7 literal 0 HcmV?d00001 diff --git a/Plataform_Web/users/admin.py b/Plataform_Web/users/admin.py new file mode 100644 index 0000000..b797f2c --- /dev/null +++ b/Plataform_Web/users/admin.py @@ -0,0 +1,18 @@ +from django.contrib import admin +from django.contrib.auth.admin import UserAdmin +from .models import CustomUser + +class CustomUserAdmin(UserAdmin): + model = CustomUser + + # Esto añade una sección nueva al editar un usuario existente + fieldsets = UserAdmin.fieldsets + ( + ('Información del Equipo (TFG)', {'fields': ('rol', 'especialidad')}), + ) + + # Esto permite añadir estos campos cuando creas un usuario nuevo desde el admin + add_fieldsets = UserAdmin.add_fieldsets + ( + ('Información del Equipo (TFG)', {'fields': ('rol', 'especialidad')}), + ) + +admin.site.register(CustomUser, CustomUserAdmin) \ No newline at end of file diff --git a/Plataform_Web/users/apps.py b/Plataform_Web/users/apps.py new file mode 100644 index 0000000..4ce1fab --- /dev/null +++ b/Plataform_Web/users/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UsersConfig(AppConfig): + name = 'users' diff --git a/Plataform_Web/users/migrations/0001_initial.py b/Plataform_Web/users/migrations/0001_initial.py new file mode 100644 index 0000000..fedfc57 --- /dev/null +++ b/Plataform_Web/users/migrations/0001_initial.py @@ -0,0 +1,46 @@ +# Generated by Django 6.0.2 on 2026-02-17 10:36 + +import django.contrib.auth.models +import django.contrib.auth.validators +import django.utils.timezone +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='CustomUser', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('rol', models.CharField(choices=[('directiva', 'Directiva'), ('jefe_area', 'Jefe de Área'), ('empleado', 'Empleado')], default='empleado', max_length=20)), + ('especialidad', models.CharField(blank=True, choices=[('aerodinamica', 'Aerodinámica'), ('chasis', 'Chasis'), ('business', 'Business & Operations'), ('epowertrain', 'E-Powertrain'), ('electronica', 'Electrónica'), ('sdf', 'SDF'), ('motor_transmision', 'Motor & Transmisión'), ('software', 'Software')], max_length=30, null=True)), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/Plataform_Web/users/migrations/0002_alter_customuser_especialidad_alter_customuser_rol.py b/Plataform_Web/users/migrations/0002_alter_customuser_especialidad_alter_customuser_rol.py new file mode 100644 index 0000000..9c991e1 --- /dev/null +++ b/Plataform_Web/users/migrations/0002_alter_customuser_especialidad_alter_customuser_rol.py @@ -0,0 +1,23 @@ +# Generated by Django 6.0.2 on 2026-02-17 11:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='customuser', + name='especialidad', + field=models.CharField(blank=True, choices=[('aerodinamica', 'Aerodinámica'), ('chasis', 'Chasis'), ('business', 'Business & Operations'), ('epowertrain', 'E-Powertrain'), ('electronica', 'Electrónica'), ('sdf', 'SDF'), ('motor_transmision', 'Motor & Transmisión'), ('software', 'Software')], max_length=30, null=True, verbose_name='Área Técnica'), + ), + migrations.AlterField( + model_name='customuser', + name='rol', + field=models.CharField(choices=[('directiva', 'Directiva'), ('jefe_area', 'Jefe de Área'), ('empleado', 'Empleado')], default='empleado', max_length=20, verbose_name='Rol en el equipo'), + ), + ] diff --git a/Plataform_Web/users/migrations/__init__.py b/Plataform_Web/users/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plataform_Web/users/migrations/__pycache__/0001_initial.cpython-314.pyc b/Plataform_Web/users/migrations/__pycache__/0001_initial.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..725f115b39a26d485e2112babe4010a73e341f41 GIT binary patch literal 4194 zcmdPq`ROv6-_#B#fDY*kd^YL?Aq5QjsC9A&5PQ!<-2s zYRnYG8OsqM2H_!-P;4MJ1n~y(1@R-P6~N_!Ai*FZ zea0Z+xM@L*vAh8?5Hpa;06AnHgdLy&p^?b|Wn>mz@ZfJ38(JiLT6t`PUo-Ud!w|EjuOY-BBi&7IyQd4em z7ZhdYCKgr3XQx));w(-r%1q43tV+GbQt-ZE{V^{PtVM&0<#ssY)$4{tVubEdD*vE@=9}ZAZmFsi{pz+ z3sQ?pi&KlL0$fsyGt=`DOHzv!N-`2l6iPBOixogp3K@yT3W+&63I(Y}xtYbqpaM{# zJhLPtzqCXlwW1&=GdZ&)r&1xY7-T?ZUb;d_Mry8Jl>ppuh2oOLlG0*L=3DG3scDI& zIVHC^Gg5O3;!9F1N+6Em0NDigA6sc&W?^Y+m8K)ac92aF7r~S$B<2*QCZ<#>q*i1W zmlW$&xdo*bmSz^Ersydcni?o1XCxLSCYPiZ6)WTyDWs*Arxxic_@tJAM06BVGSf3l ziWL&`QWPBY_4Kv%b@k&F^7C>k^)%UT@ue0O5mSGdGV@CEA+eR1 zlAD>QP@Gwks#nER3^D;4^0zoMi{lfMOESw+t5UI=35)CEjQrA^6osTzg%U`rQ~*Uj zSf`#sXkKw@PHHkVZDi&Zm!u}9DCDOpq@?DgmVjbDF*!NEG_Rys?-m=xx?9{Si6yD= zS^1fHsVP-pjsk?E$y5ZYzaZhrT$G=4iz79+ASX33B_EVfk~8u%lT(W!YCz$5izl_X zAT=43CsGnqG+7`atPBrkP}O;hExjnew4k^uF(e~Z0m6m^4Jhp>B&Fu$=cN}bl;rCv zz*ARFjzW5B2}S}>FG|cSNlj5G$yZ2COwIuLvLqulvj}Rc-Ysy7jW13uxy1r9yoxKa zv?N0hY^Nq0#Bre1bBm`aH3yWv!HMLS5R6w?np#u|5o0RJhlGLv$e?(nY*wWl4DxbX zW-?0VOUnl(189`#Rq=yuMrf-7n}e(aV!SYNITBxxQ(BambBh&ZXYnnL#H8X9P_DVf zo}ZMJnp{$>$#RPYlwNPKrDdk(q!iy`&o6*9emHUy^Agiji;7n=fZ9bYAnR|b8W-qSVAvP@eHh zO-ofsNmV%9Sd^Nm$yB5S%7GlNur$J<$#jb+F|{Z^B{MHEH!~Tc$q^!Ocp*qclj#;) zaz!@$7c3g#c)3=+^}y2V_al6H$Z*u_ng>6Tz_eo1~&d`VGa zUU6VP{4Ms(yv&l!#GG3^DX9gic`2!R z$(gCeMWBY>EpBIU&h`bhV2eNv%3C~6ndy$DCHZckh`zq#qXP#R~eEIA|cASL8kaZlH4t>e0W6N z5{-`sRVI6;9}quzRn?ci9_y&pzH%d(FtYO#kDSpYwch; zp>iQA{z6{S74hN=0wp&DrDud)m({%_tGh$^gw++WJl-+1_pn|M5Yf63G0rP?&ydVfK z8^X(G`3%yK%kqJNp_n-jMAfpmvwmS;#xxJ9x%^7%hwCi$um*n&|gd9k|5RrUEF6Dwi>J34O8EV(1v@c0%Z%{d4d?7UDiWJ1#;4m_{ zBx|rk^aBHfH=`TK+o4R!Od#u0KpeqTCaAH7m*fn0sDPCffn*$+Jwc%(?*;O&pf~dk zLAeEN*A+}IDVXdC+aI$t=DKarMcbh3wqX}-!!D#2T~UCk=B5Bs4xTFc^7& zObTL(0a2Mu*&ur*b3h!yTqbC&7+z8|+`;mRfx(^82^0YStbrgZf;9#dC`z#)j$jpvR4Q{Jh;m@@VEMwpAma&ADCosL9jM;S=r;9R9mt|Zo z2)KS=W)kE3VkphY^?_Mdh^@t|CWIl%tq(rnUN@8GOU<74KRR#uz t56p~=jGx&U7?o}_sNQCfxzC{Sg-w-_Z35SI0hNmaD&H7X8QH+b001N2bZ-Cv literal 0 HcmV?d00001 diff --git a/Plataform_Web/users/migrations/__pycache__/0002_alter_customuser_especialidad_alter_customuser_rol.cpython-314.pyc b/Plataform_Web/users/migrations/__pycache__/0002_alter_customuser_especialidad_alter_customuser_rol.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d347ce2474ba624b00449a61a755f522c189eda GIT binary patch literal 1441 zcmdPqyiTFG?)Q%+D*n#g?0&lA2ST z43dIj9w_7UDX_J%3?+;~3?)o)Y$eP=yn2i!EU~NsFf~x6AWD%Th%tyMmOVfK#6!i3 z3_;9#3_*PUjB#>7%t0(ctmaV91+ke!or%X(c3h_FF$D4ZGX`QNcv6cCQj;?ib23vBQ$kAl7#J81 zHx{KPDuf(fnVgrIoT$lqi!~`HF)#ZTdvZp8W^!urEw0?eiujz=y!4WcTP%5{IXSm@ z%2JDx@{3dB^AdAYHJNX5frA#zyTt+$yTzK8nVOSwi@7L2=N3n5Zb43JVoH9MKu~^; zLTa8uYK}r`VQFSTz9vf%C{5gAPf1NnEX^q?;$~oADB@*cU|7lEr^$4S73ApRTRa8^ z28QvOd6^}di8-1anoPHN5>t!vQ!?`sb2F0@OFGxJi5i>pMPpezM71^>l$u zoDO0TxjDwbz`!Uz5#*eBMDmVDPTiQYMfo{;1(ijh@&inO7{${W7#P|ZKCm%xDt%yP z5@Bob`M|}%DSVwn_7aEe4RPfgg7PuAQOQiHAgYAPjTxlhof)E^ zms^Of#j8jklp8><^wVUy#hH?on3tZfmy!gI3~&U1y#Wqah*|@1%-cYs*sjQkfq{XM rfq|h|hJk_M12ZEd<99X&M$Ip5f{bhvxULJRToh3G#vsVZ2G$J#LGp}` literal 0 HcmV?d00001 diff --git a/Plataform_Web/users/migrations/__pycache__/__init__.cpython-314.pyc b/Plataform_Web/users/migrations/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..be754e9c5cc156d49e687d87799337171972042e GIT binary patch literal 175 zcmdPqASbaTF)hC+H$FTyDW(*xI5#uB zD6u3nKd(3@K0Y%qvm`!Vub}c4hfQvNN@-52T@fn-0|UtVVi4mKGb1Bo5i