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)
- User Profiles
- Extendible, Configurable
Documentation is available on http://pythonhosted.org/ringo/
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
configuration. No need to mark strings in the configurations as translatable.
- 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
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.
- #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