123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- # coding=utf-8
- from connect import connection, engine, metadata
- import sqlalchemy as db
- from flask import jsonify, redirect, url_for, render_template
- import json
- # import index.py
- from funciones import valida_fecha
-
- 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"}]
- 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}]
- form_order= {"entradas":{"col1":col1,"col2":col2}}
- usuarios_col=["nombres", "apellidos", "email", "fecha_nacimiento", "genero", "direccion1", "direccion2", "ciudad", "pais", "zipcode", "telefono1", "telefono2"]
- estudiantes_col=["grado", "educacion_especial"]
-
- def prepara_values_usuario(data):
- values_list={}
- for item in usuarios_col:
- if item=="fecha_nacimiento":
- values_list.update({item:valida_fecha(data[item])})
- else:
- values_list.update({item:data[item]})
- return values_list
-
- def prepara_values_estudiante(data):
- values_list={}
- for item in estudiantes_col:
- if item=="educacion_especial" and ("educacion_especial" not in data or data[item]=="0"):
- values_list.update({item:0})
- else:
- values_list.update({item:data[item]})
- return values_list
-
- def edit(data):
- usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
- values_list=prepara_values_usuario(data)
- query = db.update(usuarios).values(values_list)
- query = query.where(usuarios.columns.id == data['id'])
- ResultProxy = connection.execute(query,values_list)
-
- estudiantes = db.Table('estudiantes', metadata, autoload=True, autoload_with=engine)
- values_list=prepara_values_estudiante(data)
- query = db.update(estudiantes).values(values_list)
- query = query.where(estudiantes.columns.user_id == data['id'])
- ResultProxy = connection.execute(query,values_list)
- return redirect(url_for("formas",perfil='admin', accion="edit", tipo="estudiante", id=data['id']))
-
- def add(data):
- usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
- values_list=prepara_values_usuario(data)
- query = db.insert(usuarios).values(values_list)
- ResultProxy = connection.execute(query,values_list)
- inst_id=ResultProxy.lastrowid
-
- estudiantes = db.Table('estudiantes', metadata, autoload=True, autoload_with=engine)
- values_list=prepara_values_estudiante(data)
- values_list.update({"user_id":inst_id})
- query = db.insert(estudiantes).values(values_list)
- ResultProxy = connection.execute(query,values_list)
- return redirect(url_for("formas",perfil='admin', accion="edit", tipo="estudiante", id=inst_id))
-
-
- def add_form():
- i=1
- orden=1
- entradas={}
- for col in form_order["entradas"]:
- col_data=[]
- for item in form_order["entradas"][col]:
- item.update({"tabindex":orden})
- item.update({"disabled":False})
- orden+=1
- entradas.update({"col"+str(i):col_data})
- i+=1
- data= {"titulo":"Estudiante","accion":"Añadir"}
- data.update(form_order)
- data.update({"abled":True})
- return jsonify(data)
-
- def edit_form(id, disabled=False):
- estudiantes = db.Table('estudiantes', metadata, autoload=True, autoload_with=engine)
- usuarios = db.Table('usuarios', metadata, autoload=True, autoload_with=engine)
- query = db.select([usuarios, estudiantes.columns.grado, estudiantes.columns.educacion_especial])
- query = query.select_from(usuarios.join(estudiantes, usuarios.columns.id == estudiantes.columns.user_id)).where(estudiantes.columns.user_id == id)
- result = connection.execute(query).fetchall()
- if not len(result):
- return False
- for row in result:
- row_as_dict = dict(row)
- i=1
- orden=1
- entradas={}
- for col in form_order["entradas"]:
- col_data=[]
- for item in form_order["entradas"][col]:
- if item["type"]=="select":
- item.update({"value":{"id":row_as_dict[item["name"]]}})
- elif item["type"]=="checkbox":
- item.update({"value":int(row_as_dict[item["name"]])})
- else:
- item.update({"value":str(row_as_dict[item["name"]])})
- item.update({"tabindex":orden})
- item.update({"disabled":disabled})
- col_data.append(item)
- orden+=1
- entradas.update({"col"+str(i):col_data})
- i+=1
- data= {"titulo":"Estudiante","accion":"Editar"}
- data.update({"entradas":entradas})
- abled=True
- if disabled:
- abled=False
- data.update({"abled":abled})
- return jsonify(data)
|