from connect import connection, engine, metadata import sqlalchemy as db from flask import jsonify, redirect, url_for, render_template import json # import index.py from funciones import valida_fecha col1=[{"label":"Nombres","type":"text","name":"nombres","require":"1"},{"label":"Apellidos","type":"text","name":"apellidos","require":"1"},{"label":"Email","type":"email","name":"email","require":"1"},{"label":"Fecha de Nacimiento","type":"date","name":"fecha_nacimiento","require":"1"},{"label":"Genero","type":"select","options":[{"id":"0","label":"Femenino"},{"id":"1","label":"Masculino"},{"id":"2","label":"Otro"}],"name":"genero","require":True},{"label":"Posicion","type":"text","name":"posicion","require":False},{"label":"Otro","type":"text","name":"otro","require":False}] col2=[{"label":"Dirección 1","type":"text","name":"direccion1","require":"1"},{"label":"Dirección 2","type":"text","name":"direccion2","require":False},{"label":"Ciudad","type":"text","name":"ciudad","require":"1"},{"label":"Pais","type":"text","name":"pais","require":"1"},{"label":"Zipcode","type":"text","name":"zipcode","require":"1"},{"label":"Teléfono 1","type":"tel","name":"telefono1","require":"1"},{"label":"Teléfono 2","type":"tel","name":"telefono2","require":False}] form_order= {"entradas":{"col1":col1,"col2":col2}} usuarios_col=["nombres", "apellidos", "email", "fecha_nacimiento", "genero", "direccion1", "direccion2", "ciudad", "pais", "zipcode", "telefono1", "telefono2"] administracion_col=["posicion","otro"] def prepara_values_usuario(data): values_list={} for item in usuarios_col: if item=="fecha_nacimiento": values_list.update({item:valida_fecha(data[item])}) else: values_list.update({item:data[item]}) return values_list def prepara_values_administracion(data): values_list={} for item in administracion_col: if item=="educacion_especial" and ("educacion_especial" not in data or data[item]=="0"): values_list.update({item:0}) else: values_list.update({item:data[item]}) return values_list def edit(data): usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine) values_list=prepara_values_usuario(data) query = db.update(usuarios).values(values_list) query = query.where(usuarios.columns.id == data['id']) ResultProxy = connection.execute(query,values_list) administracion = db.Table('administracion', metadata, autoload=True, autoload_with=engine) values_list=prepara_values_administracion(data) query = db.update(administracion).values(values_list) query = query.where(administracion.columns.user_id == data['id']) ResultProxy = connection.execute(query,values_list) return redirect(url_for("formas",accion="edit", tipo="administracion", id=data['id'])) def add(data): usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine) values_list=prepara_values_usuario(data) query = db.insert(usuarios).values(values_list) ResultProxy = connection.execute(query,values_list) inst_id=ResultProxy.lastrowid administracion = db.Table('administracion', metadata, autoload=True, autoload_with=engine) values_list=prepara_values_administracion(data) values_list.update({"user_id":inst_id}) query = db.insert(administracion).values(values_list) ResultProxy = connection.execute(query,values_list) return redirect(url_for("formas",accion="edit", tipo="administracion", id=inst_id)) def add_form(): i=1 orden=1 entradas={} for col in form_order["entradas"]: col_data=[] for item in form_order["entradas"][col]: item.update({"tabindex":orden}) item.update({"disabled":False}) orden+=1 entradas.update({"col"+str(i):col_data}) i+=1 data= {"titulo":"Administración","accion":"Añadir"} data.update(form_order) data.update({"abled":True}) return jsonify(data) def edit_form(id, disabled=False): administracion = db.Table('administracion', metadata, autoload=True, autoload_with=engine) usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine) query = db.select([usuarios, administracion.columns.posicion, administracion.columns.otro]) query = query.select_from(usuarios.join(administracion, usuarios.columns.id == administracion.columns.user_id)).where(administracion.columns.user_id == id) result = connection.execute(query).fetchall() if not len(result): return False for row in result: row_as_dict = dict(row) i=1 orden=1 entradas={} for col in form_order["entradas"]: col_data=[] for item in form_order["entradas"][col]: if item["type"]=="select": item.update({"value":{"id":row_as_dict[item["name"]]}}) elif item["type"]=="checkbox": item.update({"value":int(row_as_dict[item["name"]])}) else: item.update({"value":str(row_as_dict[item["name"]])}) item.update({"tabindex":orden}) item.update({"disabled":disabled}) col_data.append(item) orden+=1 entradas.update({"col"+str(i):col_data}) i+=1 titulo_accion="Editar" if disabled: titulo_accion="Ver" data= {"titulo":"Administración","accion":titulo_accion} data.update({"entradas":entradas}) abled=True if disabled: abled=False data.update({"abled":abled}) return jsonify(data) # print(edit_form(1)) # add()