Açıklama Yok

estudiante.py 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. data= {"titulo":"Estudiante","accion":"Añadir"}
  54. data.update(form_order)
  55. return jsonify(data)
  56. def edit_form(id):
  57. estudiantes = db.Table('estudiantes', metadata, autoload=True, autoload_with=engine)
  58. usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
  59. query = db.select([usuarios, estudiantes.columns.grado, estudiantes.columns.educacion_especial])
  60. query = query.select_from(usuarios.join(estudiantes, usuarios.columns.id == estudiantes.columns.user_id)).where(estudiantes.columns.user_id == id)
  61. result = connection.execute(query).fetchall()
  62. if not len(result):
  63. # return add_form()
  64. # return redirect(url_for("formas",accion="add",tipo="estudiante"))
  65. # return index.formas("add","estudiante")
  66. return False
  67. for row in result:
  68. row_as_dict = dict(row)
  69. i=1
  70. orden=1
  71. entradas={}
  72. for col in form_order["entradas"]:
  73. col_data=[]
  74. for item in form_order["entradas"][col]:
  75. if item["type"]=="select":
  76. item.update({"value":{"id":row_as_dict[item["name"]]}})
  77. elif item["type"]=="checkbox":
  78. item.update({"value":int(row_as_dict[item["name"]])})
  79. else:
  80. item.update({"value":str(row_as_dict[item["name"]])})
  81. item.update({"tabindex":orden})
  82. col_data.append(item)
  83. orden+=1
  84. entradas.update({"col"+str(i):col_data})
  85. i+=1
  86. data= {"titulo":"Estudiante","accion":"Editar"}
  87. data.update({"entradas":entradas})
  88. # print(data)
  89. return jsonify(data)
  90. # print(edit_form(1))
  91. # add()