Esempio n. 1
0
def resultados(request, rubro_id=None):
    """
    Resultados de la búsqueda de proyectos
    """
    rubro = get_object_or_none(Rubro, id=rubro_id)
    if request.method == "POST":
        form = BusquedaForm(request.POST)
        if form.is_valid():
            resultado = form.save()
            request.session["resultado"] = resultado
    else:
        form = BusquedaForm()
        if "resultado" in request.session:
            resultado = request.session["resultado"]
        else:
            resultado = Proyecto.accepted.all()
        if rubro:
            resultado = resultado.filter(rubro=rubro)

    return direct_response(request, 'proyectos/resultados.html',
                           {'resultado': get_paginated(request, resultado, 3),
                            'resultados_sp': resultado,
                            'form': form,
                            'cliente': Cliente.get_authenticated(request),
                            'rubros': Rubro.objects.all(),
                            'rubro_activo': rubro,
                            'rango_venta': Proyecto.get_rango_precio(u"V"),
                            'rango_renta': Proyecto.get_rango_precio(u"R"),})
Esempio n. 2
0
def perfil_proyecto(request, slug_proyecto):
    """
    Perfil de un proyecto

    Ofertas: 1- se elije aleatoriamente una de las ofertas del proyecto con
                fecha_fin posterior a hoy
             2- se elige aleatoriamente uno de los items(con estado disponible)
                pertenecientes al tipo de item en oferta
             3- si puede realizar los pasos anteriores, pone en blanco 
                la oferta y el item
    """
    proyecto = get_object_or_404(Proyecto, ~Q(estado=u'B'), slug=slug_proyecto)
    etapa_actual, subetapa_actual, avance_actual = proyecto.get_etapa_actual()
    relacionados = Proyecto.accepted.filter(rubro=proyecto.rubro).exclude(
        slug=slug_proyecto)
    if proyecto.latitud:
        CLOSE_CONST = 2
        referencias = Referencia.objects.filter(
            latitud__lte=proyecto.latitud+CLOSE_CONST,
            latitud__gte=proyecto.latitud-CLOSE_CONST,
            longitud__lte=proyecto.longitud+CLOSE_CONST,
            longitud__gte=proyecto.longitud-CLOSE_CONST,
        )
    else:
        referencias = None
    # Ofertas
    try:
        oferta = proyecto.oferta_set.filter(
            fecha_fin__gt=date.today(), fecha_inicio__lte=date.today(),
            item__estado=u'D').order_by('?')[0]
        # random_item_id = oferta.tipo_item.item_set.filter(
        #     estado=u'D').order_by('?')[0].id
        random_item_id = oferta.item.id
    except IndexError:
        oferta = ''
        random_item_id = 0
    #items = Item.objects.filter(plano__proyecto=proyecto)

    return direct_response(
        request, 'proyectos/perfil_proyecto.html',
        {"proyecto": proyecto,
         "caracteristicas": proyecto.caracteristica_set.all(),
         "beneficios": proyecto.beneficio_set.all(),
         "referencias": referencias,
         "items_height": Item.objects.filter(plano__proyecto=proyecto).count()*71,
         "cliente": Cliente.get_authenticated(request),
         "etapa_actual": etapa_actual,
         "subetapa_actual": subetapa_actual,
         "avance_actual": avance_actual,
         "relacionados": relacionados,
         'oferta': oferta,
         'random_item_id': random_item_id})