Skip to content

Instantly share code, notes, and snippets.

@magnunleno
Created August 21, 2013 18:39
Show Gist options
  • Select an option

  • Save magnunleno/6298437 to your computer and use it in GitHub Desktop.

Select an option

Save magnunleno/6298437 to your computer and use it in GitHub Desktop.
{{extend 'layout.html'}}
<h1>Clientes</h1>
<div id='contents'>
<table class="table">
<tr>
<th>ID</th>
<th>Cliente</th>
<th>E-mail</th>
</tr>
{{ for registro in registros: }}
<tr>
<td>{{ =registro.id }}</td>
<td>{{ =registro.nome }}</td>
<td>{{ =registro.email }}</td>
</tr>
{{ pass }}
</table>
</div>
<div id="paginacao">
<ul class="pager">
{{ if pagina != 1: }}
<li class="previous">
<a href="{{ =URL(args=pagina-1) }}">&larr; Anterior</a>
</li>
{{ pass }}
{{ if pagina != paginas: }}
<li class="next">
<a href="{{ =URL(args=pagina+1) }}">Próxima &rarr;</a>
</li>
{{ pass }}
</ul>
<div>
def clientes():
# Se não for unformado o número da página, deduzimos que é a primeira
paginacao = 5
if len(request.args) == 0:
pagina = 1
else:
# Tenta converter o número da página
try:
pagina = int(request.args[0])
except ValueError:
# Redireciona para a página de erro
redirect(URL('erro', vars={
'msg':'Numero da página inválido'
}))
# Se a página informada é 0, redireciona para a página 1
if pagina <= 0:
redirect(URL(args=1))
# Total de clientes
total = db(db.cliente).count()
# Calcula o total de páginas
paginas = total/paginacao
if total%paginacao:
paginas+=1
# Se o número de página extrapolou o possível, redirecione para a
# última página
if pagina > paginas:
redirect(URL(args=[paginas]))
# Calcula os limites da consulta
limites = (paginacao*(pagina-1), (paginacao*pagina))
registros = db(db.cliente).select(
limitby=limites,
)
return dict(registros=registros, pagina=pagina, paginas=paginas)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment