RESTful Flask framework with builtin MongoDB, Redis, Celery, Sentry and Slack integrations
Project description
🙈 Dead Simple Web Framework 🙉
Overview:
A RESTful Flask framework with MongoDB, Redis, Celery, Slack and Sentry integrations:
Backend:
- Flask [Framework]
- MongoDB [Database]
- Redis [Cache]
- Celery + RabbitMQ [Async Tasks]
- Slack + Sentry [Logging]
Installing:
$ pip install dead-simple-framework
Configuration:
TODO - DOCS
Example Application (demo.py
):
from dead_simple_framework import Route, RouteHandler, Application
from dead_simple_framework.handlers import UserRouteHandler, LoginRouteHandler, Permissions, DefaultPermissionsRouteHandler
from dead_simple_framework.database import Indices
from dead_simple_framework.api.errors import API_Error
from dead_simple_framework.api.utils import JsonError
# Method that throws a sample error
def throw(msg): raise API_Error(msg, 400)
# App config for a simple blog application with user accounts
sample_config = {
'routes': {
# Users
'users': Route(
# Route with a built-in handler for creating, updating, fetching and deleting users
# Only authenticated users can perform certain operations.
# Adding a `verifier` to the class will let you allow only a specific user to update
# their data or delete their account.
url = '/api/users',
handler=UserRouteHandler(permissions=Permissions(
PUT='USER', PATCH='USER', GET='USER', DELETE='USER'
)),
# The schema controls what data can be passed to the endpoint
# In this case, a user ObjectId is required and the only property
# supported.
schema={
'GET': {
'type': 'object',
'properties': {
'_id': {'type': 'string'}
},
'required': ['_id']
}
},
# The MongoDB collection where data for this route should be stored
# It is passed to any overloaded method handlers (e.g. a custom GET method)
collection='users'
),
# Authentication
'authentication': Route(
# Route with a built-in handler for authenticating users and issuing a JSON Web Token
url='/api/authenticate',
handler=LoginRouteHandler(),
# It relies on the same collection as the core `users` route
collection='users'
),
# Posts
'posts': Route(
# Route with a builtin generic CRUD handler for creating, updating, fetching and deleting posts
# Only authenticated users can perform certain operations.
url='/api/posts',
handler=DefaultPermissionsRouteHandler(permissions=Permissions(POST=['USER'], PUT=['USER'], PATCH=['USER'], DELETE=['USER'])),
collection='posts'
),
# Sample Error
'error': Route(
# Route that demonstrates built-in error handling
url='/error',
handler=RouteHandler(
# Custom handlers allow a POST request or a GET request to create different errors
POST=lambda request, payload: throw(f'POST - Error from payload {payload}'),
GET=lambda request, payload: JsonError('This is a GET error', code=500),
)
),
},
# Application settings
'settings': {
# JWT Settings determine if the app uses JWT, what the token lifespan will be and more
'jwt_settings': {
'app_use_jwt': True,
'app_jwt_lifespan': 600,
'app_permissions': ['USER', 'ADMIN'],
}
},
# MongoDB indices for each collection used by the application
'indices': Indices({
'users': {
'username': {
'order': -1
},
'password': {
'order': 1,
'compound_with': 'username'
}
},
})
}
if __name__ == '__main__':
Application(sample_config).run()
-
Starts a local server at http://0.0.0.0:5000/
-
Serves CRUD operations for MongoDB users collection
users
at endpoint/api/users
-
Issues JWT tokents for created users at endpoint
/api/authenticate
-
Serves CRUD operations for MongoDB collection
posts
at endpoint/api/posts
-
Demos errors at endpoint
/error
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for dead_simple_framework-1.3.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d60a8daece8d731ab7bca342d2a6dc540c6fe05838bd3ef8deb34849428cfa2 |
|
MD5 | d89b185f1b2fb32288c7d88b3830a888 |
|
BLAKE2b-256 | 90a05288425b6e693fe2553cb428dd41c8632341ff64054ec515e7552a7281fb |
Close
Hashes for dead_simple_framework-1.3.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c188d90113c58c9bab1fb7b0e1d21ec0626001abd9c587185af8fe41b12ead5 |
|
MD5 | a45d818f5b70cd75be065c42ec9b9ff7 |
|
BLAKE2b-256 | 8bca5ba23c87daa9240a7dbda9283eeb424fdce79c4851bce4a269c2ff90731b |