This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Extra features for deform_bootstrap

This package:

  • constitutes another layer on top of the great package deform_boostrap, which skins Deform with Twitter’s “bootstrap” library: http://pypi.python.org/pypi/deform_bootstrap
  • contains special widgets and functions for Deform.

Our bootstrap-compatible templates

Our alterations to the templates are in the “templates” subdirectory.

Here are the changes we’ve made:

  • checkbox.pt: Allows you to pass a text argument to a Boolean schema, and the text appears on the right of the checkbox.
  • form.pt: Squashes a bug where buttons would be rendered disabled.
  • mapping_item: Show error messages below help text.
  • password.pt: Supports maxlength and placeholder and automatically sets required.
  • textarea.pt: Supports maxlength and placeholder and automatically sets required.
  • textinput.pt: Supports maxlength and placeholder and automatically sets required. Also supports any HTML5 input type – for instance, when instantiating a TextInputWidget, you can set type='email'.

All this has been tested against deform_bootstrap 0.2.8.

CSS file

Take a look on static/deform_bootstrap_extra.css – it has a few improvements on bootstrap’s CSS so it works better with deform. The file has comments.

Our new widgets

Abstract base view

If you use the Pyramid web framework, here is a great little abstract base class for views that use deform: BaseDeformView. Check it out!

Helper functions

button()

Use this function in a Pyramid app to easily generate a Deform button with translated title and optionally a bootstrap icon.

from deform_bootstrap_extra.pyramid import button

lengthen()

Forms containing all inputs with the same size are extremely boring to look at. When the widths of the inputs vary, not only the user gets a better idea of how much to type in them, but the screen looks much more interesting and easier to scan visually.

The lengthen() function calculates input width based on the maxlength (which can optionally be inferred from a SQLAlchemy model property). Example usage:

from deform_bootstrap_extra.helpers import lengthen
import colander as c

class ContactSchema(CSRFSchema):
    name = c.SchemaNode(c.Str(), title=_("Name"), missing=None,
        **lengthen(Contact.name))  # this is a model property

from_now_on()

This Colander validator only accepts a time in the future. Example:

from deform_bootstrap_extra.schema import from_now_on
import colander as c

class PromotionSchema(CSRFSchema):
    scheduled = c.SchemaNode(c.DateTime(default_tzinfo=None),
        missing=c.null, title=_("Schedule"), validator=from_now_on)
    (...)

sch = PromotionSchema().bind(request=self.request, now=datetime.utcnow())

Trilean

A schema type that can represent true, false and null. Example:

from deform_bootstrap_extra.schema import Trilean
import colander as c
import deform.widget as w

class ContactSchema(CSRFSchema):
    (...)
    male = c.SchemaNode(Trilean(), title=_("Sex"), missing=None,
        widget=w.SelectWidget(values=[
            (c.null, _("- Choose -")),
            ('false', _("Female")),
            ('true', _("Male")),
    ]))

Installation

Our preferred way of enabling the whole stack is this:

# DO NOT include('deform_bootstrap')
config.include('deform_bootstrap_extra')

This sets deform up for i18n (configuring a translator function and pointing colander and deform locale directories) and gives its template loader the correct directory hierarchy, so it will search for templates first in deform_bootstrap_extra, then in deform_bootstrap, finally in deform.

Contribute

You can help development at https://github.com/nandoflorestan/deform_bootstrap_extra

Release History

Release History

0.2.8

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
deform_bootstrap_extra-0.2.8.tar.gz (27.9 kB) Copy SHA256 Checksum SHA256 Source Jun 27, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting