Нема описа

estudiante.py 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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":"Grado","type":"number","name":"grado","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":"Educación Especial","type":"checkbox","name":"educacion_especial"}]
  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. estudiantes_col=["grado", "educacion_especial"]
  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_estudiante(data):
  21. values_list={}
  22. for item in estudiantes_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. estudiantes = db.Table('estudiantes', metadata, autoload=True, autoload_with=engine)
  35. values_list=prepara_values_estudiante(data)
  36. query = db.update(estudiantes).values(values_list)
  37. query = query.where(estudiantes.columns.user_id == data['id'])
  38. ResultProxy = connection.execute(query,values_list)
  39. return redirect(url_for("formas",accion="edit", tipo="estudiante", 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. estudiantes = db.Table('estudiantes', metadata, autoload=True, autoload_with=engine)
  47. values_list=prepara_values_estudiante(data)
  48. values_list.update({"user_id":inst_id})
  49. query = db.insert(estudiantes).values(values_list)
  50. ResultProxy = connection.execute(query,values_list)
  51. return redirect(url_for("formas",accion="edit", tipo="estudiante", 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":"Estudiante","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. estudiantes = db.Table('estudiantes', metadata, autoload=True, autoload_with=engine)
  70. usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
  71. query = db.select([usuarios, estudiantes.columns.grado, estudiantes.columns.educacion_especial])
  72. query = query.select_from(usuarios.join(estudiantes, usuarios.columns.id == estudiantes.columns.user_id)).where(estudiantes.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":"Estudiante","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)