Reusable CRUD endpoints using flask-smorest, flask-jwt-extended, and SQLAlchemy.
Project description
Flask Smorest CRUD
Why repeat yourself?
This library aims to tie together Flask-SQLAlchemy and Flask-Smorest to implement a sane default but easily customizable CRUD API based on SQLAlchemy models inside of Flask.
Quickstart
In create_app()
:
from smorest_crud import CRUD
from flask_jwt_extended import JWTManager, get_current_user
app = Flask()
JWTManager(app)
CRUD(app)
app.config.update(
CRUD_GET_USER=get_current_user,
CRUD_ACCESS_CHECKS_ENABLED=True,
SECRET_KEY="wnt2die",
)
CRUD View:
from flask_smorest import Blueprint
from smorest_crud import ResourceView, CollectionView
pet_blp = Blueprint("pets", "pets", url_prefix="/pet")
@pet_blp.route("")
class PetCollection(CollectionView):
model = Pet
prefetch = [Pet.human, (Pet.human, Human.cars)] # joinedload
access_checks_enabled = False
create_enabled = True
list_enabled = True
@pet_blp.response(PetSchema(many=True))
def get(self):
"""List pets."""
query = super().get()
return query.filter_by(name='mischa')
@pet_blp.arguments(PetSchema)
@pet_blp.response(PetSchema(many=True))
def post(self, args):
"""Create a pet."""
return super().post(args)
@pet_blp.route("/<int:pk>")
class PetResource(ResourceView):
model = Pet
access_checks_enabled = True
get_enabled = True
update_enabled = True
delete_enabled = True
@pet_blp.response(PetSchema)
def get(self, pk):
return super().get(pk)
@pet_blp.arguments(PetSchema)
@pet_blp.response(PetSchema)
def patch(self, args, pk):
return super().patch(args, pk)
@pet_blp.response(PetSchema)
def delete(self, pk):
return super().delete(pk)
Who is this for?
This library is only useful if your application uses:
Where to look?
Look at smorest_crud/test/app.py
Feedback and comments welcome. What would you like to see? Open an issue or a PR with your thoughts.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
smorest-crud-0.0.7.tar.gz
(6.6 kB
view details)
File details
Details for the file smorest-crud-0.0.7.tar.gz
.
File metadata
- Download URL: smorest-crud-0.0.7.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7bf42236f085e0934dd70b3c6c1a2de5179260988a8981bfbd0c548fc2412f0 |
|
MD5 | 6231a27ebdcdeebe7e05754491898abf |
|
BLAKE2b-256 | 29002cc9a795f6f5f492cf15aeedaae2391c30eaf241c5aa156047a103e23c03 |