provisioning: alinear packs de demo con los del backend (clinica/spa/estetica/dental/custom)

This commit is contained in:
2026-10-11 05:55:29 +00:00
parent 94f2045bfe
commit 75736967ef
2 changed files with 11 additions and 8 deletions

View File

@@ -32,7 +32,7 @@ import traceback
# (nombre, precio, duración_min, categoría) por giro. La categoría usa la
# selección de skeen.servicio: consulta | tratamiento | procedimiento | paquete.
PACKS = {
'generico': [
'custom': [
('Consulta general', 600, 30, 'consulta'),
('Consulta de seguimiento', 450, 30, 'consulta'),
('Tratamiento básico', 800, 45, 'tratamiento'),
@@ -68,7 +68,7 @@ PACKS = {
('Valoración preoperatoria', 1100, 45, 'consulta'),
('Paquete 10 terapias', 6500, 50, 'paquete'),
],
'derma': [
'dental': [
('Consulta dermatológica', 900, 30, 'consulta'),
('Consulta de seguimiento', 600, 20, 'consulta'),
('Limpieza facial profunda', 950, 50, 'tratamiento'),
@@ -82,6 +82,9 @@ PACKS = {
],
}
# 'estetica' comparte el set del spa (mismo perfil de servicios) para el demo.
PACKS['estetica'] = PACKS['spa']
DEMO_PATIENTS = [
('Ana López Márquez', '6681230001', 'F'), ('Carlos Ruiz Peña', '6681230002', 'M'),
('María Fernanda Soto', '6681230003', 'F'), ('Jorge Alberto Nava', '6681230004', 'M'),
@@ -191,7 +194,7 @@ def seed_glossary(env, ICP, cfg, report):
- llave ir.config_parameter 'skeen.glosario' ya existe -> se actualiza;
- modelo 'skeen.glosario' existe -> se crea/actualiza un registro;
- ninguno de los dos existe -> TODO (no aborta)."""
pack = cfg.get('pack') or 'generico'
pack = cfg.get('pack') or 'clinica'
raw = ICP.get_param('skeen.glosario')
if raw is not None:
try:
@@ -264,11 +267,11 @@ def seed_service_category(env, cfg, report):
if not has_model(env, 'skeen.service.category'):
report['todo'].append(
"skeen.service.category: modelo ausente; cuando exista, sembrar la "
"semilla de categorías del pack '%s'" % (cfg.get('pack') or 'generico'))
"semilla de categorías del pack '%s'" % (cfg.get('pack') or 'clinica'))
return
Model = env['skeen.service.category'].sudo()
cats = []
for _n, _p, _d, cat in PACKS.get(cfg.get('pack') or 'generico', PACKS['generico']):
for _n, _p, _d, cat in PACKS.get(cfg.get('pack') or 'clinica', PACKS['clinica']):
if cat not in cats:
cats.append(cat)
created = 0
@@ -292,7 +295,7 @@ def _mark(env, model, field, value, ids):
def seed_demo(env, cfg, report):
pack = PACKS.get(cfg.get('pack') or 'generico', PACKS['generico'])
pack = PACKS.get(cfg.get('pack') or 'clinica', PACKS['clinica'])
today = datetime.date.today()
week_start = today - datetime.timedelta(days=today.weekday())
ids = {'servicio': [], 'paciente': [], 'empleado': [], 'cita': [],

View File

@@ -48,7 +48,7 @@ NGINX_AVAILABLE = '/etc/nginx/sites-available'
NGINX_ENABLED = '/etc/nginx/sites-enabled'
SYSTEMD_DIR = '/etc/systemd/system'
REFERENCE_DB = 'skeen_odoo' # de aquí se toma la lista de módulos skeen
DEFAULT_PACK = 'generico'
DEFAULT_PACK = 'clinica'
SLUG_RE = re.compile(r'^[a-z0-9-]+$')
DB_RE = re.compile(r'^[a-z0-9_]+$')
@@ -157,7 +157,7 @@ def parse_args(argv=None):
help='rol PostgreSQL (default <slug>: rol propio con '
'password nueva; usar "skeen" para el rol compartido)')
ap.add_argument('--pack', default=DEFAULT_PACK,
choices=['generico', 'spa', 'clinica', 'derma'],
choices=['clinica', 'spa', 'estetica', 'dental', 'custom'],
help='giro para glosario y datos demo')
ap.add_argument('--demo', action='store_true', help='sembrar datos demo')
ap.add_argument('--demo-limpia', action='store_true',