A helper for flask sqlalchemy dbs
Project description
Busie Flask Helper
A package to help with common initialization code across Busie Flask projects
Helpful for use with the application factory pattern. Allows for modularization of initialization code, such that factories are not cluttered with boilerplate initialization
Installation
pip install busie-flask-helper
Usage
# in app.py, or wherever application initialization lives
from busie_flask import FlaskHelper
helper = FlaskHelper('abs/path/to/project/')
db = helper.db
auth = helper.auth
cache = helper.cache
# Other Initialization Code omitted
def create_app():
app = Flask(__name__)
# Other App Factory initialization omitted
# this invocation initializes all of the helper objects with the application
# this includes migration commands, models, views, auth, cache client, orm
helper.init_app(app, 'relative/path/to/models', '/relative/path/to/views')
return app
# in some module, maybe an API View
from flask import request
from src.app import auth
class SomeView(MethodView):
def get(self):
decoded_token = auth.handle_auth_header(auth_header=request.headers.get('Authorization'))
# Rest of application api view code
API
FlaskHelper
Public Properties
db
<[SQLAlchemy] (https://flask-sqlalchemy.palletsprojects.com/en/2.x/)>auth
<[AuthHelper] (#authhelper)>cache
<[CacheClient] (#cacheclient)>
Public Methods
FlaskHelper(root_dir, app=None, models_dir=None, views_dir=None)
- param
root_dir
: The root directory of the project, best practice to pass an abspath here. if your application lives in src/app then your root dir should be src/ - See
init_app
method documentation for specifics on the other params
- param
init_app(self, app, models_dir, views_dir)
- param
app
: A Flask application instance - param
models_dir
: Relative path to the models directory, with respect to the root_dir that the helper was initialized with - param
views_dir
: same asmodels_dir
, but for views
- param
AuthHelper
Public Properties
JWTPayload
<[JWTPaylaod] (#jwtpayload)>: Custom Payload for JWT with validation and defaultsAuthenticationSignException
AuthenticationVerificationException
Public Methods
AuthHelper(app=None)
: Constructorinit_app(self, app)
: Initialize the AuthHelper with a Flask application- param
app
: A Flask application instance. app.config must haveAUTH_SECRET
- param
JWTPayload
Public Properties
sub
: REQUIRED The subject of the jwt, should be astring
in most casesrole
: REQUIRED The subjects 'role' within the system (i.e superadmin, user, etc.)org
: REQUIRED The subject's organizationiat
: DEFAULT SUPPLIED POSIX timestamp (seconds) of issue date, defaults to utcnowexp
: DEFAULT SUPPLIED POSIX timestamp (seconds) of expiration date (defaults to 15 minutes fromiat
)
Public Methods
json(self)
: JSON-ifies the JWT Payload claims.
CacheClient
Public Properties
redis
: The redis instance. Allows for direct interation with the python Redis API
Public Methods
CacheClient(app=None)
: Constructorinit_app(self, app)
: Initialize the redis client with application.- param
app
: A Flask application instance. app.config must haveREDIS_HOST
REDIS_PORT
andREDIS_DB
. NOTEREDIS_PASSWORD
is also used, but this method will not throw without it
- param
get
: Alias for redis.getset
: Alias for redis.set
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
busie-flask-helper-1.1.0.tar.gz
(10.6 kB
view hashes)
Built Distribution
Close
Hashes for busie_flask_helper-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18891ae93d602ee5bc29509209508b9846c18c90d80368d1d0d80bb673e9a238 |
|
MD5 | e6752951fa053ceaedd3b2bb832edf97 |
|
BLAKE2b-256 | 2a673ee76d1ec86b18941ecb4cc582d0c61d1d7987fad47fd957f18d3849eb68 |