iommi

Your first pick for a django power cord

https://github.com/TriOptima/iommi/workflows/tests/badge.svg https://codecov.io/gh/TriOptima/iommi/branch/master/graph/badge.svg https://repl.it/badge/github/boxed/iommi-repl.it https://img.shields.io/discord/773470009795018763

iommi is a Django-based framework that magically create pages, forms and tables with advanced out-of-the-box functionality based on your applications models - without sacrificing flexibility and control.

Major features:

  • A system to project django model definitions into more high level definitions

  • Forms: view models, data validation, and parsing

  • Queries: filtering lists/query sets

  • Tables: view models for lists/query sets, html tables, and CSV reports

  • Pages: compose pages from parts like forms, tables and html fragments

All the components are written with the same philosophy of:

  • Everything has a name

  • Traversing a namespace is done with __ when . can’t be used in normal python syntax

  • Callables for advanced usage, values for the simple cases

  • Late binding

  • Declarative/programmatic hybrid API

  • Prepackaged commonly used patterns (that can still be customized!)

  • Single point customization with no boilerplate

  • Escape hatches included

See philosophy for explanations of all these.

Example:

class IndexPage(Page):
    title = html.h1('Supernaut')
    welcome_text = 'This is a discography of the best acts in music!'

    artists = Table(auto__model=Artist, page_size=5)
    albums = Table(
        auto__model=Album,
        page_size=5,
    )
    tracks = Table(auto__model=Album, page_size=5)


urlpatterns = [
    path('', IndexPage().as_view()),
]

This creates a page with three separate tables, a header and some text:

_images/README-screenshot.png

For more examples, see the examples project.

Usage

See usage.

Running tests

You need to have tox installed then:

make venv
source env/bin/activate
make test
make test-docs

License

BSD

Contents:

Indices and tables