Ejemplo n.º 1
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."})
Ejemplo n.º 2
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."
        })
Ejemplo n.º 3
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."})
Ejemplo n.º 4
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})
Ejemplo n.º 5
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})
Ejemplo n.º 6
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})
Ejemplo n.º 7
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
        })
Ejemplo n.º 8
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
        })
Ejemplo n.º 9
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)
Ejemplo n.º 10
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."
        })
Ejemplo n.º 11
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)
Ejemplo n.º 12
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."})
Ejemplo n.º 13
0
def aceptablesNota(request):
    if getArticulosAceptados()==None:
        listas = generarListas()
        context = RequestContext(request, {
                    'articuloAceptable'    : listas['listaAceptables'],
                    'articuloAceptado'     : listas['articulosAceptados'],
                    'articuloEmpatado'     : listas['articuloEmpatado'],
        })
        return render(request, 'Conferencia/aceptables.html', context)
    else:
        articulosAceptados = getArticulosAceptadosYEspeciales()
        articulosEmpatados = getArticulosEmpatados()
        context = RequestContext(request, {
                'articulosAceptados'    : articulosAceptados,
                'articulosEmpatados'    : articulosEmpatados,
        })
        return render(request, 'Conferencia/tiposDeSeleccionar.html', context)
Ejemplo n.º 14
0
def aceptablesNota(request):
    if getArticulosAceptados() == None:
        listas = generarListas()
        context = RequestContext(
            request, {
                'articuloAceptable': listas['listaAceptables'],
                'articuloAceptado': listas['articulosAceptados'],
                'articuloEmpatado': listas['articuloEmpatado'],
            })
        return render(request, 'Conferencia/aceptables.html', context)
    else:
        articulosAceptados = getArticulosAceptadosYEspeciales()
        articulosEmpatados = getArticulosEmpatados()
        context = RequestContext(
            request, {
                'articulosAceptados': articulosAceptados,
                'articulosEmpatados': articulosEmpatados,
            })
        return render(request, 'Conferencia/tiposDeSeleccionar.html', context)
Ejemplo n.º 15
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})
Ejemplo n.º 16
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."
        })
Ejemplo n.º 17
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
        })
Ejemplo n.º 18
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
        })