No Description

facultad.py 4.9KB

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