Pyramid framework tips : WebHelpers html tags and Paginate

WebHelpers has many useful functions. WebHelpers html tags and paginate are very useful for Pyramid Applications.Some features are not compatible with Pyramid framework, please see documentations.

WebHelpers in Pyramid Applications: install WebHelpers with easy_install:

$ easy_install WebHelpers

In Pyramid Application in __init__.py:

def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
  ...
  config.add_subscriber(add_renderer_globals, BeforeRender)
  ...

In helpers.py module:

  # your helpers imports
  from webhelpers.html.tags import *

In subscribers.py module:

def add_renderer_globals(event):
    """ add helpers """
    event['h'] = helpers

In Mako Templates:

  ## text input
  ${h.text("name", model.name, class_ = "large", maxlength="100")}

How to use WebHelpers Paginate with SQLAlchemy?
In your controller code:

@view_config(route_name="category_list", renderer="category/list.html")
def list(request):
    """categories list """
    ...
    # db query
    dbsession = DBSession()
    query = dbsession.query(Customer)

    # paginate
    page_url = paginate.PageURL_WebOb(request)
    customers = Page(query,
                     page=int(request.params.get("page", 1)),
                     items_per_page=10,
                     url=page_url)

    return {"customers": customers}

Paginate format in Mako Templates:

<div class="pager">
  <% link_attr={"class": "btn small"} %>
  <% curpage_attr={"class": "btn primary small disabled"} %>
  <% dotdot_attr={"class": "btn small disabled"} %>
  ${customers.pager(format="$link_previous ~2~ $link_next",
    symbol_previous="«",
    symbol_next="»",
    link_attr=link_attr,
    curpage_attr=curpage_attr,
    dotdot_attr=dotdot_attr)}
</div>

paginate

I am using Bootstrap from Twitter as css framework.