123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502 |
-
- #Comentar no es mi fuerte Gabriel Santiago
- #Este file es 'viejo' estoy editando más cosas. Pero ye
- #also los html's lo tengo en mi compu no los subo al git
-
-
- from flask import Flask, render_template, request, redirect, jsonify
-
- #flask_sqlalchemy es una excelente libreria para usar bases de datos
- from flask_sqlalchemy import SQLAlchemy
-
- import datetime, json
-
- app = Flask(__name__)
-
- #para sql segun lo que vi
- #hay que instalar un pymysql despues tener un file con lo de User, password, host, db
- #entonces then do something like
-
- #connect = 'mysql+pymysql://dbuser:password@dbHost/dbName
-
- #vi en sqlAlchemy documentation que no es necesario pymysql pero pymysql tiene cosas interesantes
-
- #entonces aqui fuera app.config[lo que esta abajo] = connect
-
- connect = 'mysql+pymysql://root@localhost/registro_escolar'
-
- app.config['SQLALCHEMY_DATABASE_URI'] = connect
-
- #aqui se crea el objeto db, utilizando el config de app
-
- db = SQLAlchemy(app)
-
- #aqui estan las clases que serian las tablas,
- #por alguna razon tienes que crear las tablas que vayas a usar en python
-
- #so like si creo una de maestros pues
- #class Maestro(db.model):
-
-
- #db.Column crea columna, el tipo de dato y tiene algunos features como primary_key, nullable, db.ForeignKey etc
-
- class usuarios(db.Model):
-
- id = db.Column(db.Integer, primary_key=True, autoincrement =True)
- nombres = db.Column(db.String(100))
- apellidos = db.Column(db.String(100))
- email = db.Column(db.String(100))
- username = db.Column(db.String(100), nullable = True)
- password = db.Column(db.String(100), nullable = True)
- fecha_nacimiento = db.Column(db.DateTime, default = datetime.datetime.now())
- direccion1 = db.Column(db.String(200), default = 'En la casa de tu mai')
- direccion2 = db.Column(db.String(200), default = 'En la casa de tu pai tambien')
- ciudad = db.Column(db.String(100), default ='En la ciudad de los dioses')
- pais = db.Column(db.String(100), default = 'Tu Pai')
- zipcode = db.Column(db.String(100), default= 'cabron' )
- telefono1 = db.Column(db.String(16),default= 'cabron' )
- telefono2 = db.Column(db.String(20),default= 'cabron' )
- genero = db.Column(db.String(30),default= 'cabron' )
-
-
- def __repr__(self):
- return 'Usuario ' + str(self.id)
-
-
- class cursos(db.Model):
- id = db.Column(db.Integer, primary_key=True, autoincrement = True)
- codigo = db.Column(db.String(12))
- titulo = db.Column(db.String(100))
- grado = db.Column(db.Integer)
- descripcion = db.Column(db.String(200))
-
- def __repr__(self):
- return 'Curso ' + str(self.id)
-
- class facultad(db.Model):
- user_id = db.Column(db.Integer, db.ForeignKey(usuarios.id), primary_key=True)
- especialidad = db.Column(db.String(200))
- educacion_especial = db.Column(db.Integer)
-
- class oferta(db.Model):
- id = db.Column(db.Integer, primary_key=True, autoincrement = True)
- oferta_id = db.Column(db.Integer, db.ForeignKey(cursos.id))
- semestre = db.Column(db.String(20))
- horario = db.Column(db.String(100))
-
- class facultad_ofrece(db.Model):
- id = db.Column(db.Integer, primary_key=True, autoincrement = True)
- oferta_id = db.Column(db.Integer, db.ForeignKey(oferta.id))
- facultad_id = db.Column(db.Integer, db.ForeignKey(facultad.user_id))
- porciento = db.Column(db.Integer, default = 100)
-
-
-
-
- class estudiantes(db.Model):
- user_id = db.Column(db.Integer, db.ForeignKey(usuarios.id), primary_key=True)
- grado = db.Column(db.Integer)
- educacion_especial = db.Column(db.String(30))
-
- def __repr__(self):
- return 'estudiante ' + str(self.user_id)
-
- class matricula(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- estudiante_id = db.Column(db.Integer, db.ForeignKey(estudiantes.user_id))
- oferta_id = db.Column(db.Integer, db.ForeignKey(oferta.id))
-
- class evaluaciones(db.Model):
- id = db.Column(db.Integer, primary_key =True, autoincrement = True)
- tipo = db.Column(db.String(100))
- valor = db.Column(db.Integer)
- fecha = db.Column(db.DateTime, default = datetime.datetime.now())
- oferta_id = db.Column(db.Integer, db.ForeignKey(oferta.id))
-
- class asistencia(db.Model):
- id = db.Column(db.Integer, primary_key = True, autoincrement = True)
- matricula_id = db.Column(db.Integer, db.ForeignKey(matricula.id))
- fecha = db.Column(db.DateTime, default = datetime.datetime.now())
- class notas(db.Model):
- id = db.Column(db.Integer)
- evaluacion_id = db.Column(db.Integer, db.ForeignKey(evaluaciones.id), primary_key=True)
- estudiante_id = db.Column(db.Integer, db.ForeignKey(estudiantes.user_id), primary_key=True)
- valor = db.Column(db.Integer)
-
- def __repr__(self):
- return 'nota ' +str(self.id)
-
-
-
- @app.route('/')
-
- def helloWorld():
- return render_template('index.html')
-
- @app.route('/addClass', methods=['GET', 'POST'])
- def addClass():
- if request.method == 'POST':
-
- post_codigo = request.form['codigo']
- post_titulo = request.form['titulo']
- post_grado = request.form['grado']
- post_descripcion = request.form['descripcion']
-
- curso_nuevo = cursos(codigo =post_codigo, titulo=post_titulo, grado = post_grado, descripcion=post_descripcion)
-
- db.session.add(curso_nuevo)
- db.session.commit()
- return redirect('/addClass')
- else:
- return render_template('addClases.html')
-
- #beta, felt cute in this pic might delete later
- #add notas
-
- @app.route ('/add', methods=['GET','POST'])
- def addSomething():
-
- if request.method =='POST':
-
- post_nombre = request.form['nombre']
- post_nota = request.form['Nota']
-
-
- nota_nueva = Notas(nombre=post_nota, valor = post_nota)
-
-
-
- db.session.add(nota_nueva)
- db.session.commit()
- return redirect('/addNota')
- else:
- return render_template('addSomething.html')
-
-
- @app.route('/addOferta', methods =['GET', 'POST'])
- def addOferta():
-
- if request.method =='POST':
- post_oferta_id = int(request.form['curso'])
- post_academico = request.form['academico']
- post_horario = request.form['horario']
-
- ofertaNueva = oferta(oferta_id =post_oferta_id, semestre = post_academico, horario =post_horario)
-
- db.session.add(ofertaNueva)
- db.session.commit()
-
- oferta_idQue = oferta.query.order_by(oferta.id.desc()).first().id
-
- count = int(request.form['countRow'])
-
- for x in range(count):
- post_maestro = int(request.form['Maestro[{}]'.format(x)])
-
- maestro_oferta= facultad_ofrece(oferta_id =oferta_idQue, facultad_id =post_maestro)
- db.session.add(maestro_oferta)
- db.session.commit()
-
- return redirect('/addOferta')
-
- else:
- cursosAll = cursos.query.all()
- maestrosAll = db.engine.execute('SELECT * FROM `facultad` f, `usuarios` u where f.user_id = u.id')
- ofertaAll = db.engine.execute('SELECT o.semestre, o.horario, f.oferta_id, count(f.facultad_id) cantidadMaestros, f.oferta_id, c.codigo, c.titulo, c.grado FROM `oferta` o, `cursos` c, `facultad_ofrece` f where o.curso_id =c.id and f.oferta_id = o.id group by f.oferta_id')
-
- return render_template('addOferta.html', cursos= cursosAll, maestros= maestrosAll, ofertas = ofertaAll)
-
-
-
-
- @app.route ('/addMatricula/<int:oferId>', methods =['GET', 'POST'])
- def addMatricula(oferId):
- if request.method =='POST':
- count = int(request.form['countRow'])
-
- for x in range(count):
- post_estudiante = int(request.form['estudiantes[{}]'.format(x)])
-
- matriculaNueva = matricula(estudiante_id = post_estudiante, oferta_id=oferId)
- db.session.add(matriculaNueva)
- db.session.commit()
-
- return redirect('/addMatricula/{}'.format(oferId))
-
-
-
-
- else:
- matriculadosAll = db.engine.execute('SELECT u.nombres, u.apellidos FROM `usuarios` u, `matricula` m where m.oferta_id ={} and m.estudiante_id = u.id ORDER BY u.apellidos'.format(oferId))
- estudiantesAll = db.engine.execute('SELECT u.apellidos, u.nombres, e.user_id FROM `usuarios` u, `estudiantes` e where u.id = e.user_id ORDER BY u.apellidos' )
- return render_template('addMatricula.html', estudiantes = estudiantesAll, oferId=oferId, matriculados = matriculadosAll)
-
-
-
- @app.route('/Maestro/<int:MaestroId>')
- def Maestro(MaestroId):
- cursosTodos = db.engine.execute('select c.codigo, o.horario, c.titulo, f.oferta_id from `oferta` o, `cursos` c, `facultad_ofrece` f where f.oferta_id = o.id and f.facultad_id = {} and o.curso_id =c.id'.format(MaestroId))
- return render_template('dashboard.html', MaestroId = MaestroId, los_cursos = cursosTodos)
-
-
-
- #@app.route('/Maestro/<int:MaestroId>/<int:ofertaId>')
- #def cursosPagina(MaestroId, ofertaId):
-
- # newCourses = cursos.query.filter_by(id=ofertaId).first()
- # return render_template('cursos.html',MaestroId = MaestroId, id=ofertaId, el_curso=newCourses)
-
- #Add estudiantes
-
- @app.route('/Maestro/<int:MaestroId>/<int:ofertaId>/addNota', methods =['GET','POST'])
- def addNota(MaestroId, ofertaId):
- if request.method =='POST':
- post_ofertaId = ofertaId
- post_tipo = request.form['tipo']
- post_valor = request.form['valor']
- post_fecha = request.form['Fecha']
- post_fecha = post_fecha.split('-')
-
-
- newEval = evaluaciones(oferta_id=post_ofertaId, tipo=post_tipo, valor = post_valor, fecha =datetime.date(int(post_fecha[0]),int(post_fecha[1]),int(post_fecha[2])))
-
- db.session.add(newEval)
- db.session.commit()
-
- last_entry = evaluaciones.query.filter_by(oferta_id=ofertaId).order_by(evaluaciones.id.desc()).first()
-
- return redirect('/Maestro/'+ str(MaestroId) + '/'+str(ofertaId)+'/addNota')
-
- else:
- newCourses = cursos.query.filter_by(id=ofertaId).first()
- allEval = evaluaciones.query.filter_by(oferta_id=ofertaId).all()
- bigList =[]
-
- for evaluacion in allEval:
- dictionary ={}
- dictionary['Valor'] = int(evaluacion.valor)
- dictionary['evalId'] = int(evaluacion.id)
- dictionary['tipo'] = evaluacion.tipo
- dictionary['fecha'] = str(evaluacion.fecha)
- bigList.append(dictionary)
-
- return render_template('addEvaluacion.html',MaestroId = MaestroId, el_curso=ofertaId, evaluaciones = allEval)
-
- @app.route('/Maestro/<int:MaestroId>/<int:ofertaId>/addNotas', methods = ['GET','POST'])
- def notas1(MaestroId, ofertaId):
-
-
- query = db.engine.execute('SELECT usuarios.id, usuarios.nombres, usuarios.apellidos from `notas`, `usuarios`, `evaluaciones` where evaluaciones.id = notas.evaluacion_id and notas.estudiante_id = usuarios.id and evaluaciones.oferta_id={} group by usuarios.id order by usuarios.apellidos'.format(ofertaId))
-
- notasQuery = db.engine.execute('SELECT notas.valor Saco, notas.estudiante_id, notas.evaluacion_id, evaluaciones.valor ValorReal from `notas`, `usuarios`, `evaluaciones` where evaluaciones.id = notas.evaluacion_id and notas.estudiante_id = usuarios.id and evaluaciones.oferta_id={} order by usuarios.apellidos, evaluaciones.id'.format(ofertaId))
-
- notasCompletaJson ={}
-
- query2 = db.engine.execute('SELECT id FROM `evaluaciones` where oferta_id = {}'.format(ofertaId))
-
- evalIds =[]
-
- for Id in query2:
- evalIds.append(int(Id.id))
-
-
- for estudiante in query:
- Evaluaciones =[]
- notasSaco = []
- notasQuery = db.engine.execute('SELECT notas.valor Saco, notas.estudiante_id, notas.evaluacion_id, evaluaciones.valor ValorReal from `notas`, `usuarios`, `evaluaciones` where evaluaciones.id = notas.evaluacion_id and notas.estudiante_id = usuarios.id and evaluaciones.oferta_id={} order by usuarios.apellidos, evaluaciones.id'.format(ofertaId))
-
- for nota in notasQuery:
- if nota.estudiante_id == estudiante.id:
-
- Evaluaciones.append(nota.evaluacion_id)
- notasSaco.append(nota.Saco)
-
- notasCompletaJson.setdefault(estudiante.id, {})['nombre'] = estudiante.nombres
- notasCompletaJson[estudiante.id]['apellidos'] = estudiante.apellidos
- notasCompletaJson[estudiante.id]['valorSaco'] = notasSaco
- notasCompletaJson[estudiante.id]['evaluacion'] = Evaluaciones
-
-
-
-
-
- if request.method =="POST":
- #post = request.get_json()
- post_stuId = int(request.get_json()['StudentId'])
- post_nota = int(request.get_json()['Nota'])
-
- post_id = int(request.get_json()['evalId'])
-
- Exists = notas.query.filter_by(estudiante_id=post_stuId, evaluacion_id=post_id).first()
-
- if(Exists):
-
- query =db.engine.execute('UPDATE `notas` SET valor ={} WHERE estudiante_id ={} and evaluacion_id={}'.format(post_nota, post_stuId, post_id))
-
- else:
- notaNueva = notas(evaluacion_id = post_id, estudiante_id=post_StuId, valor =post_nota)
- db.session.add(notaNueva)
-
- db.session.commit()
- #for x in range(int(post_filas)):
-
- # post_student = request.form['id_usuario[{}]'.format(x)]
-
-
- # for y in range(int(post_columnas)):
- # post_valor = request.form['evaluacion[{}][{}]'.format(x, y)]
- # post_evaluacionId =request.form['cantidadEval[{}]'.format(y)]
-
-
- # notaNueva = notas( evaluacion_id=post_evaluacionId, estudiante_id=post_student, valor = post_valor)
-
- # db.session.add(notaNueva)
- # db.session.commit()
-
- return redirect('/Maestro/'+str(MaestroId) +'/' + str(ofertaId)+'/addNota')
-
-
- else:
- evaluacionesTodos = db.engine.execute('select * from `evaluaciones` where oferta_id ={}'.format(ofertaId))
- estudiantes_Todos = db.engine.execute('select u.apellidos, u.nombres, u.id from `usuarios` u, `matricula` m where m.estudiante_id = u.id and m.oferta_id ={}'.format(ofertaId))
-
-
- return render_template('addNotas.html',MaestroId = MaestroId, evaluaciones = evaluacionesTodos, estudiantes=estudiantes_Todos, ofertaId = ofertaId, notasCompletas = notasCompletaJson, evalIds=evalIds)
-
-
-
- @app.route ('/estudiante', methods=['GET','POST'])
- def addStudent():
- if request.method == 'POST':
- #acentos = {'á':'á', 'é': 'é', 'í':'í', 'ó': 'ó', 'ú':'ú',
- #'ü':'ü', 'Á': 'Á', 'É': 'É', 'Í':'Í', 'Ó':'Ó', 'Ú':'Ú',
- #'Ü':'Ü', 'Ñ':'Ñ'}
-
- post_apellidos = request.form['apellidos']
- post_nombre = request.form['nombre']
- post_email = request.form['email']
- estudiante_nuevo = usuarios(email=post_email, nombres=post_nombre, apellidos=post_apellidos)
- db.session.add(estudiante_nuevo)
- db.session.commit()
-
- last_id= usuarios.query.order_by(usuarios.id.desc()).first().id
-
- if(request.form['Usuario'] == 'Estudiante'):
- post_grado = request.form['grado']
- post_educ = request.form['educ']
-
- #for key in acentos.keys():
- # post_apellidos= post_apellidos.replace(key,acentos[key])
- # post_nombre = post_nombre.replace(key,acentos[key])
-
-
- estudiante_nuevo = estudiantes(user_id=last_id, grado = post_grado, educacion_especial=post_educ)
- db.session.add(estudiante_nuevo)
- db.session.commit()
-
- else:
- post_especialidad = request.form['especialidad']
- maestro_nuevo = facultad(user_id = last_id, especialidad= post_especialidad, educacion_especial =0)
- db.session.add(maestro_nuevo)
- db.session.commit()
-
-
-
-
- #last_id= 8.query.order_by(usuarios.id.desc()).first()
- #db.session.add(estudiantes(user_id =last_id, grado=post_grado, educacion_especial =post_educ))
- #db.session.commit()
- return redirect('/estudiante')
- else:
- return render_template('estudiante.html')
-
- #beta, might delete later, add notas
-
- #@app.route('/addNota', methods = ['GET', 'POST'])
- #def addNota():
- # if request.method== 'POST':
- # for x in range(int(request.form['countPost'])):
- # post_email = request.form['email[{}]'.format(x)]
- # post_evaluacion = request.form['evaluacion[{}]'.format(x)]
- # print(post_email, post_evaluacion, '\n')
- #
- #
- # else:
- # estudiantes2 = estudiante.query.order_by(estudiante.apellidos).all()
- # return render_template('addNotas.html', estudiantes=estudiantes2)
-
-
-
-
-
-
-
- @app.route('/Maestro/<int:MaestroId>/<int:ofertaId>/verNotas')
- def cursosVerNotas(MaestroId, ofertaId):
-
- evaluacionesTodas = evaluaciones.query.filter_by(oferta_id=ofertaId).all()
- cursosTodos = cursos.query.filter_by(id=ofertaId).all()
-
- return render_template('verNotas.html', MaestroId = MaestroId, cursos=cursosTodos, evaluaciones=evaluacionesTodas)
-
- @app.route("/Maestro/<int:MaestroId>/<int:evalId>/verNotasEstudiantes")
- def verNotasEstudiantes(MaestroId, evalId):
-
- result = db.engine.execute('SELECT * FROM `notas` n, `usuarios` where n.evaluacion_id ={} and usuarios.id = n.estudiante_id'.format(evalId))
-
-
-
- #db.session.query(evaluacion, usuarios).join(Usuarios).filter(usuarios.id == evaluacion.estudiante_id).order_by(usuarios.apellidos)
-
- return render_template('verNotasEstudiantes.html',table=result, MaestroId = MaestroId, evalId=evalId)
-
-
-
- @app.route("/Maestro/<int:MaestroId>/<int:ofertaId>/addAsistencia", methods = ['POST', 'GET'])
- def pasarAsistencia(MaestroId, ofertaId):
-
- estudiantes_Todos = estudiantes_Todos = db.engine.execute('select u.apellidos, u.nombres, u.id from `usuarios` u, `matricula` m where m.estudiante_id = u.id and m.oferta_id ={}'.format(ofertaId))
-
-
- return render_template('Asistencia.html', MaestroId = MaestroId, estudiantes = estudiantes_Todos, cursos=ofertaId)
-
-
- #############################
- #
- #ESTUDIANTES
- #
- #############################
-
- @app.route('/dashEstudiantes/<int:estId>')
- def dashEstudiantes(estId):
- nombre = usuarios.query.filter_by(id=estId).first()
-
- return render_template('dashEstudiantes.html',nombre=nombre.nombres, estId=estId)
-
- @app.route('/dashEstudiantes/<int:estId>/notas')
- def dashEstNotas(estId):
- cursosMatri = cursos.query.all()
-
- resultEstudiante = db.engine.execute('SELECT sum(evaluaciones.valor) valorReal, sum(notas.valor) valorSaco, cursos.codigo, cursos.titulo, evaluaciones.oferta_id, matricula.estudiante_id FROM `cursos`, `matricula`, `oferta`, `notas`, `evaluaciones` where matricula.estudiante_id={} and evaluaciones.id=notas.evaluacion_id and matricula.estudiante_id=notas.estudiante_id and evaluaciones.oferta_id = oferta.id and matricula.oferta_id = evaluaciones.oferta_id and cursos.id = oferta.curso_id group by matricula.oferta_id'.format(estId))
- nombre = usuarios.query.filter_by(id=estId).first().nombres
- return render_template('estuNotas.html',nombre=nombre, todaNota = resultEstudiante, estId= estId)
-
-
- @app.route('/dashEstudiantes/<int:estId>/notas/<int:ofertaId>')
-
- def dashEstEval(estId, ofertaId):
- result = db.engine.execute('SELECT notas.valor valorSaco, evaluaciones.valor valorReal, evaluaciones.tipo from `evaluaciones`, `matricula`, `notas` where evaluaciones.oferta_id = {} and matricula.oferta_id = evaluaciones.oferta_id and matricula.estudiante_id={} and notas.estudiante_id=matricula.estudiante_id and notas.evaluacion_id = evaluaciones.id'.format(ofertaId, estId))
- nombre = usuarios.query.filter_by(id=estId).first().nombres
- return render_template('verEstuNotas.html',nombre=nombre, todo =result, estId=estId)
-
-
-
-
-
-
-
-
-
-
- if __name__ == "__main__":
- app.run(debug=True)
|