Ejemplo n.º 1
0
 def setUp(self):
     self.root = Categoria.add_root(nombre='root')
     self.root2 = Categoria.add_root(nombre='root 2')
     self.hija = self.root.add_child(nombre='hija')
     self.hija2 = self.root.add_child(nombre='hija 2')  # sin descendencia
     self.nieta = self.hija.add_child(nombre='nieta')
     self.nieta2 = self.hija.add_child(nombre='nieta2')
Ejemplo n.º 2
0
    def process_line(self, line):
        for k, v in line.items():
            line[k] = v if v != '' else None
        line['oculto'] = line['oculto'] == 'True'

        if line['marca_id']:
            line['marca'] = Marca.objects.get(id=line['marca_id'])
        else:
            del line['marca']
            del line['marca_id']

        if line['id_online']:
            # TO DO: crear una instancia de IdProductoOnline si viene
            pass
        del line['id_online']

        if not line['categoria_id']:
            del line['categoria_id']
            try:
                line['categoria'] = Categoria.objects.get(
                    nombre='A clasificar', oculta=True, depth=1)
            except Categoria.DoesNotExist:
                line['categoria'] = Categoria.add_root(nombre='A clasificar',
                                                       oculta=True)
        else:
            line['categoria'] = Categoria.objects.get(id=line['categoria_id'])
            del line['categoria_id']
        return line
Ejemplo n.º 3
0
    def process_line(self, line):
        for k, v in line.items():
            line[k] = v if v != "" else None
        line["oculto"] = line["oculto"] == "True"

        if line["marca_id"]:
            line["marca"] = Marca.objects.get(id=line["marca_id"])
        else:
            del line["marca"]
            del line["marca_id"]

        if line["id_online"]:
            # TO DO: crear una instancia de IdProductoOnline si viene
            pass
        del line["id_online"]

        if not line["categoria_id"]:
            del line["categoria_id"]
            try:
                line["categoria"] = Categoria.objects.get(nombre="A clasificar", oculta=True, depth=1)
            except Categoria.DoesNotExist:
                line["categoria"] = Categoria.add_root(nombre="A clasificar", oculta=True)
        else:
            line["categoria"] = Categoria.objects.get(id=line["categoria_id"])
            del line["categoria_id"]
        return line
Ejemplo n.º 4
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
Ejemplo n.º 5
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
Ejemplo n.º 6
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})
Ejemplo n.º 7
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'
Ejemplo n.º 8
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)
Ejemplo n.º 9
0
 def setUp(self):
     self.root = Categoria.add_root(nombre=u'Raíz 1')
     self.hija = self.root.add_child(nombre=u'Hija ñoña 2')
     self.nieta = self.hija.add_child(nombre='Nieta')
Ejemplo n.º 10
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)