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')
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
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
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
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
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})
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'
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)
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')