robuztecienco la logica de bases de datos
Browse files- app/main.py +32 -9
- app/templates/miembros.html +1 -1
app/main.py
CHANGED
|
@@ -69,10 +69,17 @@ class HFDatasetManager:
|
|
| 69 |
self.dataset_name = os.getenv(dataset_name)
|
| 70 |
self.data_key = data_key
|
| 71 |
self.hf_token = os.getenv("HF_TOKEN")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
self.use_hf = HF_AVAILABLE and self.dataset_name and self.hf_token
|
| 73 |
|
| 74 |
# Configurar almacenamiento local como fallback
|
| 75 |
-
data_dir = os.getenv("DATA_DIR", "
|
|
|
|
|
|
|
| 76 |
os.makedirs(data_dir, exist_ok=True)
|
| 77 |
self.local_file = os.path.join(data_dir, local_filename)
|
| 78 |
|
|
@@ -149,10 +156,14 @@ class UserManager(HFDatasetManager):
|
|
| 149 |
"""Carga los usuarios desde HF Dataset o archivo JSON local."""
|
| 150 |
if self.use_hf:
|
| 151 |
data = self._load_from_hf()
|
| 152 |
-
if data
|
| 153 |
print(f"[UserManager] Loaded {len(data)} users from HF Dataset")
|
| 154 |
return data
|
| 155 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
|
| 157 |
data = self._load_from_local()
|
| 158 |
print(f"[UserManager] Loaded {len(data)} users from local JSON")
|
|
@@ -272,10 +283,14 @@ class ClassroomManager(HFDatasetManager):
|
|
| 272 |
"""Carga los cursos desde HF Dataset o archivo JSON local."""
|
| 273 |
if self.use_hf:
|
| 274 |
data = self._load_from_hf()
|
| 275 |
-
if data
|
| 276 |
print(f"[ClassroomManager] Loaded {len(data)} courses from HF Dataset")
|
| 277 |
return data
|
| 278 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 279 |
|
| 280 |
data = self._load_from_local()
|
| 281 |
print(f"[ClassroomManager] Loaded {len(data)} courses from local JSON")
|
|
@@ -388,10 +403,14 @@ class LoanManager(HFDatasetManager):
|
|
| 388 |
"""Carga los préstamos desde HF Dataset o archivo JSON local."""
|
| 389 |
if self.use_hf:
|
| 390 |
data = self._load_from_hf()
|
| 391 |
-
if data
|
| 392 |
print(f"[LoanManager] Loaded {len(data)} loans from HF Dataset")
|
| 393 |
return data
|
| 394 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 395 |
|
| 396 |
data = self._load_from_local()
|
| 397 |
print(f"[LoanManager] Loaded {len(data)} loans from local JSON")
|
|
@@ -446,10 +465,14 @@ class FaceManager(HFDatasetManager):
|
|
| 446 |
"""Carga los rostros desde HF Dataset o archivo JSON local."""
|
| 447 |
if self.use_hf:
|
| 448 |
data = self._load_from_hf()
|
| 449 |
-
if data
|
| 450 |
print(f"[FaceManager] Loaded {len(data)} faces from HF Dataset")
|
| 451 |
return data
|
| 452 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 453 |
|
| 454 |
data = self._load_from_local()
|
| 455 |
print(f"[FaceManager] Loaded {len(data)} faces from local JSON")
|
|
|
|
| 69 |
self.dataset_name = os.getenv(dataset_name)
|
| 70 |
self.data_key = data_key
|
| 71 |
self.hf_token = os.getenv("HF_TOKEN")
|
| 72 |
+
|
| 73 |
+
# Log para diagnóstico de variables de entorno (solo nombres para seguridad)
|
| 74 |
+
hf_vars = [k for k in os.environ.keys() if k.startswith("HF_")]
|
| 75 |
+
print(f"[{self.__class__.__name__}] DEBUG - HF Vars detectadas: {hf_vars}")
|
| 76 |
+
|
| 77 |
self.use_hf = HF_AVAILABLE and self.dataset_name and self.hf_token
|
| 78 |
|
| 79 |
# Configurar almacenamiento local como fallback
|
| 80 |
+
data_dir = os.getenv("DATA_DIR", "data")
|
| 81 |
+
if not os.path.isabs(data_dir):
|
| 82 |
+
data_dir = os.path.join(os.getcwd(), data_dir)
|
| 83 |
os.makedirs(data_dir, exist_ok=True)
|
| 84 |
self.local_file = os.path.join(data_dir, local_filename)
|
| 85 |
|
|
|
|
| 156 |
"""Carga los usuarios desde HF Dataset o archivo JSON local."""
|
| 157 |
if self.use_hf:
|
| 158 |
data = self._load_from_hf()
|
| 159 |
+
if data: # Si hay datos (no vacío)
|
| 160 |
print(f"[UserManager] Loaded {len(data)} users from HF Dataset")
|
| 161 |
return data
|
| 162 |
+
|
| 163 |
+
if data is not None:
|
| 164 |
+
print("[UserManager] HF Dataset is empty, checking local...")
|
| 165 |
+
else:
|
| 166 |
+
print("[UserManager] Failed to load from HF, checking local...")
|
| 167 |
|
| 168 |
data = self._load_from_local()
|
| 169 |
print(f"[UserManager] Loaded {len(data)} users from local JSON")
|
|
|
|
| 283 |
"""Carga los cursos desde HF Dataset o archivo JSON local."""
|
| 284 |
if self.use_hf:
|
| 285 |
data = self._load_from_hf()
|
| 286 |
+
if data: # Si hay datos (no vacío)
|
| 287 |
print(f"[ClassroomManager] Loaded {len(data)} courses from HF Dataset")
|
| 288 |
return data
|
| 289 |
+
|
| 290 |
+
if data is not None:
|
| 291 |
+
print("[ClassroomManager] HF Dataset is empty, checking local...")
|
| 292 |
+
else:
|
| 293 |
+
print("[ClassroomManager] Failed to load from HF, checking local...")
|
| 294 |
|
| 295 |
data = self._load_from_local()
|
| 296 |
print(f"[ClassroomManager] Loaded {len(data)} courses from local JSON")
|
|
|
|
| 403 |
"""Carga los préstamos desde HF Dataset o archivo JSON local."""
|
| 404 |
if self.use_hf:
|
| 405 |
data = self._load_from_hf()
|
| 406 |
+
if data: # Si hay datos (no vacío)
|
| 407 |
print(f"[LoanManager] Loaded {len(data)} loans from HF Dataset")
|
| 408 |
return data
|
| 409 |
+
|
| 410 |
+
if data is not None:
|
| 411 |
+
print("[LoanManager] HF Dataset is empty, checking local...")
|
| 412 |
+
else:
|
| 413 |
+
print("[LoanManager] Failed to load from HF, checking local...")
|
| 414 |
|
| 415 |
data = self._load_from_local()
|
| 416 |
print(f"[LoanManager] Loaded {len(data)} loans from local JSON")
|
|
|
|
| 465 |
"""Carga los rostros desde HF Dataset o archivo JSON local."""
|
| 466 |
if self.use_hf:
|
| 467 |
data = self._load_from_hf()
|
| 468 |
+
if data: # Si hay datos (no vacío)
|
| 469 |
print(f"[FaceManager] Loaded {len(data)} faces from HF Dataset")
|
| 470 |
return data
|
| 471 |
+
|
| 472 |
+
if data is not None:
|
| 473 |
+
print("[FaceManager] HF Dataset is empty, checking local...")
|
| 474 |
+
else:
|
| 475 |
+
print("[FaceManager] Failed to load from HF, checking local...")
|
| 476 |
|
| 477 |
data = self._load_from_local()
|
| 478 |
print(f"[FaceManager] Loaded {len(data)} faces from local JSON")
|
app/templates/miembros.html
CHANGED
|
@@ -24,7 +24,7 @@
|
|
| 24 |
<!-- Tarjeta para Classroom Maker -->
|
| 25 |
<a href="/classroom" class="card glass" style="border-bottom: 4px solid #10b981;">
|
| 26 |
<i class="fas fa-chalkboard-teacher"></i>
|
| 27 |
-
<h2>CLASSROOM MAKER</h2>
|
| 28 |
<p class="text-dim">Control de asistencia y gestión de aulas inteligentes.</p>
|
| 29 |
</a>
|
| 30 |
</div>
|
|
|
|
| 24 |
<!-- Tarjeta para Classroom Maker -->
|
| 25 |
<a href="/classroom" class="card glass" style="border-bottom: 4px solid #10b981;">
|
| 26 |
<i class="fas fa-chalkboard-teacher"></i>
|
| 27 |
+
<h2>CLASSROOM MAKER(Beta)</h2>
|
| 28 |
<p class="text-dim">Control de asistencia y gestión de aulas inteligentes.</p>
|
| 29 |
</a>
|
| 30 |
</div>
|