Пример #1
0
    def tarea(self):  # Entrega enunciado.
        '''
        Este metodo desencadena todas las funciones asociadas a la entrega del enunciado de la tarea.
        Se crean los futuros eventos que dependen de este.
        :return:
        '''
        # revisar: Pendiente considerar las dos semanas
        evento = Evento.evento_actual
        # Ejecucion de funciones:
        for alumno in Alumno.lista_alumnos:
            alumno.calc_nota_tarea(evento.numero_tipo)
        # Creación de entrega tarea: revisar:

        # Creacion de entrega proximo enunciado:
        try:
            prox_fecha = evento.tiempo + 14
            prox_contenido = Contenido.lista_contenidos[semana(prox_fecha)]
            Evaluacion(2, prox_fecha, prox_contenido)
            # Creación entrega de notas tarea:
            fecha = evento.tiempo + 14
            EntregaNotasCoord(7, fecha, (2, evento.numero_tipo))
            sim_logger.info(
                '[Día {dia}]: Se entregó el enunciado de la tarea {numero}.'.
                format(numero=evento.numero_tipo, dia=evento.tiempo))
        except BaseException:
            pass
Пример #2
0
 def nota_esperada(self):
     '''
     Esta property revisa cual es el contenido que se esta pasando actualmente llamando a la variable
     'contenido_actual' de la clase Contenido.
     Llama a la función del objeto 'Contenido' que permite calcular la nota esperada del alumno en base a la cantidad
     de horas que dedico al estudio de la materia. Se actualiza la variable 'nota_esperada' con el retorno de dicha
     funcion.
     :return:
     '''
     # Revisa si el valor esta actualizado, sino, lo actualiza:
     n_evento = Evento.evento_actual.numero
     evento_ult_act = self.__confianza[1]
     eventos_evaluaciones = [1, 2, 3, 4]
     # revisar: Asegurarse que siempre que hay un evento 'evaluacion' se
     # llame a la property 'nota esperada'
     if (evento_ult_act <
             n_evento) and (Evento.evento_actual.tipo
                            in eventos_evaluaciones):  # Es una evaluacion
         n_contenido = semana(Evento.evento_actual.tiempo)
         contenido = Contenido.lista_contenidos[n_contenido]
         dia_de_la_semana = Evento.evento_actual.tiempo % 7
         horas_hasta_dia = (self.horas_semana / 7) * dia_de_la_semana
         if horas_hasta_dia <= int(contenido.rango1[-1]):
             self.__nota_esperada[0] = round(uniform(1, 3.9), 2)
         elif horas_hasta_dia <= int(contenido.rango2[-1]):
             self.__nota_esperada[0] = round(uniform(4, 5.9), 2)
         elif horas_hasta_dia <= int(contenido.rango3[-1]):
             self.__nota_esperada[0] = round(uniform(6, 6.9), 2)
         elif horas_hasta_dia >= int(contenido.rango4[-1]):
             self.__nota_esperada[0] = 7
         self.__nota_esperada[1] = Evento.evento_actual.numero
     return self.__nota_esperada[0]
Пример #3
0
 def calc_nota_actividad(self, numero):
     # revisar: en caso de que exista la posibilidad de que hayan más
     # evaluaciones que la cantidad que se fijaron en un ptrincipio, el
     # programa deberá agregarlas haciendo append[nota esperada, nota final]
     num = semana(Evento.evento_actual.tiempo)
     exigencia = 7 + (randint(1, 5) /
                      Contenido.lista_contenidos[num].dificultad)
     self.notas_actividades[numero - 1][1] = round(
         max((self.progreso_act_actual / exigencia) * 7, 1), 2)
Пример #4
0
 def manejo_contenidos(self):
     if esta_actualizado(self.__manejo_de_contenidos[1]):
         return self.__manejo_de_contenidos[0]
     else:
         dificultad = Contenido.lista_contenidos[semana(
             Evento.evento_actual.tiempo)].dificultad
         self.__manejo_de_contenidos[0] = (1 /
                                           dificultad) * self.horas_semana
         self.__manejo_de_contenidos[1] = Evento.evento_actual.tiempo
         return self.__manejo_de_contenidos[0]
Пример #5
0
    def catedra(self):
        '''
        Este metodo desencadena todas las funciones asociadas a la realizaciond e la catedra.
        Se crean los futuros eventos que dependen de este.
        :return:
        '''
        evento = Evento.evento_actual

        # Creacion proxima catedra:
        try:
            fecha = evento.tiempo + 7
            sim_logger.info(
                '[Día {dia}]: Se realizó la catedra {numero}, acerca de {materia}.'
                .format(materia=Contenido.lista_contenidos[semana(
                    evento.tiempo)].nombre,
                        dia=evento.tiempo,
                        numero=evento.numero_tipo))
            Evento(6, fecha)
        except BaseException:
            pass
Пример #6
0
 def actividad(self):
     '''
     Esta función desencadena todas las funciones que deben ejecutarse cuando se reliza una actividad.
     Define cuando serán los eventos de las proximas evaluaciones y de las entrega de notas de esta actividad.
     :return:
     '''
     evento = Evento.evento_actual
     # Ejecucion de funciones:
     for alumno in Alumno.lista_alumnos:
         alumno.calc_nota_actividad(evento.numero_tipo)
     # Creacion de proxima actividad:
     try:
         prox_fecha = evento.tiempo + 7
         prox_contenido = Contenido.lista_contenidos[semana(prox_fecha)]
         Evaluacion(1, prox_fecha, prox_contenido)
         # Creacion entrega notas actividad:
         fecha = evento.tiempo + 14
         EntregaNotasCoord(7, fecha, (1, evento.numero_tipo))
         # Logging
         sim_logger.info(
             '[Día {dia}]: Se realizó la actividad {numero}.'.format(
                 numero=evento.numero_tipo, dia=evento.tiempo))
     except BaseException:
         pass
Пример #7
0
 def calc_nota_control(self, numero):
     num = semana(Evento.evento_actual.tiempo)
     exigencia = 7 + (randint(1, 5) /
                      Contenido.lista_contenidos[num].dificultad)
     self.notas_controles[numero - 1][1] = round(
         max((self.progreso_control_actual / exigencia) * 7, 1), 2)