No Description

enfermera.py 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. from connect import connection, engine, metadata
  2. import sqlalchemy as db
  3. from flask import jsonify, redirect, url_for, render_template
  4. import json
  5. # import index.py
  6. from funciones import valida_fecha
  7. 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":"Especialidad","type":"text","name":"especialidad","require":False},{"label":"Otro","type":"text","name":"otro","require":False}]
  8. 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}]
  9. form_order= {"entradas":{"col1":col1,"col2":col2}}
  10. usuarios_col=["nombres", "apellidos", "email", "fecha_nacimiento", "genero", "direccion1", "direccion2", "ciudad", "pais", "zipcode", "telefono1", "telefono2"]
  11. enfermera_col=["especialidad","otro"]
  12. def prepara_values_usuario(data):
  13. values_list={}
  14. for item in usuarios_col:
  15. if item=="fecha_nacimiento":
  16. values_list.update({item:valida_fecha(data[item])})
  17. else:
  18. values_list.update({item:data[item]})
  19. return values_list
  20. def prepara_values_enfermera(data):
  21. values_list={}
  22. for item in enfermera_col:
  23. if item=="educacion_especial" and ("educacion_especial" not in data or data[item]=="0"):
  24. values_list.update({item:0})
  25. else:
  26. values_list.update({item:data[item]})
  27. return values_list
  28. def edit(data):
  29. usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
  30. values_list=prepara_values_usuario(data)
  31. query = db.update(usuarios).values(values_list)
  32. query = query.where(usuarios.columns.id == data['id'])
  33. ResultProxy = connection.execute(query,values_list)
  34. enfermera = db.Table('enfermeras', metadata, autoload=True, autoload_with=engine)
  35. values_list=prepara_values_enfermera(data)
  36. query = db.update(enfermera).values(values_list)
  37. query = query.where(enfermera.columns.user_id == data['id'])
  38. ResultProxy = connection.execute(query,values_list)
  39. return redirect(url_for("formas",accion="edit", tipo="enfermera", id=data['id']))
  40. def add(data):
  41. usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
  42. values_list=prepara_values_usuario(data)
  43. query = db.insert(usuarios).values(values_list)
  44. ResultProxy = connection.execute(query,values_list)
  45. inst_id=ResultProxy.lastrowid
  46. enfermera = db.Table('enfermeras', metadata, autoload=True, autoload_with=engine)
  47. values_list=prepara_values_enfermera(data)
  48. values_list.update({"user_id":inst_id})
  49. query = db.insert(enfermera).values(values_list)
  50. ResultProxy = connection.execute(query,values_list)
  51. return redirect(url_for("formas",accion="edit", tipo="enfermera", id=inst_id))
  52. def add_form():
  53. data= {"titulo":"Enfermera","accion":"Añadir"}
  54. data.update(form_order)
  55. return jsonify(data)
  56. def edit_form(id):
  57. enfermera = db.Table('enfermeras', metadata, autoload=True, autoload_with=engine)
  58. usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
  59. query = db.select([usuarios, enfermera.columns.especialidad, enfermera.columns.otro])
  60. query = query.select_from(usuarios.join(enfermera, usuarios.columns.id == enfermera.columns.user_id)).where(enfermera.columns.user_id == id)
  61. result = connection.execute(query).fetchall()
  62. # print(result)
  63. if not len(result):
  64. # return add_form()
  65. # return render_template(url_for("formas",accion="add",tipo="enfermera"))
  66. # return index.formas("add","enfermera")
  67. return False
  68. # return redirect("http://127.0.0.1:5000/error/enfermera/"+id)
  69. # return redirect(url_for("maneja_error_user",id=id,tipo="enfermera"))
  70. # return render_template("error.html",id=id,tipo="enfermera")
  71. for row in result:
  72. row_as_dict = dict(row)
  73. i=1
  74. orden=1
  75. entradas={}
  76. for col in form_order["entradas"]:
  77. col_data=[]
  78. for item in form_order["entradas"][col]:
  79. if item["type"]=="select":
  80. item.update({"value":{"id":row_as_dict[item["name"]]}})
  81. elif item["type"]=="checkbox":
  82. item.update({"value":int(row_as_dict[item["name"]])})
  83. else:
  84. item.update({"value":str(row_as_dict[item["name"]])})
  85. item.update({"tabindex":orden})
  86. col_data.append(item)
  87. orden+=1
  88. entradas.update({"col"+str(i):col_data})
  89. i+=1
  90. data= {"titulo":"Enfermera","accion":"Editar"}
  91. data.update({"entradas":entradas})
  92. # print(data)
  93. return jsonify(data)
  94. # print(edit_form(1))
  95. # add()