def agregar_camino(request, flujo_id):
    flujo = get_object_or_404(Flujo, pk=flujo_id)
    if not flujo.unidad.permite(usuario=request.user, permiso=SolicitudPrivilegio.PRIVILEGIO_RESPONSABLE):
        messages.error(request, "Solo el responsable de la unidad puede modificar el flujo.")
        return HttpResponseRedirect(reverse("flujo_index"))
    if request.POST:
        form = AgregarCaminoForm(request.POST)
        if form.is_valid():
            paso_origen = form.cleaned_data['paso_origen']
            paso_destino= form.cleaned_data['paso_destino']
            try:
                camino_igual= Criterio.objects.get(paso_origen=paso_origen, paso_destino=paso_destino)
                form = AgregarCaminoForm()
                messages.error(request, "Error:Este camino ya esta agregado")
                return HttpResponseRedirect("/flujos/modificar_camino/{0}/{1}/".format( flujo.id, camino_igual.id) ) 
            except ObjectDoesNotExist:
                form.save()
                form = AgregarCaminoForm()
                messages.success(request, "Camino almacenado exitosamente")       
            return HttpResponseRedirect("/flujos/consultar_flujo/{0}/".format(flujo.id) )
        else:
            messages.error(request, "Error: Alguno de los datos del formulario es invalido")
            return render_to_response('flujos/agregar_camino.html',
                {'form':form, 'flujo_id':flujo_id}, context_instance=RequestContext(request))
    else:
        form = AgregarCaminoForm()
        form.fields["paso_origen"].queryset = Paso.objects.filter(flujo=flujo_id)
        form.fields["paso_destino"].queryset = Paso.objects.filter(flujo=flujo_id)
    return render_to_response('flujos/agregar_camino.html',
                {'form':form, 'flujo_id':flujo_id}, context_instance=RequestContext(request))
def modificar_camino(request, flujo_id, criterio_id):
    flujo = get_object_or_404(Flujo, pk=flujo_id)
    if not flujo.unidad.permite(usuario=request.user, permiso=SolicitudPrivilegio.PRIVILEGIO_RESPONSABLE):
        messages.error(request, "Solo el responsable de la unidad puede modificar el flujo.")
        return HttpResponseRedirect(reverse("flujo_index"))
    if request.POST:
        criterio = Criterio.objects.get(id=criterio_id)
        form = AgregarCaminoForm(request.POST, instance=criterio)
        if form.is_valid():
            camino = form.save()
            messages.success(request, "Camino actualizado exitosamente")
            return HttpResponseRedirect("/flujos/consultar_flujo/%s/" % camino.paso_origen.flujo.id)
        else:
            messages.error(request, "Error: Alguno de los datos del formulario es invalido")
            return render_to_response('flujos/modificar_camino.html',
                    {'form':form, 'flujo_id':flujo_id, 'criterio_id':criterio_id}, context_instance=RequestContext(request))
    else:
        criterio = Criterio.objects.get(id=criterio_id)
        form = AgregarCaminoForm(instance=criterio)
        form.fields["paso_origen"].queryset = Paso.objects.filter(flujo=flujo_id)
        form.fields["paso_destino"].queryset = Paso.objects.filter(flujo=flujo_id)
        return render_to_response('flujos/modificar_camino.html',
                {'form':form, 'flujo_id':flujo_id, 'criterio_id':criterio_id}, context_instance=RequestContext(request))