Sin descripción

madre.py 4.7KB

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":"Otro","type":"text","name":"otro1","require":False},{"label":"Otro","type":"text","name":"otro2","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. madre_col=["otro1","otro2"]
  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_madre(data):
  21. values_list={}
  22. for item in madre_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. madre = db.Table('madres', metadata, autoload=True, autoload_with=engine)
  35. values_list=prepara_values_madre(data)
  36. query = db.update(madre).values(values_list)
  37. query = query.where(madre.columns.user_id == data['id'])
  38. ResultProxy = connection.execute(query,values_list)
  39. return redirect(url_for("formas",accion="edit", tipo="madre", 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. madre = db.Table('madres', metadata, autoload=True, autoload_with=engine)
  47. values_list=prepara_values_madre(data)
  48. values_list.update({"user_id":inst_id})
  49. query = db.insert(madre).values(values_list)
  50. ResultProxy = connection.execute(query,values_list)
  51. return redirect(url_for("formas",accion="edit", tipo="madre", id=inst_id))
  52. def add_form():
  53. data= {"titulo":"Madre","accion":"Añadir"}
  54. data.update(form_order)
  55. return jsonify(data)
  56. def edit_form(id):
  57. madre = db.Table('madres', metadata, autoload=True, autoload_with=engine)
  58. usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
  59. query = db.select([usuarios, madre.columns.otro1, madre.columns.otro2])
  60. query = query.select_from(usuarios.join(madre, usuarios.columns.id == madre.columns.user_id)).where(madre.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="madre"))
  66. # return index.formas("add","madre")
  67. return False
  68. # return redirect("http://127.0.0.1:5000/error/madre/"+id)
  69. # return redirect(url_for("maneja_error_user",id=id,tipo="madre"))
  70. # return render_template("error.html",id=id,tipo="madre")
  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":"Madre","accion":"Editar"}
  91. data.update({"entradas":entradas})
  92. # print(data)
  93. return jsonify(data)
  94. # print(edit_form(1))
  95. # add()