예제 #1
0
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('/')
예제 #2
0
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('/')
예제 #3
0
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('/')
예제 #4
0
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('/')
예제 #5
0
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('/')
예제 #6
0
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('/')
예제 #7
0
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('/')
예제 #8
0
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('/')
예제 #9
0
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('/')
예제 #10
0
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('/')