def obtener_asistencia_a_tutoria(tid): #(token,tkdata) = warden._require_valid_token() """ !!!! TODO: esto se debe activar ni bien esté operativa la nueva version de warden if not warden.has_permissions(token, permisos=[NORMAS_CREATE]): return ('No tiene permisos para realizar esta acción', 403) """ #uid = tkdata['sub'] #if not _chequear_usuarios_tutorias(uid): # return ('No tiene permisos para realizar esta acción', 403) assert tid is not None try: with obtener_session() as session: asistencias = tutoriasModel.obtener_asistencia(session, tid) resultado = [{ 'id': a.id, 'alumno': a.alumno, 'situacion': a.situacion.situacion } for a in asistencias] return jsonify({'status': 200, 'response': resultado}) except Exception as e: return jsonify({'status': 500, 'response': str(e)})
def crear_asistencia(): try: datos = request.json tutoria_id = datos['id'] situacion_id = datos['situacion_id'] alumnos = datos['alumnos'] with obtener_session() as session: aid = [] for alumno_id in alumnos: aid.append( tutoriasModel.crear_asistencia(session, tutoria_id, alumno_id, situacion_id)) session.commit() return jsonify({ 'status': 200, 'response': { 'tutoria_id': tutoria_id, 'asistencias': aid } }) except Exception as e: return jsonify({'status': 500, 'response': str(e)})
def eliminar_tutoria(tid): (token, tkdata) = warden._require_valid_token() if not tkdata: return ('Token expirado', 401) uid = tkdata['sub'] """ !!!! TODO: esto se debe activar ni bien esté operativa la nueva version de warden if not warden.has_permissions(token, permisos=[NORMAS_CREATE]): return ('No tiene permisos para realizar esta acción', 403) """ #if not _chequear_usuarios_tutorias(uid): # return ('No tiene permisos para realizar esta acción', 403) try: assert tid is not None with obtener_session() as session: tid = tutoriasModel.eliminar_tutoria(session, tid, uid) session.commit() return jsonify({'status': 200, 'response': tid}) except Exception as e: return jsonify({'status': 500, 'response': str(e)})
def obtener_tutorias(): (token, tkdata) = warden._require_valid_token() if not tkdata: return (401, 'Token expirado') uid = tkdata['sub'] """ !!!! TODO: esto se debe activar ni bien esté operativa la nueva version de warden if not warden.has_permissions(token, permisos=[NORMAS_CREATE]): return ('No tiene permisos para realizar esta acción', 403) """ #uid = tkdata['sub'] #if not _chequear_usuarios_tutorias(uid): # return ('No tiene permisos para realizar esta acción', 403) try: params = request.json with obtener_session() as session: tutorias = tutoriasModel.obtener_tutorias(session, uid) resultado = [{ 'id': t.id, 'fecha': t.fecha, 'materia': t.materia, 'comision': t.comision, 'aula': t.aula, 'tutor': t.tutor, 'nro_alumnos': t.nro_alumnos, 'asistencia': None } for t in tutorias] return jsonify({'status': 200, 'response': resultado}) except Exception as e: return jsonify({'status': 500, 'response': str(e)})
def obtener_tutoria(tid): (token, tkdata) = warden._require_valid_token() if not tkdata: return ('Token expirado', 401) uid = tkdata['sub'] """ !!!! TODO: esto se debe activar ni bien esté operativa la nueva version de warden if not warden.has_permissions(token, permisos=[NORMAS_CREATE]): return ('No tiene permisos para realizar esta acción', 403) """ #uid = tkdata['sub'] #if not _chequear_usuarios_tutorias(uid): # return ('No tiene permisos para realizar esta acción', 403) try: assert tid is not None with obtener_session() as session: t = tutoriasModel.obtener_tutoria(session, tid, uid) resultado = { 'id': t.id, 'fecha': t.fecha, 'materia': t.materia, 'comision': t.comision, 'aula': t.aula, 'tutor': t.tutor, 'nro_alumnos': t.nro_alumnos, 'asistencia': [{ 'id': a.id, 'alumno': a.alumno, 'situacion': a.situacion.situacion } for a in t.asistencia if not a.deleted], 'qr': _generar_qr_para_tutoria(tid) } return jsonify({'status': 200, 'response': resultado}) except Exception as e: return jsonify({'status': 500, 'response': str(e)})
def crear_tutoria(): (token, tkdata) = warden._require_valid_token() if not tkdata: return (401, 'Token expirado') """ !!!! TODO: esto se debe activar ni bien esté operativa la nueva version de warden if not warden.has_permissions(token, permisos=[NORMAS_CREATE]): return ('No tiene permisos para realizar esta acción', 403) """ #uid = tkdata['sub'] #if not _chequear_usuarios_tutorias(uid): # return ('No tiene permisos para realizar esta acción', 403) try: tutoria = request.json assert 'fecha' in tutoria assert 'hora_inicio' in tutoria assert 'materia' in tutoria assert 'comision' in tutoria assert 'aula' in tutoria tutoria['tutor_id'] = tkdata['sub'] fecha = parse(tutoria['fecha']) tutoria['fecha'] = fecha ''' parseo la hora de inicio como segundos a partir de las 00 ''' rhora = re.compile(r'(\d\d):(\d\d)') matchs = rhora.match(tutoria['hora_inicio']) if not matchs: raise Exception( f"formato incorrecto en la hora {tutoria['hora_inicio']}") _hora = matchs.group(1) _minutos = matchs.group(2) hora = int(_hora) * 60 * 60 + int(_minutos) * 60 tutoria['hora_inicio'] = hora with obtener_session() as session: tid = tutoriasModel.crear_tutoria(session, tutoria) session.commit() return jsonify({'status': 200, 'response': tid}) except Exception as e: return jsonify({'status': 500, 'response': str(e)})
if __name__ == '__main__': import datetime from tutorias.model import obtener_session from tutorias.model.entities.Tutorias import Tutoria, Coordinador import uuid import sys coordinador_id = sys.argv[1] with obtener_session() as session: coordinados = [ c.tutor_id for c in session.query(Coordinador).filter( Coordinador.coordinador_id == coordinador_id).all() ] tutores = [ t.tutor_id for t in session.query(Tutoria).distinct(Tutoria.tutor_id).all() ] agregar = list(filter(lambda t: t not in coordinados, tutores)) for a in agregar: c = Coordinador() c.id = str(uuid.uuid4()) c.created = datetime.datetime.utcnow() c.tutor_id = a c.coordinador_id = coordinador_id session.add(c) session.commit()