Welcome to tcrudge’s documentation!

TCrudge - Simple configurable framework to create CRUDL (Create, Read, Update, Delete, List) for models based on Tornado and Peewee ORM. TCrudge is under heavy development - tons of bugs are expected. You can use it in production, but API can be broken at any moment.

Installation

Tcrudge is distributed via pypi (https://pypi.python.org/pypi/tcrudge/)

pip install tcrudge

You can manually install latest version via GitHub:

pip install git+https://github.com/CodeTeam/tcrudge.git

Example

One-file sample application:

import asyncio

import peewee
import peewee_async
from playhouse.db_url import parse
from tornado import web
from tornado.ioloop import IOLoop

from tcrudge.handlers import ApiListHandler, ApiItemHandler
from tcrudge.models import BaseModel

# Configure Tornado to use asyncio
IOLoop.configure('tornado.platform.asyncio.AsyncIOMainLoop')

# Create database
DATABASE_URL = 'postgresql://user:dbpass@pg/test'

db_param = parse(DATABASE_URL)

db = peewee_async.PooledPostgresqlDatabase(**db_param)


# CRUDL Model
class Company(BaseModel):
    name = peewee.TextField()
    active = peewee.BooleanField()

    class Meta:
        database = db


# CL Handler
class CompanyDetailHandler(ApiItemHandler):
    model_cls = Company


# RUD Handler
class CompanyListHandler(ApiListHandler):
    model_cls = Company
    default_filter = {'active': True}


app_handlers = [
    ('^/api/v1/companies/', CompanyListHandler),
    ('^/api/v1/companies/([^/]+)/', CompanyDetailHandler)
]

application = web.Application(app_handlers)

# ORM
application.objects = peewee_async.Manager(db)

with application.objects.allow_sync():
    # Creates table, if not exists
    Company.create_table(True)

application.listen(8080, '0.0.0.0')
loop = asyncio.get_event_loop()
# Start application
loop.run_forever()