Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.


ringo is unavailable in PyPM, because there aren't any builds for it in the package repositories. Click the linked icons to find out why.

 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
Windows (64-bit)
Mac OS X (10.5+)
Linux (32-bit)
Linux (64-bit)


Ringo is a small Python based high level web application framework build with Pyramid . It provides basic functionality which is often used in modern web applications. See the list of features for more details.

Ringo comes with an application scaffold which can be used as a boilerplate for your application development. See the development part in the documentation for more details on how to build a Ringo based application.

In Ringo based applications Ringo plays the role of a base library which provides basic functionality. In most cases this basic functionality should fit the needs in easy usecases. If it fits not, then it can be extended and configured to your need in an easy way.

Ringo is also a standalone application which is under steady development. This is a benefit if you use Ringo as base for your application. Your application will get bug fixes, new features or improved functionality in most cases by simply updating Ringo to a new version.


Ringo is Free Software. It is licensed under the GPL license in version 2 or later. See http://www.gnu.org/licenses/gpl-2.0 for more details on the license.


Ringo provides some basic features which are useful if you build your web application based on Ringo:

  • Authentication with email registration and password reminders
  • Authorisation with a role based permission System
  • Basic CRUD actions
  • RESTfull interface for CRUD operations.
  • Layout and validation of forms using the Formbar library
  • Support for caching expensive SQL queries
  • Regular expression based searching (storeable)
  • Sorting
  • User Profiles
  • Extendible, Configurable


Documentation is available on http://pythonhosted.org/ringo/

Getting Started

The fastest way to get an impression of Ringo`s core functionallity is to to the following steps:

  • cd <directory containing this file>
  • $venv/bin/python setup.py develop
  • $venv/bin/initialize_ringo_db development.ini
  • $venv/bin/pserve development.ini
  • Added File module
  • Added support for alembic for database migrations.
  • Added Appointment module
  • Added Renderer for a query DataTable Renderer.
  • Added Renderer for ListFields. ListFields are Basically listings of related items in tabular from providing a checkbox to select and deselect items. Selected items will get linked.
  • Added "backurl" GET parameter. This parameter can be used to define a URL which should be called instead of the default redirect action after create, update or delete succeeds. The parameter is saved in a session.
  • Added more behave tests (now 42% code coverage).
  • Added a Ringo specific renderer for dropdown lists which add a small link next to the label of the dropdownlist.
  • Added Behaviour Driven Test infrastructure based on "behave"
  • Small bugfixes.
  • Added REST-full service. The service is reachable for all modules on the known url with the prefix "rest". Eg rest/users/list. Using the interface requires Authorisation and Authentification which needs to be supplied.
  • Added "Nested" Mixin class to allow nested items.
  • When a form has multiple pages the currently selected page is now saved in the user session. Needs recent formbar version.
  • Use new get_formbar_js method in inject js code needed for formbar. Neededs recent formbar lib.
  • Items with the MetaMixin will have a default created und updated date of utcnow now.
  • #25: Added support for custom renderes. Renderers can now be defined and provied to the view functions. The renderer must be derived from the Formbar FieldRenderer) The view functions will give the renderer to the formbar lib. Need a recent Formbar version (>=0.3.0)

i18n Support: - User custom extractor from formbar for translation string in XML form

System Message: ERROR/3 (<string>, line 109)

Unexpected indentation.
configuration. No need to mark strings in the configurations as translatable.

System Message: WARNING/2 (<string>, line 111)

Block quote ends without a blank line; unexpected unindent.
  • Removed lingua requirement.
  • Added support for translations in the basic scaffold.

Search: - Added a new TableConfig class. This clazz provides an interface to a JSON

System Message: ERROR/3 (<string>, line 118)

Unexpected indentation.
file which is used to configure various aspects to the rendering of the overview tables. This new configuration directive will replace to old _table_fields configuration attribute.

System Message: WARNING/2 (<string>, line 121)

Block quote ends without a blank line; unexpected unindent.
  • #26: Expand values of relations in the overview from form configuration.
  • #27: Save current sorting in the session.
  • #28: Save sorting together with the search query in the saved searches.

i18n Support: - #23: I18n Support in renderes. Added more translations. - Added lingua as requirement. Needed for message extraction for i18n Support - Marked form configurations as translateable. - Added support for translating forms. Requires formbar >= 0.2.1 - Added support to translate headers in the overview.

Misc: - #19: Login should be in a Popup window

  • #15: Implement Search
  • Enabled search by clicking on the value in colums.
  • Added table to save usersettings (DB change!)
  • Enable saving search queries in the usersettings.
  • Added dogpile.cache dependency because of caching in sqlalchemy.
  • Enabled basic caching of SQL queries.
  • Some improvement in Layout. Make header more compact to not waste to much space
  • Create an empty "forms" dir under views for the basic scaffold. Fixes error on creating the form.xml files when adding a new modul.
  • Improved add_<<app>>_modul command. Fixed modul (re) initialisation. It the modul initialisation does not happen on recreating again the database.
  • Fix get_path function. Path is now relativ to the application (was relativ to Ringo)
  • #10: Add "visible" flag to moduls. Moduls can now be configured in which menu to display the modul. (DB change!)
  • Added new field "clazzpath" to the modul. Needed only internal for dynmic imports on permission checks. (DB change!)
  • Need formbar in version > 0.1 to be able to render selection fields.
  • Improved documentation
  • Added a simple request history (needed for #7)
  • #1: Error on getting roles while authorisation when user is not logged in
  • #2: Put some usefull content on the default index page
  • #3: Set application title in the page header
  • #4: Add version info page
  • #5: Add about page
  • #6: Add contact page
  • #7: Add dialogs for errors (404, 403)
  • #9: Cleanup and structure css
  • #17: Hide checkboxes in overviews if bundled actions are not enabled
  • #20: Fix layout of flash messages
  • #21: Complete german translation

First more or less version which includes all basic functionallity.

  • Added basic scaffold
  • Added "add_modul" command to add boilerplate code for new moduls.
  • Basic model initialisation
  • Basic page layout
  • Added authentification
  • Initial version

Subscribe to package updates

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.