# -*- coding: utf-8 -*-

from celery.task import task,periodic_task
from celery.schedules import crontab

from django.http import Http404

import logging
from time import localtime, strftime

#logging
logger = logging.getLogger('tareas_info')
log_error = logging.getLogger('tareas_error')

@task(name="tasks.repartir_tareas",default_retry_delay=45,max_retries=10,queue="tareas")
@periodic_task(run_every=crontab(hour=17,minute=14))
def repartir_tareas():
    """
        Tarea encargada de repartir las tareas entre los alumnos que lo han realizado

        crontab :  
            hour: especifica la hora
            minute: especicifa los minutos
    """
    from app.models import Asignatura
    from tarea.models import Actividad

    import datetime
    asignaturas = Asignatura.objects.all()

    for asignatura in asignaturas:
        actividades = Actividad.objects.filter(enddate__lte=datetime.date.today())
        for actividad in actividades:
           reparte_tarea(asignatura.slug,actividad.id)

@task(name="tasks.reparte_tarea",default_retry_delay=45,max_retries=10)
def reparte_tarea(slug,id):
    from tarea.models import Tarea
    from cuestionario.models import Cuestionario,Evaluacion

    # Tareas realizadas
    tareas = Tarea.objects.filter(actividades__id__iexact = id,realizado=True)
    cuestionario = Cuestionario.objects.get(actividad__id=id)

    #Verificamos que no haya ninguna Evaluacion ya creada, por seguiridad
    evaluaciones = Evaluacion.objects.filter(tarea__actividades__id=id).count()

    # Semilla 
    seed = 1
    
    # Hay mas de 2 tareas y no hay evaluaciones para dichas tareas 
    if (tareas.count())>=2 and evaluaciones == 0:
        i = 0
        for tarea in tareas:
            evaluacion = Evaluacion(user = tareas[(i+seed)%len(tareas)].user, tarea = tarea , cuestionario = cuestionario)
            evaluacion.save()
            i+=1

