def addScore(asignaturaID, evalID): idProfesor = current_user.id asignaturasProfesor = bd.get_CodigosClasesImpartidas( con, idProfesor, semester, year) if asignaturaID in asignaturasProfesor: if request.method == "POST": puntajes = request.form.getlist("scores[]") matAlumno = request.form.get("alumno") itemsID = request.form.getlist("itemsID[]") for i in range(len(puntajes)): bd.ingresar_Puntaje(con, matAlumno, itemsID[i], puntajes[i]) evalIndex = request.args.get("evalIndex") evaluaciones = bd.get_listaEvaluacionesAsignatura( con, asignaturaID, semester, year) asignatura = bd.get_nombre_asignatura(con, asignaturaID) items = bd.get_ItemsEvaluacion(con, evalID) alumnos = bd.get_listaAlumnosAsignaturaSemestre( con, asignaturaID, semester, year) return render_template('evaluacion/addScore.html', asignatura=asignatura, evalIndex=evalIndex, alumnos=alumnos, items=items) else: return redirect('/')
def infAsignatura(codigoAsignatura = None): idProfesor = current_user.id nombreProfesor = current_user.name asignaturasProfesor = bd.get_CodigosClasesImpartidas(con, idProfesor, semester, year) if codigoAsignatura in asignaturasProfesor: nombreas = bd.get_nombre_asignatura(con,codigoAsignatura) #print(nombreas) asignatura = {'codigo':codigoAsignatura,'nombre':nombreas} alumnos = bd.get_listaAlumnosAsignaturaSemestre(con,codigoAsignatura,semester,year) #OBTENER DATOS PARA HACER GRAFICOS #obtener evaluaciones evaluaciones = bd.get_listaEvaluacionesAsignatura(con,codigoAsignatura,semester,year) #obtener items de evaluaciones items = [] #obtener resultados de cada item resItem = [] for ev in evaluaciones: items.extend(bd.get_ItemsEvaluacion(con,ev["id_evaluacion"])) for it in items: resItem.append(bd.get_ResultadosItem(con, it["id_item"])) RA = bd.get_ResultadosAsignatura(con,codigoAsignatura) promAlumnos = {} #PARA CALCULAR EL PROMEDIO DEL CURSO indiceRA = {} #INDICE EN CADA LISTA DE EN DONDE ESTA EL RA base = [['Name', 'Rendimiento alumno', 'Rendimiento general del curso']] for idx,ra in enumerate(RA): promAlumnos[ra["id_resultado"]] = 0 indiceRA[ra["id_resultado"]] = idx+1 base.append([ra["nombre"],0,0]) #AGREGAR DATOS PARA GRAFICO for alumno in alumnos: alumno["dataArray"] = copy.deepcopy(base) for idx,it in enumerate(items): puntos = bd.get_puntajesItem(con,alumno["num_matricula"],it["id_item"]) if puntos < 0: puntos = 0 for raItem in resItem[idx]: idr = raItem["id_resultado"] pond = raItem["ponderacion"] sumar = puntos*pond/100 alumno["dataArray"][indiceRA[idr]][1] = alumno["dataArray"][indiceRA[idr]][1] + sumar promAlumnos[idr] = promAlumnos[idr] + sumar for idr in promAlumnos: promAlumnos[idr] = promAlumnos[idr]/len(alumnos) for alumno in alumnos: for ra in RA: alumno["dataArray"][indiceRA[ra["id_resultado"]]][2] = promAlumnos[ra["id_resultado"]] return render_template('infAsignatura.html',asignatura = asignatura, alumnos = alumnos,RAs = RA) else: return redirect('/')
def infAlumno(codigoAsignatura = None, idAlumno = None): idProfesor = current_user.id nombreProfesor = current_user.name asignaturasProfesor = bd.get_CodigosClasesImpartidas(con, idProfesor, semester, year) if codigoAsignatura in asignaturasProfesor: nombreas = bd.get_nombre_asignatura(con,codigoAsignatura) nombreal = bd.get_nombre_alumno(con, idAlumno) alum = {'num_matricula':idAlumno, 'nombre':nombreal} asignatura = {'codigo':codigoAsignatura,'nombre':nombreas} RA = bd.get_ResultadosAsignatura(con,codigoAsignatura) evaluaciones = bd.get_listaEvaluacionesAsignatura(con,codigoAsignatura,semester,year) notasEval = [] items = [] resItem = [] for ev in evaluaciones: aux = bd.get_ItemsEvaluacion(con,ev["id_evaluacion"]) for it in aux: it["obtenido"] = bd.get_puntajesItem(con,idAlumno,it["id_item"]) notasEval.append(aux) items.extend(aux) for it in items: resItem.append(bd.get_ResultadosItem(con, it["id_item"])) promAlumnos = {} #PARA CALCULAR EL PROMEDIO DEL CURSO indiceRA = {} #INDICE EN CADA LISTA DE EN DONDE ESTA EL RA tablas = [] for idx,ra in enumerate(RA): promAlumnos[ra["id_resultado"]] = 0 indiceRA[ra["id_resultado"]] = idx tablas.append([['Categoria','valor'],['Puntaje máximo',0],['Puntaje promedio',0],['Puntaje alumno',0]]) alumnos = bd.get_listaAlumnosAsignaturaSemestre(con,codigoAsignatura,semester,year) flag = False for alumno in alumnos: for idx,it in enumerate(items): puntos = bd.get_puntajesItem(con,alumno["num_matricula"],it["id_item"]) if puntos < 0: puntos = 0 for raItem in resItem[idx]: idr = raItem["id_resultado"] pond = raItem["ponderacion"] sumar = puntos*pond/100 #alumno["dataArray"][indiceRA[idr]][1] = alumno["dataArray"][indiceRA[idr]][1] + sumar if alumno["num_matricula"] == idAlumno: tablas[indiceRA[idr]][3][1] = tablas[indiceRA[idr]][3][1] + sumar promAlumnos[idr] = promAlumnos[idr] + sumar if flag == False: tablas[indiceRA[idr]][1][1] = tablas[indiceRA[idr]][1][1] + it["puntaje_maximo"]*pond/100 flag = True for idr in promAlumnos: promAlumnos[idr] = promAlumnos[idr]/len(alumnos) tablas[indiceRA[idr]][2][1] = promAlumnos[idr] return render_template('detallesAlumno.html',asignatura = asignatura, alumno = alum, notasEval = notasEval, tablas = tablas) else: return redirect('/')
def addEval(codigoAsignatura=None): idProfesor = current_user.id nombreProfesor = current_user.name asignaturasProfesor = bd.get_CodigosClasesImpartidas( con, idProfesor, semester, year) if codigoAsignatura in asignaturasProfesor: if request.method == 'POST': # SACAR DATOS DE LA EVALUACION puntajes = [] cantItems = int(request.form.get("numItems")) ptotal = 0 resultados = [] enunciados = [] comentarios = [] for i in range(1, cantItems + 1): puntajes.append(int(request.form.get("puntaje" + str(i)))) ptotal += puntajes[-1] resultados.append(request.form.getlist("RA-" + str(i) + "[]")) comentarios.append( (request.form.getlist("COM-" + str(i) + "[]"))) enunciados.append((request.form.get("EN-" + str(i)))) print(comentarios) print(resultados) idEval = bd.nueva_Evaluacion(con, codigoAsignatura, semester, year, ptotal) for i in range(1, cantItems + 1): idItem = bd.nuevo_Item(con, idEval, puntajes[i - 1], enunciados[i - 1]) for res in resultados[i - 1]: res = ast.literal_eval(res) print(res) bd.asociar_ResultadoItem( con, idItem, res[0], comentarios[i - 1][int(res[1]) - 1], 1) return redirect( url_for('evaluacion.evaluation', asignaturaID=codigoAsignatura)) nombreas = bd.get_nombre_asignatura(con, codigoAsignatura) print(nombreas) asignatura = {'codigo': codigoAsignatura, 'nombre': nombreas} cantEval = len( bd.get_listaEvaluacionesAsignatura(con, codigoAsignatura, semester, year)) RA = bd.get_ResultadosAsignatura(con, codigoAsignatura) return render_template('addEval2.html', asignatura=asignatura, nEval=cantEval + 1, RAs=RA) # return render_template('addEval.html',asignatura = asignatura,nEval = cantEval + 1, RAs = RA) else: return redirect('/')
def evaluation(asignaturaID): idProfesor = current_user.id asignaturasProfesor = bd.get_CodigosClasesImpartidas(con, idProfesor, semester, year) if asignaturaID in asignaturasProfesor: evaluaciones = bd.get_listaEvaluacionesAsignatura(con,asignaturaID,semester,year) asignaturas = {} asignaturas['name'] = bd.get_nombre_asignatura(con,asignaturaID) asignaturas['ID'] = asignaturaID return render_template('evaluacion/eval.html', evaluaciones=evaluaciones, asignatura=asignaturas) else: return redirect('/')
def addScore(asignaturaID, evalID, num_alumn): idProfesor = current_user.id asignaturasProfesor = bd.get_CodigosClasesImpartidas(con, idProfesor, semester, year) if asignaturaID in asignaturasProfesor: if request.method == "POST": puntajes = request.form.getlist("scores[]") matAlumno = request.form.get("alumno") itemsID = request.form.getlist("itemsID[]") for i in range(len(puntajes)): bd.ingresar_Puntaje(con, matAlumno, itemsID[i], puntajes[i]) num_alumn += 1 evalIndex = request.args.get("evalIndex") evaluaciones = bd.get_listaEvaluacionesAsignatura(con,asignaturaID,semester,year) asignatura = bd.get_nombre_asignatura(con,asignaturaID) items = bd.get_ItemsEvaluacion(con,evalID) alumnos = bd.get_listaAlumnosAsignaturaSemestre(con, asignaturaID, semester, year) for i in alumnos: flag = True for j in items: puntaje = bd.consultar_puntaje(con, i['num_matricula'], j['id_item']) if puntaje != None: i['evaluado'] = True else: i['evaluado'] = False break #print(alumnos) cantAlumnos = len(alumnos) # while num_alumn <= cantAlumnos and alumnos[num_alumn-1]['evaluado'] == True: # num_alumn += 1 if num_alumn <= cantAlumnos: return render_template('evaluacion/addScore.html', asignatura=asignatura, evalIndex=evalIndex, alumnos=alumnos, items=items, al = alumnos[num_alumn-1], eval_ID = evalID, asignatura_ID = asignaturaID, eval_Index = evalIndex) else: return render_template('evaluacion/addScore.html', asignatura=asignatura, evalIndex=evalIndex, alumnos=alumnos, items=items, al = alumnos[0], eval_ID = evalID, asignatura_ID = asignaturaID, eval_Index = evalIndex) else: return redirect('/')
def infAsignatura(codigoAsignatura=None): idProfesor = current_user.id nombreProfesor = current_user.name asignaturasProfesor = bd.get_CodigosClasesImpartidas( con, idProfesor, semester, year) if codigoAsignatura in asignaturasProfesor: nombreas = bd.get_nombre_asignatura(con, codigoAsignatura) print(nombreas) asignatura = {'codigo': codigoAsignatura, 'nombre': nombreas} alumnos = bd.get_listaAlumnosAsignaturaSemestre( con, codigoAsignatura, semester, year) RA = bd.get_ResultadosAsignatura(con, codigoAsignatura) return render_template('infAsignatura.html', asignatura=asignatura, alumnos=alumnos, RAs=RA) else: return redirect('/')
def detallesEval(asignaturaID, evalID): idProfesor = current_user.id asignaturasProfesor = bd.get_CodigosClasesImpartidas( con, idProfesor, semester, year) if asignaturaID in asignaturasProfesor: asignatura = bd.get_nombre_asignatura(con, asignaturaID) evalIndex = request.args.get("evalIndex") items = bd.get_ItemsEvaluacion(con, evalID) items = sorted(items, key=lambda k: k["id_item"]) RAItems = [ bd.get_ResultadosItem(con, item["id_item"]) for item in items ] temp = [] for raitems in RAItems: for raitem in raitems: temp.append({ 'id_resultado': raitem["id_resultado"], 'nombre': raitem["nombre"] }) RAEval = list({v['id_resultado']: v for v in temp}.values()) #RAEval = bd.get_ResultadosAsignatura(con, asignaturaID) comentario = None return render_template('evaluacion/detalles.html', asignatura=asignatura, evalIndex=evalIndex, items=items, RAItems=RAItems, RAEval=RAEval) else: return redirect('/')
def detallesEval(asignaturaID, evalID): idProfesor = current_user.id asignaturasProfesor = bd.get_CodigosClasesImpartidas(con, idProfesor, semester, year) if asignaturaID in asignaturasProfesor: asignatura = {} asignatura["nombre"] = bd.get_nombre_asignatura(con,asignaturaID) asignatura["ID"] = asignaturaID evaluacion = {} evaluacion["index"] = request.args.get("evalIndex") evaluacion["ID"] = evalID items = bd.get_ItemsEvaluacion(con,evalID) items = sorted(items, key=lambda k:k["id_item"]) RAItems = [bd.get_ResultadosItem(con, item["id_item"]) for item in items] temp = [] for raitems in RAItems: for raitem in raitems: temp.append({'id_resultado':raitem["id_resultado"],'nombre':raitem["nombre"]}) RAEval = list({v['id_resultado']:v for v in temp}.values()) #RAEval = bd.get_ResultadosAsignatura(con, asignaturaID) comentario = None alumnos = bd.get_listaAlumnosAsignaturaSemestre(con, asignaturaID, semester, year) resultados = bd.get_resultadosEvaluacion(con,evalID) #agrego el campo de tiene o no tiene puntaje existe = False puntajemax = 0 for item in items: puntajemax += item["puntaje_maximo"] for alumno in alumnos: contador = 1 puntos = 0 for item in items: existe = False for resultado in resultados: matricula = resultado.get('id_alumno', 'Noexiste') if(matricula == alumno["num_matricula"] and item["id_item"] == resultado["id_item"]): existe = True puntos += resultado["puntaje_obtenido"] if(existe): #tiene.append({"num_matricula":alumno["num_matricula"],"tiene":True}) alumno[contador] = True else: #tiene.append({"num_matricula":alumno["num_matricula"],"tiene":False}) alumno[contador] = False contador += 1 if(existe): alumno["puntos"] = puntos alumno["puntajeMax"] = puntajemax else: alumno["puntos"] = "-" alumno["puntajeMax"] = puntajemax return render_template('evaluacion/detalles.html', asignatura=asignatura, evaluacion=evaluacion, items=items,RAItems=RAItems, RAEval=RAEval, alumnos=alumnos, resultados=resultados) else: return redirect('/')
def RAInfo(asignaturaID, RAID): idProfesor = current_user.id asignaturasProfesor = bd.get_CodigosClasesImpartidas( con, idProfesor, semester, year) if asignaturaID in asignaturasProfesor: items = {} general = {"sum": 0., "total": 0.} alumnos = {} puntajes = [] itemIDs = [] itemPuntMax = [] itemPond = [] infoRA = bd.get_dondeImparteRA(con, RAID) for row in infoRA: if row["evalID"] not in items: puntajes.extend(bd.get_resultadosEvaluacion( con, row['evalID'])) items[row["evalID"]] = [] items[row["evalID"]].append({ "ponderacion": row["ponderacion"], "comentario": row["comentario"] }) general["total"] += float(row["ponderacion"]) itemIDs.append(row["itemID"]) itemPuntMax.append(float(row["puntajeMax"])) itemPond.append(float(row["ponderacion"])) itemPunt = [0 for i in range(len(itemIDs))] generalSum = 0 for res in puntajes: if res["id_item"] in itemIDs: ind = itemIDs.index(res["id_item"]) else: continue itemPunt[ind] += res["puntaje_obtenido"] if res["id_alumno"] not in alumnos: alumnos[res["id_alumno"]] = {"sum": 0.} cumpl = (float(res["puntaje_obtenido"]) / itemPuntMax[ind]) * itemPond[ind] alumnos[res["id_alumno"]]["sum"] += cumpl generalSum += cumpl len_alumnos = float(len(alumnos)) if len_alumnos != 0: general["sum"] = generalSum / float(len(alumnos)) else: general["sum"] = 0.0 names = bd.get_listaAlumnosAsignaturaSemestre(con, asignaturaID, semester, year) for n in names: if n["num_matricula"] in alumnos: alumnos[n["num_matricula"]]["nombre"] = n["nombre"] asignatura = { "name": bd.get_nombre_asignatura(con, asignaturaID), "ID": asignaturaID } nombreRA = bd.get_nombreRA(con, RAID) print(items) return render_template('infoRA.html', items=items, general=general, RA=nombreRA, asignatura=asignatura, alumnos=alumnos) else: return redirect('/')