Esempio n. 1
0
def agregarAceptado(request, articulo_id):
    listaAceptados = getArticulosAceptadosYEspeciales()
    listaEmpatados = getArticulosEmpatados()
    maxarticulos = getDatosConferencia()
    if listaAceptados == None:
        listaAceptados = []

    if maxarticulos > len(listaAceptados):
        articulo = getArticuloPorId(articulo_id)
        if articulo != None:
            articulo.empatado = False
            articulo.rechazadoFaltaCupo = False
            articulo.aceptado = True
            articulo.save()
        listaAceptados = getArticulosAceptadosYEspeciales()
        listaEmpatados = getArticulosEmpatados()
        maxarticulos = getDatosConferencia()
        cantidad = maxarticulos - len(listaAceptados)
        return render(
            request, 'Conferencia/desempatar.html', {
                'listaAceptados': listaAceptados,
                'listaEmpatados': listaEmpatados,
                'articulosRestantes': cantidad
            })
    maxarticulos = getDatosConferencia()
    cantidad = maxarticulos - len(listaAceptados)
    return render(
        request, 'Conferencia/desempatar.html', {
            'listaAceptados': listaAceptados,
            'listaEmpatados': listaEmpatados,
            'articulosRestantes': cantidad,
            'error_message': "Ya no se puede aceptar mas articulos."
        })
Esempio n. 2
0
def generarAceptados(aceptables):
    # Se verifica si el maximo de articulos es mayor que la longitud de la lista de aceptables
    # si esto pasa entonces la lista de aceptables pasa a ser la lista de aceptados, sino se busca
    # cual es la nueva lista de aceptados
    maxarticulos = getDatosConferencia()
    especiales = getArticulosAceptadosEspecial()
    if especiales != None:
        maxarticulos = maxarticulos - len(especiales)
    if maxarticulos >= len(aceptables):
        for art in aceptables:
            articulo = getArticuloPorId(art.pk)
            if articulo != None:
                articulo.aceptado = True
                articulo.save()
        return aceptables
    else:
        if maxarticulos > 0:
            aceptados = []
            i = 0
            while i < maxarticulos:
                aceptados.append(aceptables[i])
                aceptables[i].aceptado = True
                aceptables[i].save()
                i += 1
            # ultimo es el articulo con promedio de menor valor en la lista de aceptados
            ultimo = aceptados[maxarticulos - 1]
            evalUltimo = ultimo.evaluacion
            #Se establecen los rechazados por cupo
            porCupo = Evaluacion.objects.filter(
                promedio__gte=3, promedio__lte=evalUltimo.promedio)
            if porCupo != None:
                for ev in porCupo:
                    if ev.arbitros.all().count() >= 2:
                        articulo = ev.articulo
                        articulo.rechazadoFaltaCupo = True
                        articulo.save()
            # se cuenta cuantas veces aparece el promedio en la lista de aceptados
            numvecesaccept = calcular_ocurrencia(evalUltimo.promedio,
                                                 aceptados)
            # se cuenta cuantas veces aparece el promedio en la lista de aceptables
            numvecesaceptables = calcular_ocurrencia(evalUltimo.promedio,
                                                     aceptables)
            # si el numero de veces de aceptados es distinto del numero de veces de aceptables
            # se procede a eliminar todos los valores que fueron admitidos en la lista de aceptados

            if numvecesaccept != numvecesaceptables:
                promedioEmpatado = evalUltimo.promedio
                aceptados.remove(ultimo)
                ultimo.aceptado = False
                ultimo.save()
                for articulo in aceptados:
                    if (articulo.evaluacion.promedio == promedioEmpatado):
                        aceptados.remove(articulo)
                        articulo.aceptado = False
                        articulo.save()
        else:
            return []
    return aceptados
Esempio n. 3
0
def elegirEspeciales(request):
    listaAceptados = getArticulosAceptadosYEspeciales()
    maxarticulos = getDatosConferencia()
    if listaAceptados != None:
        cantidad = maxarticulos - len(listaAceptados)
    else:
        cantidad = maxarticulos
    return render(
        request, 'Conferencia/especiales.html', {
            'listaArticulos': getArticulosNoEspeciales(),
            'listaEspeciales': articulosEspeciales,
            'cantidad': cantidad
        })
Esempio n. 4
0
def desempatar(request):
    listaAceptados = getArticulosAceptadosYEspeciales()
    listaEmpatados = getArticulosEmpatados()
    maxarticulos = getDatosConferencia()
    if listaAceptados != None:
        cantidad = maxarticulos - len(listaAceptados)
    else:
        cantidad = maxarticulos
    return render(
        request, 'Conferencia/desempatar.html', {
            'listaAceptados': listaAceptados,
            'listaEmpatados': listaEmpatados,
            'articulosRestantes': cantidad
        })
Esempio n. 5
0
def agregarEspecial(request, articulo_id):
    listaAceptados = getArticulosAceptadosYEspeciales()
    listaEmpatados = getArticulosEmpatados()
    maxarticulos = getDatosConferencia()
    if listaAceptados == None:
        listaAceptados = []

    if maxarticulos > len(listaAceptados):
        articulo = getArticuloPorId(articulo_id)
        if articulo != None:
            articulo.aceptadoEspecial = True
            articulo.rechazadoPorPromedio = False
            articulo.rechazadoFaltaCupo = False
            articulo.empatado = False
            articulo.save()
        listaAceptados = getArticulosAceptadosYEspeciales()
        maxarticulos = getDatosConferencia()
        cantidad = maxarticulos - len(listaAceptados)
        return render(
            request, 'Conferencia/especiales.html', {
                'listaArticulos': getArticulosNoEspeciales(),
                'listaEspeciales': getArticulosAceptadosEspecial(),
                'cantidad': cantidad
            })
    maxarticulos = getDatosConferencia()
    if listaAceptados != None:
        cantidad = maxarticulos - len(listaAceptados)
    else:
        cantidad = maxarticulos
    return render(
        request, 'Conferencia/especiales.html', {
            'listaArticulos': getArticulosNoEspeciales(),
            'listaEspeciales': articulosEspeciales,
            'cantidad': cantidad,
            'error_message': "Ya no se pueden aceptar mas articulos."
        })
Esempio n. 6
0
def mostrarTiposDeArticulos(request):
    articulosAceptados = getArticulosAceptadosYEspeciales()
    maxarticulos = getDatosConferencia()
    if articulosAceptados != None:
        cantidad = maxarticulos - len(articulosAceptados)
    else:
        cantidad = maxarticulos
    articulosEmpatados = getArticulosEmpatados()
    context = RequestContext(
        request, {
            'articulosAceptados': articulosAceptados,
            'articulosEmpatados': articulosEmpatados,
            'cantidad': cantidad
        })
    return render(request, 'Conferencia/tiposDeSeleccionar.html', context)
Esempio n. 7
0
def desempatarPorPaises(request):
    # lista de lista que tendra asociado al articulo con el pais
    listaFinal = []
    listaArticulos = []
    # lista de lista que tendra los paises con la cantidad(numero) de articulos
    listaPaises = []
    autores = []
    listaArticulos = getArticulos()
    if listaArticulos != None:
        for articulo in listaArticulos:
            # lista temporal que almacena a cada articulo los paises de sus autores
            listaTemp = []
            autores = articulo.autores.all()
            listaTemp += [articulo]
            for person in autores:
                try:
                    country = person.persona.pais
                except Persona.DoesNotExist:
                    pass
                listaTemp += [country]
                flag = False
                for lista in listaPaises:
                    # en la posicion 0 de la lista estaran los paises, en la 1 el numero de veces
                    if lista[0] == country:
                        if articulo.aceptado == True or articulo.aceptadoEspecial == True:
                            lista[1] += 1
                        flag = True
                    else:
                        flag = False
                # forma de llenar la lista de paises
                if flag == False:
                    if articulo.aceptado == True:
                        listaPaises += [[country, 1]]
                    else:
                        listaPaises += [[country, 0]]
            listaFinal += [listaTemp]
    #Se ordena por paises que tienen menor cantidad de articulos a mayor cantidad
    listaPaises.sort(key=itemgetter(1))
    #Se calculan cuantos articulos faltan por aceptar
    listaAceptados = getArticulosAceptadosYEspeciales()
    maxarticulos = getDatosConferencia()
    if listaAceptados != None:
        maxarticulos = maxarticulos - len(listaAceptados)
    i = 0
    paisValido = False
    #Se itera entre todos los paises, tomando el que tiene menor cantidad de articulos aceptados primero
    while i < len(listaPaises):
        if maxarticulos != 0:
            elem = listaPaises[i]
            empatados = getArticulosEmpatados()
            if empatados != None:
                j = 0
                #Se itera sobre los articulos empatados y si hay uno que contenga el pais elegido en
                #la iteracion externa, se acepta y se rompe el ciclo.
                while j < len(listaFinal):
                    list = listaFinal[j]
                    print list
                    if elem[0] in list:
                        paisValido = False
                        if list[0].empatado == True:
                            list[0].empatado = False
                            list[0].rechazadoFaltaCupo = False
                            list[0].aceptado = True
                            list[0].save()
                            maxarticulos = maxarticulos - 1
                            elem[1] += 1
                            paisValido = True
                            j = len(listaFinal)
                    j += 1
            else:
                break
            #paisValido indica si se encontro un articulo entre empatados con el pais seleccionado, en caso
            #de haber encontrado uno, se ordena de nuevo la lista de manera que quede el pais con menos articulos
            #de primero y se sigue en la misma posicion. En caso no haber encontrado ninguno, se pasa al siguiente pais.
            if not paisValido:
                i += 1
            else:
                listaPaises.sort(key=itemgetter(1))
        else:
            i = len(listaPaises)
            break
    return render(
        request, 'Conferencia/desempatarPorPais.html', {
            'listaAceptados': getArticulosAceptadosYEspeciales(),
            'articulosRestantes': maxarticulos
        })
Esempio n. 8
0
def llenarDiccionarioTopicos(request):
    listaTopicos = []
    topicos = getTopicos()
    #Se hace una lista con todos los topicos que puede haber en la conferencia y se le asigna la cantidad de
    #articulos aceptados con ese topico
    if topicos != None:
        for top in topicos:
            listaTopicos = listaTopicos + [[
                top.nombre, getNumArticulosDeTopico(top.nombre)
            ]]
    #Se ordena de topico que tiene menor cantidad de articulos a mayor cantidad
    listaTopicos.sort(key=itemgetter(1))
    #Se calculan cuantos articulos faltan por aceptar
    listaAceptados = getArticulosAceptadosYEspeciales()
    maxarticulos = getDatosConferencia()
    if listaAceptados != None:
        maxarticulos = maxarticulos - len(listaAceptados)
    i = 0
    topicoValido = False
    #Se itera entre todos los topicos, tomando el que tiene menor cantidad de articulos aceptados primero
    while i < len(listaTopicos):
        if maxarticulos != 0:
            elem = listaTopicos[i]
            empatados = getArticulosEmpatados()
            if empatados != None:
                j = 0
                #Se itera sobre los articulos empatados y si hay uno que contenga el topico elegido en
                #la iteracion externa, se acepta y se rompe el ciclo.
                while j < len(empatados):

                    try:
                        articulo = empatados[j]
                        topicoValido = False
                        top = articulo.topicos.get(nombre=elem[0])
                        articulo.empatado = False
                        articulo.rechazadoFaltaCupo = False
                        articulo.aceptado = True
                        articulo.save()
                        maxarticulos = maxarticulos - 1
                        elem[1] += 1
                        topicoValido = True
                        j = len(empatados)
                    except Topico.DoesNotExist:
                        pass
                    j += 1
            else:
                break
            #topicoValido indica si se encontro un articulo entre empatados con el topico seleccionado, en caso
            #de haber encontrado uno, se ordena de nuevo la lista de manera que quede el topico con menos articulos
            #de primero y se sigue en la misma posicion. En caso no haber encontrado ninguno, se pasa al siguiente topico.
            if not topicoValido:
                i += 1
            else:
                listaTopicos.sort(key=itemgetter(1))
        else:
            i = len(listaTopicos)
            break
    return render(
        request, 'Conferencia/desempatarPorTopico.html', {
            'listaAceptados': getArticulosAceptadosYEspeciales(),
            'articulosRestantes': maxarticulos
        })
Esempio n. 9
0
def comprobarPresidente(request, vista_sigue):
    form = CorreoForm()
    if request.method == 'POST':
        form = CorreoForm(request.POST)
        if form.is_valid():
            correoForm = form.cleaned_data['correo']
            per = getPersona(correoForm)
            if per != None:
                com = getComite(correoForm)
                if com == None:
                    form = CorreoForm()
                    return render(
                        request, 'Conferencia/comprobarPresidente.html', {
                            'form':
                            form,
                            'vistaSiguiente':
                            vista_sigue,
                            'error_message':
                            "No hay ningun miembro del comite con ese correo"
                        })
                else:
                    if com.presidente:
                        listaAceptados = getArticulosAceptadosYEspeciales()
                        listaEmpatados = getArticulosEmpatados()
                        maxarticulos = getDatosConferencia()
                        if listaAceptados != None:
                            cantidad = maxarticulos - len(listaAceptados)
                        else:
                            cantidad = maxarticulos
                        if vista_sigue == "desempatar":
                            return render(
                                request, 'Conferencia/desempatar.html', {
                                    'listaAceptados': listaAceptados,
                                    'listaEmpatados': listaEmpatados,
                                    'articulosRestantes': cantidad
                                })
                        else:
                            return render(
                                request, 'Conferencia/especiales.html', {
                                    'listaArticulos':
                                    getArticulosNoEspeciales(),
                                    'listaEspeciales':
                                    getArticulosAceptadosEspecial(),
                                    'cantidad':
                                    cantidad
                                })
                    else:
                        form = CorreoForm()
                        return render(
                            request, 'Conferencia/comprobarPresidente.html', {
                                'form':
                                form,
                                "vistaSiguiente":
                                vista_sigue,
                                'error_message':
                                "El miembro del comite debe ser el presidente."
                            })
        else:
            form = CorreoForm()
    return render(
        request, 'Conferencia/comprobarPresidente.html', {
            'form': form,
            'vistaSiguiente': vista_sigue,
            'error_message': "Coloque un email valido."
        })