コード例 #1
0
ファイル: tests.py プロジェクト: dlitvakb/calendarkata.py
    def test_puedo_decir_que_un_dia_de_todas_las_semanas_es_no_laborable(self):
        calendario = Calendario()
        calendario.agregar_fecha_no_laborable(DiaNoLaborable("sunday"))
        calendario.agregar_fecha_no_laborable(DiaNoLaborable("monday"))

        self.assertFalse(calendario.es_laborable(datetime(2012,05,13)))
        self.assertFalse(calendario.es_laborable(datetime(2012,05,14)))
コード例 #2
0
def calcola_classifiche_singolo_processo(squadre, giornate, all_permutations,
                                         starting_time):
    """Calcola la 'classifica delle classifiche' utilizzando un singolo processo"""
    classifica_calendari = dict(zip(squadre, [0] * Costanti.NUM_SQUADRE))
    print 'in elaborazione...'
    for perm in all_permutations:
        calendario = Calendario(perm, giornate)
        calendario.calcola_classifica()
        squadre_campioni = calendario.get_squadra_campione()
        classifica_attuale = dict(zip(squadre, [0] * Costanti.NUM_SQUADRE))
        for sc in squadre_campioni:
            classifica_attuale[sc] = 1
        classifica_calendari = dict(
            Counter(classifica_calendari) + Counter(classifica_attuale))
    utils.esporta_classifica_csv(classifica_calendari)
    print 'Tempo impiegato: {0:.2f} s'.format(time.time() - starting_time)
コード例 #3
0
ファイル: tests.py プロジェクト: dlitvakb/calendarkata.py
    def test_regla_expirable(self):
        calendario = Calendario()

        calendario.agregar_fecha_no_laborable(
          ReglaExpirable(datetime(2012,02,10), datetime(2012,5,20),
            DiaNoLaborable("tuesday")
          )
        )

        self.assertFalse(calendario.es_laborable(datetime(2012,03,13)))
        self.assertTrue(calendario.es_laborable(datetime(2012,05,22)))
コード例 #4
0
ファイル: tests.py プロジェクト: dlitvakb/calendarkata.py
    def test_puedo_agregar_una_fecha_no_laborable(self):
        calendario = Calendario()
        calendario.agregar_fecha_no_laborable(
          FechaNoLaborable(datetime(2012,1,1))
        )

        self.assertTrue(calendario.es_laborable(datetime(2012,06,30)))
        self.assertFalse(calendario.es_laborable(datetime(2012,1,1)))
コード例 #5
0
ファイル: espacio.py プロジェクト: yo-alan/horarios
 def poblacion(self, ):
     try:
         return self._poblacion
     except AttributeError:
         
         from calendario import Calendario
         
         self._poblacion = []
         
         for calendario in Calendario.objects.filter(espacio=self):
             
             calendario = Calendario.create(calendario.id)
             
             self._poblacion.append(calendario)
         
         return self._poblacion
コード例 #6
0
def calcola_classifiche_distribuito(squadre, giornate, all_permutations,
                                    starting_time):
    """Calcola la 'classifica delle classifiche' utilizzando un pool di processi"""
    print '{} processi da lanciare per {} calendari'.format(
        Costanti.NUM_PROCESSES, len(all_permutations))
    print 'inizializzazione...'
    calendari = [Calendario(perm, giornate) for perm in all_permutations]
    initialization_time = time.time()
    print 'Tempo impiegato per inizializzazione: {0:.2f} s'.format(
        initialization_time - starting_time)
    print 'in elaborazione...'
    pool = Pool(processes=Costanti.NUM_PROCESSES)
    print '\tmap...'
    classifiche = pool.map(calcola_classifica_distribuito_map, calendari)
    print '\treduce...'
    classifica_calendari = reduce(calcola_classifica_distribuito_reduce,
                                  classifiche)
    utils.esporta_classifica_csv(classifica_calendari)
    ending_time = time.time()
    print 'Tempo impiegato per elaborazione: {0:.2f} s'.format(
        ending_time - initialization_time)
    print 'Tempo impiegato totale: {0:.2f} s'.format(time.time() -
                                                     starting_time)
コード例 #7
0
    def input_correcto(self):
        '''
        Revisa si el parametro ingresado en el superinput (self.entrada) es de alguno de los tipos permitidos en
        self.lista
        Si lo es, retorna True. Si no, False.
        '''
        v1, v2, v3, v4, v5, v6 = False, False, False, False, False, False
        for i in self.lista:
            if self.es_int(i):
                try:
                    self.entrada = int(self.entrada)
                    v1 = True
                except:
                    v1 = False
            elif self.es_float(i):
                try:
                    self.entrada = float(self.entrada)
                    v2 = True
                except:
                    v2 = False
            elif self.es_mail(i):
                print('Aún no está creada la opcion mail del superinput')
                v3 = False
            elif self.es_str(i):
                v4 = True
            elif i == 'fecha':
                v5 = True
                for l in self.entrada:
                    if not (l.isnumeric() or l == '/'):
                        v5 = False

                if (not self.mensaje_error) and (not v5):
                    self.mensaje_error = 'Formato de fecha incorrecto, ingresar de nuevo.'

                if v5:
                    dia = self.entrada[:self.entrada.find('/')]
                    fecha = self.entrada[self.entrada.find('/') + 1:]
                    mes = fecha[:fecha.find('/')]
                    fecha = fecha[fecha.find('/') + 1:]
                    ano = fecha
                    c = Calendario()
                    if not c.fecha_valida(dia, mes, ano):
                        v5 = False
                        if not self.mensaje_error:
                            self.mensaje_error = 'Fecha no válida, ingresar otra fecha.'

            elif i == 'hora':
                v6 = True
                if len(self.entrada) != 8:
                    v6 = False
                if v6:
                    for l in self.entrada:
                        if not (l.isnumeric() or l == ':'):
                            v6 = False
                if not self.mensaje_error and not v6:
                    self.mensaje_error = 'Formato de hora incorrecto, ingresar de nuevo.'
                if v6:
                    if self.entrada[0] == 0:
                        horas = int(self.entrada[1])
                    else:
                        horas = int(self.entrada[:2])
                    if self.entrada[3] == 0:
                        minutos = int(self.entrada[4])
                    else:
                        minutos = int(self.entrada[3:5])
                    if self.entrada[6] == 0:
                        segundos = int(self.entrada[7])
                    else:
                        segundos = int(self.entrada[6:])

                    if not (horas >= 0 and horas <= 23):
                        v6 = False
                    if not (minutos >= 0 and minutos <= 59):
                        v6 = False
                    if not (segundos >= 0 and segundos <= 59):
                        v6 = False

                if not v6 and not self.mensaje_error:
                    self.mensaje_error = 'Hora no válida, ingresar otra hora.'
                '''
                    Este segmento esta encaminado para que el programa acepte horas no solo del formato hh:mm:ss, sino que
                    también horas con el formato hh:mm o simplemente hh, supondiendo que todo lo demás es 0.
                    Terminar más adelante.
                    Hay partes que se deben usar del algoritmo actualmente funcional del programa (que acepta solo hh:mm:ss)


                    if v6:
                        hora = ''
                        if self.entrada.find(':') != -1:
                            horas = self.entrada[:self.entrada.find(':')]
                            hora = self.entrada[self.entrada.find(':') + 1:]
                        else:
                            horas = self.entrada

                        if hora.find(':') != -1:
                            minutos = hora[:hora.find(':')]
                            hora = hora[hora.find(':') + 1:]
                        else:
                            minutos = hora

                        if minutos != hora:
                            segundos = hora
                '''

        return (v1 or v2 or v3 or v4 or v5 or v6)
コード例 #8
0
ファイル: tests.py プロジェクト: dlitvakb/calendarkata.py
    def test_puedo_mezclar_fechas_exactas_y_dias_de_la_semana(self):
        calendario = Calendario()

        calendario.agregar_fecha_no_laborable(DiaNoLaborable("sunday"))
        calendario.agregar_fecha_no_laborable(DiaNoLaborable("monday"))
        calendario.agregar_fecha_no_laborable(
          FechaNoLaborable(datetime(2012,1,1))
        )
        calendario.agregar_fecha_no_laborable(
          FechaNoLaborable(datetime(2012,3,21))
        )

        self.assertFalse(calendario.es_laborable(datetime(2012,03,21)))
        self.assertFalse(calendario.es_laborable(datetime(2012,1,1)))
        self.assertFalse(calendario.es_laborable(datetime(2012,05,13)))
        self.assertFalse(calendario.es_laborable(datetime(2012,05,14)))

        self.assertTrue(calendario.es_laborable(datetime(2012,2,24)))
        self.assertTrue(calendario.es_laborable(datetime(2012,7,3)))
コード例 #9
0
ファイル: tests.py プロジェクト: dlitvakb/calendarkata.py
    def test_puedo_agregar_mas_de_una_fecha_no_laborable(self):
        calendario = Calendario()
        calendario.agregar_fecha_no_laborable(
          FechaNoLaborable(datetime(2012,1,1))
        )
        calendario.agregar_fecha_no_laborable(
          FechaNoLaborable(datetime(2012,3,21))
        )
        calendario.agregar_fecha_no_laborable(
          FechaNoLaborable(datetime(2012,7,14))
        )
        calendario.agregar_fecha_no_laborable(
          FechaNoLaborable(datetime(2012,6,30))
        )

        self.assertFalse(calendario.es_laborable(datetime(2012,06,30)))
        self.assertFalse(calendario.es_laborable(datetime(2012,03,21)))
        self.assertFalse(calendario.es_laborable(datetime(2012,07,14)))
        self.assertFalse(calendario.es_laborable(datetime(2012,1,1)))

        self.assertTrue(calendario.es_laborable(datetime(2012,1,2)))
        self.assertTrue(calendario.es_laborable(datetime(2012,2,24)))
        self.assertTrue(calendario.es_laborable(datetime(2012,7,1)))
        self.assertTrue(calendario.es_laborable(datetime(2012,3,1)))
コード例 #10
0
ファイル: main_app.py プロジェクト: j6n1nhas/teaching-Maria
 def tarefa_calendario(self):
     self.c = Calendario()
     self.setCentralWidget(self.c)
コード例 #11
0
Altayskiy = Campo(
    "Altayskiy",
    "Алтаыскиы",
    10,
    0,
    "Não",
    0,
    "Frio", ((int(screen.get_width() * .6), int(screen.get_height() * .4))),
    foto="jo.jpg")

lista_gulags = [
    Trofimovsk, Solovetsky, Norilsk, Sevvostlag, Pechorlag, Karlag, Altayskiy
]

#Criação do calendário
calendario = Calendario(screen, sw, sh)

click = False


#Seleção inicial de Gulag
def menu_selecao():

    screen.fill((0, 0, 0))

    global sh, sw

    running = True
    click = False

    #Setup dos botões
コード例 #12
0
ファイル: espacio.py プロジェクト: yo-alan/horarios
 def generarpoblacioninicial(self, ):
     """
     Genera individuos desde cero y
     los guarda en el atributo 'poblacion'.
     
     @Parametros:
     None.
     
     @Return:
     None.
     """
     
     from calendario import Calendario
     from horario import Horario
     
     cant_horas = 0
     individuos = []
     
     # Iteramos generando todas las combinaciones de horarios
     # posibles. Y por cada uno creamos un calendario.
     
     # Contamos la cantidad total de horas.
     for coordinador in self.coordinadores:
         cant_horas += coordinador.especialidad.carga_horaria_semanal
     
     # Cantidad de iteraciones por los dias.
     for dia in self.dias_habiles:
         
         # Cantidad de iteraciones por las horas.
         for hora in self.horas:
             
             # Iteracion por cada coordinador.
             for coordinador in self.coordinadores:
                 
                 # Se crea un Calendario.
                 calendario = Calendario.create()
                 # Se le asigna este espacio.
                 calendario.espacio = self
                 # A su vez el Calendario es agregado a la poblacion.
                 individuos.append(calendario)
                 
                 # Se crea un Horario.
                 horario = Horario()
                 # Se le asigna el Coordinador.
                 horario.coordinador = coordinador
                 # Se le asigna una hora desde.
                 horario.hora_desde = hora.hora_desde
                 # Se le asigna una hora hasta.
                 horario.hora_hasta = hora.hora_hasta
                 # Se le asigna un dia de la semana.
                 horario.dia_semana = dia.dia
                 # El Horario es agregado al Calendario.
                 calendario.agregar_horario(horario)
             
             # La cantidad total de horas no fue cubierta, quiere
             # decir que en el calendario deben haber horas libres.
             if len(self.dias_habiles) * len(self.horas) != cant_horas:
                 
                 # Cantidad de iteraciones por los dias.
                 for dia in self.dias_habiles:
                     
                     # Cantidad de iteraciones por las horas.
                     for hora in self.horas:
                         
                         # Se crea un Calendario.
                         calendario = Calendario.create()
                         # Se le asigna este espacio.
                         calendario.espacio = self
                         # A su vez el Calendario es agregado a la poblacion.
                         individuos.append(calendario)
                         
                         # Se crea un Horario.
                         horario = Horario()
                         # Se le asigna una hora desde.
                         horario.hora_desde = hora.hora_desde
                         # Se le asigna una hora hasta.
                         horario.hora_hasta = hora.hora_hasta
                         # Se le asigna un dia de la semana.
                         horario.dia_semana = dia.dia
                         # El Horario es agregado al Calendario.
                         calendario.agregar_horario(horario)
     
     # Rellenamos los calendarios generando Horarios aleatoriamente.
     
     coordinadores_asig_global = []
     
     for coordinador in self.coordinadores.all():
         
         carga_horaria = coordinador.especialidad.carga_horaria_semanal
         
         for i in range(carga_horaria):
             
             coordinadores_asig_global.append(copy.copy(coordinador))
     
     for individuo in individuos:
         
         # Se crea la lista de coordinadores a asignar.
         coordinadores_asig = copy.copy(coordinadores_asig_global)
         
         for coordinador in coordinadores_asig_global:
             
             if coordinador == individuo.horarios[0][0].coordinador:
                 coordinadores_asig.remove(coordinador)
                 break
         
         horas_libres = abs(len(self.dias_habiles) * len(self.horas) - cant_horas)
         
         for i in range(horas_libres):
             
             coordinadores_asig.append(None)
             
         # Iteramos por la cantidad de dias.
         for dia in self.dias_habiles:
             
             # Tambien por la cantidad de horas.
             for hora in self.horas:
                 
                 if len(coordinadores_asig) == 0:
                     break
                 
                 indice = randint(0, len(coordinadores_asig)-1)
                 
                 coordinador = coordinadores_asig[indice]
                 
                 # Se crea un Horario.
                 horario = Horario()
                 # Se le asigna el Coordinador.
                 horario.coordinador = coordinador
                 # Se le asigna una hora desde.
                 horario.hora_desde = hora.hora_desde
                 # Se le asigna una hora hasta.
                 horario.hora_hasta = hora.hora_hasta
                 # Se le asigna un dia de la semana.
                 horario.dia_semana = dia.dia
                 
                 # Comprobamos que el Horario generado
                 # no exista en el Calendario.
                 existe = False
                 for franja_horaria in individuo.horarios:
                     for horario_comp in franja_horaria:
                         if horario == horario_comp:
                             existe = True
                 
                 # Si ya existia continuamos generando.
                 if existe:
                     continue
                 
                 coordinadores_asig.remove(coordinador)
                 
                 # Lo agregamos a la lista de horarios del Calendario.
                 individuo.agregar_horario(horario)
         
         self.poblacion.append(individuo)