Пример #1
0
 def calculo_correcciones(self, inst_destino_id=None, inst_concepto_id=None, tipo_calculo='Promedio con Concepto'):
     """Simula y muestra los cálculos de correcciones para una instancia destino dada"""
     curso = self.get_curso_actual()
     if inst_destino_id and inst_concepto_id:
         inst_destino = InstanciaExaminacion.get(inst_destino_id)
         inst_concepto = InstanciaExaminacion.get(inst_concepto_id)
         calculador = self.crear_calculador(tipo_calculo, curso, inst_destino, inst_concepto)
         resultados = calculador.simular()
     else:
         resultados = []
     instancias_opts = [(i.id,i.longrepr()) for i in curso.instancias_examinacion_a_corregir]
     options = dict(inst_destino_id=instancias_opts, inst_concepto_id=instancias_opts)
     value = dict(tipo_calculo=tipo_calculo, inst_destino_id=inst_destino_id, inst_concepto_id=inst_concepto_id)
     return dict(records=resultados, name=name, namepl=namepl, form=calculo_correcciones_form,
         value=value, options=options, limit_to=identity.current.user.paginador)
Пример #2
0
    def aplicar_calculo_correcciones(self,tipo_calculo, inst_destino_id, inst_concepto_id, entregador_id = None):
        """Aplica el cálculo de correccion para una instancia destino dada"""
        curso = self.get_curso_actual()
        inst_destino = InstanciaExaminacion.get(inst_destino_id)
        inst_concepto = InstanciaExaminacion.get(inst_concepto_id)
        calculador = self.crear_calculador(tipo_calculo, curso, inst_destino, inst_concepto)
        docente = identity.current.user

        if entregador_id:
            alumno_inscripto = AlumnoInscripto.get(entregador_id)
            calculador.aplicar(docente, alumno_inscripto)
        else:
            calculador.aplicar_todas(docente)

        raise redirect('calculo_correcciones', inst_destino_id=inst_destino_id, inst_concepto_id=inst_concepto_id)
Пример #3
0
    def delete(self, instanciaID, entregadorID, justAssign=False):
        instancia = InstanciaExaminacion.get(instanciaID)
        entregador = Entregador.get(entregadorID)
	docente = identity.current.user
        try:
            docente.eliminar_correccion(entregador, instancia)
            raise redirect('resumen_entregas', instanciaID=instanciaID)
        except AlumnoSinEntregas:
            flash(_(u'El alumno %s no realizó ninguna entrega para la '
                u'instancia %s') % (alumno, instancia))
            raise redirect('resumen_entregas', instanciaID=instanciaID)
Пример #4
0
    def new(self, instanciaID, entregadorID, justAssign=False):
        instancia = InstanciaExaminacion.get(instanciaID)
        entregador = Entregador.get(entregadorID)
	docente = identity.current.user
        try:
            correccion = docente.corregir(entregador, instancia)
            if justAssign:
                raise redirect('resumen_entregas', instanciaID=instanciaID)
            else:
                raise redirect('edit', correccionID = correccion.id)
        except AlumnoSinEntregas:
            flash(_(u'El entregador %s no realizó ninguna entrega para la '
                u'instancia %s') % (entregador, instancia))
            raise redirect('resumen_entregas', instanciaID=instanciaID)
Пример #5
0
 def resumen_entregas(self,instanciaID=None, desertoresFLAG=None, soloMiasFLAG=None, csv=None):
     """Lista un resumen de los alumnos, sus entregas y correcciones para una instancia dada"""
     instancia_anterior = None
     if instanciaID:
         instancia = InstanciaExaminacion.get(instanciaID)
         if not desertoresFLAG:
           r = [x for x in instancia.get_resumen_entregas() if x.tiene_entregas]
         else:
           r = instancia.get_resumen_entregas()
         if soloMiasFLAG is not None:
             r = [x for x in r if x.correccion is not None and x.correccion.corrector.docente.id == identity.current.user.id]
         for i in r:
             i.corrector_anterior = None
             i.nota_anterior = None
             i.instancia_anterior = None 
         instancia_anterior = instancia
         while instancia_anterior.get_instancia_anterior() is not None:
             instancia_anterior = instancia_anterior.get_instancia_anterior()
             resumen = dict([(c.entregador, c) for c in instancia_anterior.correcciones])
             for i in r:
                 if i.entregador in resumen and i.corrector_anterior is None:
                     i.corrector_anterior = resumen[i.entregador].corrector.docente.usuario
                     i.nota_anterior = resumen[i.entregador].nota
                     i.instancia_anterior = instancia_anterior
     else:
         r = []
     instancias_opts = [(i.id,i.longrepr()) for i in self.get_curso_actual().instancias_examinacion_a_corregir]
     options = dict(instanciaID=instancias_opts)
     vfilter = dict(instanciaID=instanciaID, desertoresFLAG = desertoresFLAG, soloMiasFLAG=soloMiasFLAG)
     # Este método puede retornar un archivo csv
     if csv is not None:
         header = u'Padrón,Alumno,Corrector,Nota,Observaciones\n'
         lines = [('%s,"%s","%s",%f,"%s"' % (  i.entregador.alumno.padron, i.entregador.alumno.nombre, i.correccion.corrector,
                                                     i.correccion.nota if i.correccion.nota is not None else -1.0, i.correccion.observaciones))
                                                                  for i in r if i.correccion is not None]
         data = '\n'.join(lines)
         return self.enviar_csv(header+data, 'planilla.csv')
     else:
         return dict(records=r, name=name, namepl=namepl, form=filtro_resumen_entregas,
         vfilter=vfilter, options=options, instanciaID=instanciaID, desertoresFLAG=desertoresFLAG, soloMiasFLAG=soloMiasFLAG,
         docenteActual=identity.current.user.id, hayAnterior=instancia_anterior is not None, limit_to=identity.current.user.paginador)