https://github.com/nandoflorestan/deform_bootstrap_extra
OBSOLETE. Extra widgets and features for deform_bootstrap
https://github.com/nandoflorestan/deform_bootstrap_extra
Last synced: 2 months ago
JSON representation
OBSOLETE. Extra widgets and features for deform_bootstrap
- Host: GitHub
- URL: https://github.com/nandoflorestan/deform_bootstrap_extra
- Owner: nandoflorestan
- License: bsd-3-clause
- Created: 2013-02-03T13:05:10.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2013-06-27T02:15:06.000Z (about 12 years ago)
- Last Synced: 2025-04-19T19:07:22.836Z (2 months ago)
- Language: Python
- Homepage:
- Size: 246 KB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE.rst
Awesome Lists containing this project
README
deform_bootstrap_extra
~~~~~~~~~~~~~~~~~~~~~~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
===============* widgets.TagsWidget: Sets up a beautiful jQuery-Tags-Input which in
turn comes from http://xoxco.com/projects/code/tagsinput/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 cclass ContactSchema(CSRFSchema):
name = c.SchemaNode(c.Str(), title=_("Name"), missing=None,
**lengthen(Contact.name)) # this is a model propertyfrom_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 cclass 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 wclass 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:
.. code-block:: python
# 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