Quanto a alternativa, é uma boa você usar o modal do bootstrap.
Eu fiz assim, criei uma view separada só com o modal pra ser incluída quando eu preciso
e um funções auxiliares pra chamar.
Isso na modal.html
<div class="modal fade" tabindex="-1" role="dialog" id="janela-modal">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body" id="regiao_form">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
function show_modal(url, title){
web2py_component(url, "regiao_form");
$(".modal-title").html(title);
$("#janela-modal").modal({keyboard:true});
}
function hide_modal(){
$('#janela-modal').modal('hide')
}
}
</script>
Na view que eu preciso eu coloco
<include 'modal.html'>
quando precisar chamar, é só passar o url e o título que vai estar na modal.
show_modal({{=URL(.....)}}, 'titulo');
ou direto
show_modal('http:/....', 'titulo');
Espero que sirva pra dar um pontapé aí...
Vai postando as outras dúvidas que surgirem.