Skip to main content

Admin Panel for DB with Gino ORM and Sanic (inspired by Flask-Admin)

Project description

gino_admin

Admin Panel for PostgreSQL DB with Gino ORM and Sanic

Table view

How to install

pip install gino_admin

Usage example

Full example placed in ‘examples’ folder:

examples/

How to use

Create in your project ‘admin.py’ file and use add_admin_panel from from gino_admin import add_admin_panel

Example:

from from gino_admin import add_admin_panel


add_admin_panel(
    app, db, [User, Place, City, GiftCard], custom_hash_method=custom_hash_method
)

Where:

‘app’ - your Sanic application ‘db’ : from gino.ext.sanic import Gino; db = Gino() and [User, Place, City, GiftCard] - list of models that you want to add in Admin Panel to maintain

custom_hash_method - optional parameter to define you own hash method to encrypt all ‘_hash’ columns of your Models. In admin panel _hash fields will be displayed without ‘_hash’ prefix and fields values will be hidden like ‘**

Or you can use admin as a standalone App, when you need to define Sanic Application first (check ‘example’ folder)

Version 0.0.6 Updates:

  1. Clean up template, hide row controls under menu.

  2. Added ‘Copy’ option to DB row.

  3. Now errors showed correct in table view pages in process of Delete, Copy, CSV Upload

  4. Added possible to work without auth (for Debug purposes). Set env variable ‘ADMIN_AUTH_DISABLE=True’

  5. Template updated

  6. Added export Table’s Data to CSV

  7. First version of SQL-query execution (run any query and get answer from PostgreSQL)

  8. Fixed error display on csv upload

Version 0.0.5 Updates

  1. Upload from CSV: fixed upload from _hash fields - now in step of upload called hash function (same as in edit, or add per item)

  2. Fixed errors relative to datetime fields edit, added datetime_str_formats field to Config object, that allows to add custom datetime str formats. They used in step of convert str from DB to datetime object.

  3. Now ‘_hash’ fields values in table showed as ‘*******

  4. Fixed errors relative to int id’s. Now they works correct in edit and delete.

  5. Update Menu template. Now if there is more when 4 models - they will be available under Dropdown menu.

Version 0.0.4 Updates:

  1. Upload from CSV - works, added example to examples/ files. You can upload data from ‘.csv’ tables.

  2. Edit per row - now exist button ‘edit’.

  3. Fixed delete for ALL rows of the model

  4. Fixed delete per element.

  5. Now works full ‘CRUD’.

  6. Fixed auth, now it sets ‘cookie’ and compare user-agent (for multiple users per login)

Authentication

  1. To disable authorisation:

Set environment variable ‘ADMIN_AUTH_DISABLE=1’

os.environ['ADMIN_AUTH_DISABLE'] = '1'

or from shell:

export ADMIN_AUTH_DISABLE=1
  1. To define admin user & password:

check example/ folder to get code snippets

app = Sanic()

app.config["ADMIN_USER"] = "admin"
app.config["ADMIN_PASSWORD"] = "1234"

Limitations

For correct work of Admin Panel all models MUST contain unique ‘id’ field. ‘id’ used to identify row (one element) for Edit & Delete operations.

so if you define model, for example, User:

class User(db.Model):

    __tablename__ = "users"

    id = db.Column(db.String(), unique=True, primary_key=True)

id also can be Integer/BigInteger:

class User(db.Model):

    __tablename__ = "users"

    id = db.Column(db.BigInteger(), unique=True, primary_key=True)

Supported operations

  • One user auth

  • Create item by one for the Model

  • Delete all rows

  • Delete one item

  • Copy existed element (data table row)

  • Edit existed data

  • Upload data from csv

TODO:

  • Select multiple for delete/copy

  • Deepcopy element (recursive copy all rows/objects that depend on chosen as ForeignKey)

  • Edit multiple

  • Multiple users

  • Set up data presets (drop table for some data state, defined from csv)

  • Filters in columns

  • Actions history

Contributions

Contributions and feature requests are very welcome!

If you have time and want to fix: Please open issues with that you want to add or write to me in Telegram: @xnuinside or mail: xnuinside@gmail.com

Developer guide

Project use pre-commit hooks, so you need setup them

Just run:

pre-commit install

to install git hooks in your .git/ directory.

Screens:

Table view Features per row SQL-runner Add item Simple auth Display errors on upload data from CSV

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

gino_admin-0.0.6.tar.gz (17.1 kB view hashes)

Uploaded Source

Built Distribution

gino_admin-0.0.6-py3-none-any.whl (20.5 kB view hashes)

Uploaded Python 3

Supported by

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