# coding=utf-8 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_2 col1=[{"label":"Razon","type":"text","name":"razon","require":"1"}] col1_add=[{"label":"Enfermera","type":"list","name":"enfermera_id","enfermera":"1"}, {"label":"Estudiante","type":"list","name":"estudiante_id","estudiante":"1"}, {"label":"Razon","type":"text","name":"razon","require":"1"}] col2=[{"label":"Acciones","type":"text","name":"acciones","require":"1"}, {"label":"Fecha","type":"datetime-local","name":"fecha","require":"1"}] form_order= {"entradas":{"col1":col1,"col2":col2}} form_order_add= {"entradas":{"col1":col1_add,"col2":col2}} visita_col=["razon", "acciones", 'fecha'] visita_col_add=["razon", "acciones", 'fecha', 'enfermera_id', 'estudiante_id'] def prepara_values_visita(data): values_list={} for item in visita_col: if item=="datetime-local": values_list.update({item:valida_fecha_2(data[item])}) else: values_list.update({item:data[item]}) return values_list def prepara_values_visita_add(data): values_list={} for item in visita_col_add: if item=="datetime-local": values_list.update({item:valida_fecha_2(data[item])}) else: values_list.update({item:data[item]}) return values_list # esta funcion se encarga de editar las entradas de visitas def edit(data): visitas_enfermeria = db.Table('visitas_enfermeria', metadata, autoload=True, autoload_with=engine) values_list=prepara_values_visita(data) query = db.update(visitas_enfermeria).values(values_list) query = query.where(visitas_enfermeria.columns.id == data['id']) ResultProxy = connection.execute(query,values_list) return redirect(url_for("formas",perfil='enfermeria', accion="edit", tipo="visitas_enfermeria", id=data['id'])) # esta funcion se encarga de crear nuevas entradas a las visitas def add(data): visitas_enfermeria = db.Table('visitas_enfermeria', metadata, autoload=True, autoload_with=engine) values_list=prepara_values_visita_add(data) query = db.insert(visitas_enfermeria).values(values_list) ResultProxy = connection.execute(query,values_list) return redirect(url_for("formas",perfil='enfermeria', accion="add", tipo="visitas_enfermeria", id=data['id'])) def conseguir_lista(tabla): values= {} personas = db.Table(tabla, metadata, autoload=True, autoload_with=engine) usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine) query = db.select([usuarios.columns.nombres, usuarios.columns.apellidos, usuarios.columns.id]) query = query.select_from(personas).where(personas.columns.user_id == usuarios.columns.id) result = connection.execute(query).fetchall() i = 0 for persona in result: value = {} value.update({"name":persona[0] + ' ' + persona[1]}) value.update({"id":persona[2]}) values.update({"value"+str(i):value}) i+=1 return values # cuando se desea add datos de la base de datos, esta funcion def add_form(): i=1 orden=1 entradas={} for col in form_order_add["entradas"]: col_data=[] for item in form_order_add["entradas"][col]: item.update({"tabindex":orden}) if(item['label'] == 'Enfermera'): values = conseguir_lista('enfermeras') item.update({"values":values}) if(item['label'] == 'Estudiante'): values = conseguir_lista('estudiantes') item.update({"values":values}) item.update({"disabled":False}) orden+=1 entradas.update({"col"+str(i):col_data}) i+=1 data= {"titulo":"Enfermera","accion":"AƱadir"} data.update(form_order_add) data.update({"abled":True}) return jsonify(data) def edit_form(id, disabled=False): visitas_enfermeria = db.Table('visitas_enfermeria', metadata, autoload=True, autoload_with=engine) query = db.select([visitas_enfermeria.columns.razon, visitas_enfermeria.columns.acciones, visitas_enfermeria.columns.fecha]) query = query.select_from(visitas_enfermeria).where(visitas_enfermeria.columns.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"]])}) elif item["type"]=="datetime-local": item.update({"value":valida_fecha_2(str(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 data= {"titulo":"Visitas Enfermeria","accion":"Editar"} data.update({"entradas":entradas}) abled=True if disabled: abled=False data.update({"abled":abled}) return jsonify(data)