Exemple #1
0
 def resultados(cls):
     mapa = []
     for origen in Categoria.por_clasificar():
         counter = Counter(
             [voto.destino for voto in cls.objects.filter(origen=origen)])
         mejor_destino = counter.most_common(1)
         mapa.append((origen, mejor_destino))
     return mapa
Exemple #2
0
 def resultados(cls):
     mapa = []
     for origen in Categoria.por_clasificar():
         counter = Counter([voto.destino for voto in
                            cls.objects.filter(origen=origen)])
         mejor_destino = counter.most_common(1)
         mapa.append((origen, mejor_destino))
     return mapa
Exemple #3
0
def mapa_categorias(request):
    """implementacion del ticket #64"""

    data = request.POST if request.method == 'POST' else None
    form = MapaCategoriaForm(data)
    if form.is_valid():

        voto = form.save(commit=False)
        voto.user = request.user
        voto.save()
        messages.success(request, random.choice(MSG_EXITO))
        return redirect('mapa_categorias')

    # necesitamos saber qué origenes ya usó el User
    try:
        categorizables = MapaCategoria.categorizables_por_voluntario(
            request.user)
    except MapaCategoria.DoesNotExist:

        messages.success(request, u"¡Categorizaste todo! "
                                  u"Increíble tu ayuda, muchas gracias")
        return redirect('voluntarios_dashboard')

    # elegimos una al azar (sólo si no hay errores previos)
    if request.method == 'POST':
        origen = MapaCategoria.categorizables_por_voluntario(
            request.user).get(id=request.POST['origen'])
    else:
        origen = categorizables.order_by('?')[0]
    a_clasificar = Categoria.por_clasificar().count()
    percent = int((a_clasificar - categorizables.count()) * 100 /
                  a_clasificar)
    form.initial['origen'] = origen.id

    # random asi no sesgamos los resultados
    productos_ejemplo = origen.productos.all().order_by('?')[:4]

    return render(request, 'voluntarios/mapa_categorias.html',
                  {'form': form, 'origen': origen,
                   'productos_ejemplo': productos_ejemplo,
                   'percent': percent})
Exemple #4
0
 def __init__(self, *args, **kwargs):
     super(MapaCategoriaForm, self).__init__(*args, **kwargs)
     self.fields['origen'].queryset = Categoria.por_clasificar()
     self.fields[
         'comentario'].help_text = u'Por favor, indicá las categorías que usarías'
Exemple #5
0
 def categorizables_por_voluntario(cls, user):
     ya_hechas = MapaCategoria.objects.filter(user=user).values_list(
         'origen_id', flat=True)
     return Categoria.por_clasificar().exclude(id__in=ya_hechas)
Exemple #6
0
 def categorizables_por_voluntario(cls, user):
     ya_hechas = MapaCategoria.objects.filter(user=user).values_list(
         'origen_id', flat=True)
     return Categoria.por_clasificar().exclude(id__in=ya_hechas)