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)