backend/cuentas.py: restablece en bloque (todos menos leo y claude) y da de alta a varios desde backend/cuentas/2026-10-23_alta-sitios.json (jesush, miguel, joel, antonio, danielg); la contraseña la pide en la terminal. Miembros con sitio, correo y correo_alt; marca contrasena_inicial con aviso en el sitio hasta que la persona la cambie. Los ids de responsable se recalculan con el equipo de hoy. Lote 2026-10-23_usuarios-campo. Pruebas: tests-cuentas.sh (47). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016X4CAujMuib2tDqt9JRg6X
52 lines
2.7 KiB
JavaScript
52 lines
2.7 KiB
JavaScript
/* Sitio Drogheda: detalles que necesitan datos del servidor en todas las páginas.
|
|
- Junto a «Pendientes» en el menú lateral, cuántos hay abiertos (de /api/tareas/resumen).
|
|
- (23-oct) Quien sigue con la contraseña inicial (la que le dieron al darle acceso o al restablecerla) ve una
|
|
franja arriba con la liga a Mi cuenta. Lo dice /api/whoami; el servidor quita la marca cuando la cambia.
|
|
Si el servidor no responde, la página queda igual. */
|
|
(function () {
|
|
function cuentaPendientes() {
|
|
var ligas = [].slice.call(document.querySelectorAll('.md-nav--primary a.md-nav__link')).filter(function (a) {
|
|
try { return /\/tableros\/pendientes\/?$/.test(new URL(a.href, location.href).pathname); } catch (e) { return false; }
|
|
});
|
|
if (!ligas.length) return;
|
|
fetch('/api/tareas/resumen', { cache: 'no-store', credentials: 'same-origin' })
|
|
.then(function (r) { return r.ok ? r.json() : null; })
|
|
.then(function (j) {
|
|
if (!j || !j.ok || !j.por_pista) return;
|
|
var abiertos = 0;
|
|
Object.keys(j.por_pista).forEach(function (p) {
|
|
var e = j.por_pista[p] || {};
|
|
abiertos += (e['por-hacer'] || 0) + (e['en-curso'] || 0) + (e['bloqueado'] || 0);
|
|
});
|
|
var vencidos = (j.vencidas || []).length;
|
|
ligas.forEach(function (a) {
|
|
if (a.querySelector('.hg-cuenta')) return;
|
|
var s = document.createElement('span');
|
|
s.className = 'hg-cuenta' + (vencidos ? ' hg-cuenta--vencidos' : '');
|
|
s.textContent = abiertos;
|
|
s.title = abiertos + ' abiertos' + (vencidos ? ', ' + vencidos + ' vencido' + (vencidos > 1 ? 's' : '') : '');
|
|
a.appendChild(s);
|
|
});
|
|
})
|
|
.catch(function () {});
|
|
}
|
|
function avisoContrasena() {
|
|
fetch('/api/whoami', { cache: 'no-store', credentials: 'same-origin' })
|
|
.then(function (r) { return r.ok ? r.json() : null; })
|
|
.then(function (j) {
|
|
if (!j || !j.contrasena_inicial || document.querySelector('.hg-pass-inicial')) return;
|
|
var d = document.createElement('div');
|
|
d.className = 'hg-pass-inicial';
|
|
d.setAttribute('role', 'status');
|
|
d.innerHTML = '<b>Sigues con la contraseña inicial.</b> Cámbiala en <a href="/cuenta.html">Mi cuenta</a>: '
|
|
+ 'así nadie más puede entrar con tu usuario.';
|
|
var main = document.querySelector('.md-main');
|
|
if (main) main.parentNode.insertBefore(d, main); else document.body.insertBefore(d, document.body.firstChild);
|
|
})
|
|
.catch(function () {});
|
|
}
|
|
function arrancar() { cuentaPendientes(); avisoContrasena(); }
|
|
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', arrancar);
|
|
else arrancar();
|
|
})();
|