Beispiel #1
0
def produccion_por_rango(request, modelo, dondetoy, cultivos, maximo=None, minimo=0, separaciones=10, template_name='produccion/produccion_por_rango.html'):
    #puntas = dicc con maximo y minimo
    encuestas = _query_set_filtrado(request)
    model = get_model('produccion', modelo)

    if encuestas:
        puntas_calc = model.objects.filter(encuesta__in = encuestas, cultivos__in=cultivos).aggregate(max_manzana = Max('manzana'), 
                min_manzana = Min('manzana'), max_produccion=Max('produccion'), min_produccion = Min('produccion'))
    else:
        puntas_calc = model.objects.filter(cultivos__in = cultivos).aggregate(max_manzana = Max('manzana'), 
                min_manzana = Min('manzana'), max_produccion=Max('produccion'), min_produccion = Min('produccion'))

    if maximo:
        maximo, minimo = int(maximo), int(minimo)
        puntas = dict(max_produccion=maximo, min_produccion=minimo, max_manzana=maximo, min_manzana=minimo)
    else:
        puntas = puntas_calc

    calculos = []
    calculos.append(__calculate_values(model, maximo, minimo, puntas, separaciones, 'produccion', cultivos, encuestas))
    calculos.append(__calculate_values(model, maximo, minimo, puntas, separaciones, 'manzana', cultivos, encuestas))

    form = ConsultarForm()
     
    return render_to_response(template_name, 
                              {'form': form, 'calculos':calculos, 
                               'model': model._meta.verbose_name,
                               'dondetoy': dondetoy,
                               'model_name': model._meta.module_name},
                              context_instance=RequestContext(request))
Beispiel #2
0
def generic_range(request, model, field, title, serie, dondetoy, subtitle, eje, extra_params={}, maximo=None, minimo=0, separaciones=10, template_name='ingresos/generic_range_view.html'):
    #puntas = dicc con maximo y minimo
    encuestas = _query_set_filtrado(request)
    model = get_model('ingresos', model)
    if encuestas:
        puntas_calc = model.objects.filter(encuesta__in = encuestas, **extra_params).aggregate(maximo = Max(field), minimo = Min(field))
    else:
        puntas_calc = model.objects.filter(**extra_params).aggregate(maximo = Max(field), minimo = Min(field))
    if maximo:
        maximo, minimo = int(maximo), int(minimo)
        puntas = dict(maximo=maximo, minimo=minimo)
    else:
        puntas = puntas_calc

    SEPARACIONES = int(separaciones) if separaciones else 10
    rango = (puntas['maximo']-puntas['minimo'])/ (SEPARACIONES)
    
    rangos = range(int(puntas['minimo']), int(puntas['maximo']), int(rango))
    parametros = zip(rangos, rangos[1:])
    parametros.append((rangos[len(rangos)-1], puntas['maximo']))

    valores = []
    #categorias: para pintarlo en el eje X del grafo
    categorias = []
    
    for parametro in parametros:
        extra_params["%s__gte" % field] = parametro[0]
        extra_params["%s__lt" % field] = parametro[1]
        if encuestas:
            valores.append(model.objects.filter(encuesta__in=encuestas, **extra_params).count())
        else:
            valores.append(model.objects.filter(**extra_params).count())
        categorias.append('%.2f a %.2f' % parametro)
    
    maximo_a_evaluar = parametros[len(parametros)-1][1] + rango
    del extra_params["%s__lt" % field]
    extra_params["%s__gte" % field] =  maximo_a_evaluar 
    if encuestas:
        valores.append(model.objects.filter(encuesta__in=encuestas, **extra_params).count())
    else:
        valores.append(model.objects.filter(**extra_params).count())

    valores_acumulados = lista_acumulada(valores)
    categorias.append('%.2f a mas' % maximo_a_evaluar)

    form = ConsultarForm()
    #WTF de django
    del extra_params["%s__gte" % field]
    
    return render_to_response(template_name, 
                              {'valores': valores,
                               'categorias': categorias,
                               'form': form,
                               'dondetoy':dondetoy,
                               'title': title,
                               'subtitle': subtitle,
                               'eje': eje,
                               'serie': serie,
                               'valores_acumulados': valores_acumulados},
                              context_instance=RequestContext(request))
Beispiel #3
0
def produccion_por_rango(request,
                         modelo,
                         dondetoy2,
                         cultivos,
                         maximo=None,
                         minimo=0,
                         separaciones=10,
                         template_name='produccion/produccion_por_rango.html'):
    #puntas = dicc con maximo y minimo
    encuestas = _query_set_filtrado(request)
    model = get_model('produccion', modelo)

    if encuestas:
        puntas_calc = model.objects.filter(
            encuesta__in=encuestas,
            cultivos__in=cultivos).aggregate(max_manzana=Max('manzana'),
                                             min_manzana=Min('manzana'),
                                             max_produccion=Max('produccion'),
                                             min_produccion=Min('produccion'))
    else:
        puntas_calc = model.objects.filter(cultivos__in=cultivos).aggregate(
            max_manzana=Max('manzana'),
            min_manzana=Min('manzana'),
            max_produccion=Max('produccion'),
            min_produccion=Min('produccion'))

    if maximo:
        maximo, minimo = int(maximo), int(minimo)
        puntas = dict(max_produccion=maximo,
                      min_produccion=minimo,
                      max_manzana=maximo,
                      min_manzana=minimo)
    else:
        puntas = puntas_calc

    calculos = []
    calculos.append(
        __calculate_values(model, maximo, minimo, puntas, separaciones,
                           'produccion', cultivos, encuestas))
    calculos.append(
        __calculate_values(model, maximo, minimo, puntas, separaciones,
                           'manzana', cultivos, encuestas))

    form = ConsultarForm()

    return render_to_response(template_name, {
        'form': form,
        'calculos': calculos,
        'model': model._meta.verbose_name,
        'dondetoy2': dondetoy2,
        'model_name': model._meta.module_name,
        'request': request
    },
                              context_instance=RequestContext(request))
Beispiel #4
0
def generic_range(request,
                  model,
                  field,
                  title,
                  serie,
                  dondetoy2,
                  subtitle,
                  eje,
                  extra_params={},
                  maximo=None,
                  minimo=0,
                  separaciones=10,
                  template_name='ingresos/generic_range_view.html'):
    #puntas = dicc con maximo y minimo
    encuestas = _query_set_filtrado(request)
    model = get_model('ingresos', model)
    if encuestas:
        puntas_calc = model.objects.filter(encuesta__in=encuestas,
                                           **extra_params).aggregate(
                                               maximo=Max(field),
                                               minimo=Min(field))
    else:
        puntas_calc = model.objects.filter(**extra_params).aggregate(
            maximo=Max(field), minimo=Min(field))
    if maximo:
        maximo, minimo = int(maximo), int(minimo)
        puntas = dict(maximo=maximo, minimo=minimo)
    else:
        puntas = puntas_calc

    SEPARACIONES = int(separaciones) if separaciones else 10
    rango = (puntas['maximo'] - puntas['minimo']) / (SEPARACIONES)

    rangos = range(int(puntas['minimo']), int(puntas['maximo']), int(rango))
    parametros = zip(rangos, rangos[1:])
    parametros.append((rangos[len(rangos) - 1], puntas['maximo']))

    valores = []
    #categorias: para pintarlo en el eje X del grafo
    categorias = []

    for parametro in parametros:
        extra_params["%s__gte" % field] = parametro[0]
        extra_params["%s__lt" % field] = parametro[1]
        if encuestas:
            valores.append(
                model.objects.filter(encuesta__in=encuestas,
                                     **extra_params).count())
        else:
            valores.append(model.objects.filter(**extra_params).count())
        categorias.append('%.0f a %.0f' % parametro)

    maximo_a_evaluar = parametros[len(parametros) - 1][1] + rango
    del extra_params["%s__lt" % field]
    extra_params["%s__gte" % field] = maximo_a_evaluar
    if encuestas:
        valores.append(
            model.objects.filter(encuesta__in=encuestas,
                                 **extra_params).count())
    else:
        valores.append(model.objects.filter(**extra_params).count())

    valores_acumulados = lista_acumulada(valores)
    categorias.append('%.0f a mas' % maximo_a_evaluar)

    form = ConsultarForm()
    #WTF de django
    del extra_params["%s__gte" % field]

    return render_to_response(template_name, {
        'valores': valores,
        'categorias': categorias,
        'form': form,
        'dondetoy2': dondetoy2,
        'title': title,
        'subtitle': subtitle,
        'eje': eje,
        'serie': serie,
        'valores_acumulados': valores_acumulados,
        'request': request
    },
                              context_instance=RequestContext(request))