Ficha del invitado
Este enlace no es válido o ha caducado. Cuéntanos qué ha pasado desde el formulario de contacto y te mandamos uno nuevo.
{ELIGE_DIA}{esc(F['description'])}
"""Genera public/invitados.html a partir de guest_form.json (copia de las preguntas del formulario de Google).""" import html, json esc = html.escape F = json.load(open('guest_form.json', encoding='utf-8')) secciones, actual, nq = [], None, 0 consent = None for it in F['items']: t = it['type'] if t == 8: actual = {'titulo': it['title'], 'nota': it['desc'], 'preguntas': []} secciones.append(actual) elif t in (0, 1): nq += 1 actual['preguntas'].append({'id': f'q{nq:02d}', 'titulo': it['title'], 'desc': it['desc'], 'req': it['required'], 'largo': t == 1}) elif t == 4: consent = {'titulo': it['title'], 'opcion': it['options'][0], 'req': it['required']} consent_text = secciones[-1]['nota'] secciones.pop() # la última sección solo contiene las condiciones def pregunta(q): mark = ' *' if q['req'] else '' campo = (f'' if q['largo'] else f'') d = f'{esc(q["desc"])}' if q['desc'] else '' return f' ' EMAIL = ''' ''' bloques = [] for s in secciones: nota = f'\n
{esc(s["nota"])}
' if s['nota'] else '' bloques.append(f' ') bloques[0] = bloques[0].replace('', EMAIL + '\n ') def nav(i, total): ant = '' if i else '' sig = ('' if i == total - 1 else '') return f' \n ' FINAL = ''' ''' pasos = bloques + [FINAL] pasos = [p[:p.rindex(' ')] + nav(i, len(pasos)) for i, p in enumerate(pasos)] CUERPO = chr(10).join(pasos) ELIGE_DIA = '''Selecciona un día para continuar.
Este enlace no es válido o ha caducado. Cuéntanos qué ha pasado desde el formulario de contacto y te mandamos uno nuevo.
{ELIGE_DIA}{esc(F['description'])}