Skip to main content

Extension to manage SQLAlchemy models in Flask

Project description

Flask-Model-Management

  • This is a Flask extension for managing Flask-SQLAlchemy models.
  • This extension allows the user to perform CRUD (create, read, update, delete) operations on the models registered using the UI

The frontend is built using:

NB: all the above JS & CSS are bundled into this package currently

The backend is built using:

  • Flask-SQLAlchemy & SQLAlchemy
  • Flask-WTF & WTForms

Status: In Alpha Development

BE WARNED: INSTALLING CRUD APPLICATIONS INTO PRODUCTION SERVERS ALLOWS USERS TO PERFORM POTENTIALLY IRREVERSIBLE DATA OPERATIONS

Install

pip install:

pip install flask_model_management

Use

  • an example of how to use without app factory might look something like:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_model_management import ModelManager

app = Flask(__name__)
# from flask_sqlalchemy docs
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
model_manager = ModelManager(app, db)

# showing model declaration for the example
class User(db.Model):
    __tablename__ = "user"

    id = Column(Integer, primary_key=True)
    username = Column(String)

model_manager.register_model(User)
  • with app factory:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_model_management import ModelManager

db = SQLAlchemy()
model_manager = ModelManager()

# showing model declaration for the example
class User(db.Model):
    __tablename__ = "user"

    id = Column(Integer, primary_key=True)
    username = Column(String, nullable=False)

def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
    db.init_app(app)
    model_manager.init_app(app, db)

    model_manager.register_model(User, nullable=False)

UI Examples

  • Home page home page

  • Table page table page

  • Create (single entry) page create single page

  • Read (bulk entries) page read bulk page

  • Update (single) page update single page

  • Update (bulk) page update single page

  • Delete (single) page delete single page

  • Delete (bulk) page delete single page

How it works

frontend perspective

  • Once you plug-in this extension then at: /model-management/ you will find the home dashboard
  • You can browse around the pages and perform CRUD operations on your models

backend perspective

  • A blueprint is added to your app called model_management with the url prefix /model-management
  • 4 url routes are added to this blueprint:
    • A home page at: /
    • A table page at: /<tablename>
    • An operation page at: /<tablename>/<operation>
      • Operations limited to: create, read, update or delete
    • An operation API at: /api/<tablename>
      • CRUD operations are mapped to HTTP methods:
        • POST = create
        • GET = read
        • PUT = update
        • DELETE = delete
  • The data from the frontend forms are then sent via ajax request to the operation API with the required data and HTTP method
  • WARNING: this library will therefore wrap your Flask-SQLAlchemy models with an API endpoint
  • There are 2 'protocols': single & bulk
    • single is for CRUD applied to one entry
      • always applied to: CREATE
      • sometimes applied to: UPDATE, DELETE
    • bulk is for CRUD applied to multiple entries (and is default in all but CREATE)
      • always applied to: READ
      • sometimes (default) applied to: UPDATE, DELETE

Todo

  • re-add decorators to models
  • excluded columns
  • excluded operations

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

Flask-Model-Management-0.1.0.tar.gz (158.5 kB view details)

Uploaded Source

Built Distribution

Flask_Model_Management-0.1.0-py3-none-any.whl (164.6 kB view details)

Uploaded Python 3

File details

Details for the file Flask-Model-Management-0.1.0.tar.gz.

File metadata

  • Download URL: Flask-Model-Management-0.1.0.tar.gz
  • Upload date:
  • Size: 158.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.6.4

File hashes

Hashes for Flask-Model-Management-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9de3ab0cd337cc89579736b7b1bcd313bd624c932d4e6a8d15aa849ec54d1ee9
MD5 dfdee78ae255ce5582576cf986b85eed
BLAKE2b-256 53450522b845ee71b7882a5ac84e9aae9f4726c2682cdc6bc97c294f94398ea8

See more details on using hashes here.

File details

Details for the file Flask_Model_Management-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: Flask_Model_Management-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 164.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.6.4

File hashes

Hashes for Flask_Model_Management-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b732cf027dcd10d1bb9d5e9bc1e77ed666292162951d341cb306ca5192d96bc6
MD5 467d6783401bae01f495866244eda48e
BLAKE2b-256 0484bf623f8dd3e4184965b5c3d4d8edc6f3bf7b61d4854b2a72e1ec6deb0e9c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page