No Description

madre.py 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. i=1
  54. orden=1
  55. entradas={}
  56. for col in form_order["entradas"]:
  57. col_data=[]
  58. for item in form_order["entradas"][col]:
  59. item.update({"tabindex":orden})
  60. item.update({"disabled":False})
  61. orden+=1
  62. entradas.update({"col"+str(i):col_data})
  63. i+=1
  64. data= {"titulo":"Madre","accion":"Añadir"}
  65. data.update(form_order)
  66. data.update({"abled":True})
  67. return jsonify(data)
  68. def edit_form(id, disabled=False):
  69. madre = db.Table('madres', metadata, autoload=True, autoload_with=engine)
  70. usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
  71. query = db.select([usuarios, madre.columns.otro1, madre.columns.otro2])
  72. query = query.select_from(usuarios.join(madre, usuarios.columns.id == madre.columns.user_id)).where(madre.columns.user_id == id)
  73. result = connection.execute(query).fetchall()
  74. if not len(result):
  75. return False
  76. for row in result:
  77. row_as_dict = dict(row)
  78. i=1
  79. orden=1
  80. entradas={}
  81. for col in form_order["entradas"]:
  82. col_data=[]
  83. for item in form_order["entradas"][col]:
  84. if item["type"]=="select":
  85. item.update({"value":{"id":row_as_dict[item["name"]]}})
  86. elif item["type"]=="checkbox":
  87. item.update({"value":int(row_as_dict[item["name"]])})
  88. else:
  89. item.update({"value":str(row_as_dict[item["name"]])})
  90. item.update({"tabindex":orden})
  91. item.update({"disabled":disabled})
  92. col_data.append(item)
  93. orden+=1
  94. entradas.update({"col"+str(i):col_data})
  95. i+=1
  96. data= {"titulo":"Madre","accion":"Editar"}
  97. data.update({"entradas":entradas})
  98. abled=True
  99. if disabled:
  100. abled=False
  101. data.update({"abled":abled})
  102. return jsonify(data)