Admin Panel for PostgreSQL DB with Gino ORM and Sanic
Project description
gino_admin
Admin Panel for PostgreSQL DB with Gino ORM and Sanic
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.7 Updates:
Fixes: datetime issue in ‘Copy’ action, delete all modal
New feature “Presets” (define multiple CSV files with data - upload all with one click).
New feature “Drop DB” (full clean up & recreate tables).
New features can be find under menu with ‘Cogs’ near ‘SQL-Runner’ button.
Screen with update.
Presets
Load multiple CSV to DB in order by one click.
‘Presets’ feature allows to define folder with DB presets described in yml format. Presets described that CSV-s files and in that order
Check also ‘example/’ folder.
Example:
name: First Preset
description: "Init DB with minimal data"
files:
users: csv/user.csv
gifts: csv/gift.csv
Check examples/src/csv_to_upload for example with presets files.
In order defined in yml, Gino-Admin will load csv files to models. ‘files:’ describe that file (right sight) must be loaded to the model (left side).
In current example: load data from csv/user.csv to Users table, csv/gift.csv to Gifts.
Don’t forget to setup path to folder with presets like with ‘presets_folder’ argument.
...
current_path = os.path.dirname(os.path.abspath(__file__))
add_admin_panel(
app,
db,
[User, Place, City, GiftCard, Country],
custom_hash_method=custom_hash_method,
presets_folder=os.path.join(current_path, "csv_to_upload"),
)
Check example project for more clearly example.
Drop DB
Drop DB feature used for doing full clean up DB - it drop all tables & create them after Drop for all models in Admin Panel.
Upload from CSV
Files samples for example project can be found here: examples/src/csv_to_upload
Version 0.0.6 Updates:
Clean up template, hide row controls under menu.
Added ‘Copy’ option to DB row.
Now errors showed correct in table view pages in process of Delete, Copy, CSV Upload
Added possible to work without auth (for Debug purposes). Set env variable ‘ADMIN_AUTH_DISABLE=True’
Template updated
Added export Table’s Data to CSV
First version of SQL-query execution (run any query and get answer from PostgreSQL)
Fixed error display on csv upload
Authentication
To disable authorisation:
Set environment variable ‘ADMIN_AUTH_DISABLE=1’
os.environ['ADMIN_AUTH_DISABLE'] = '1'
or from shell:
export ADMIN_AUTH_DISABLE=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
Auth by login/pass with cookie check
Create(Add new) item by one for the Model
Search/sort in tables
Upload/export data from/to CSV
Delete all rows/per element
Copy existed element (data table row)
Edit existed data (table row)
SQL-Runner (execute SQL-queries)
Load DB Presets (bunch of CSV)
Drop DB (Full clean up behavior: Drop tables & Recreate)
TODO:
Select multiple for delete/copy
Deepcopy element (recursive copy all rows/objects that depend on chosen as ForeignKey)
Edit multiple items (?)
Roles & User store in DB
Filters in Table’s columns
History logs on changes (log for admin panel actions)
Add possible to add new Presets from GUI
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:
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
Hashes for gino_admin-0.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf5b2556524e9d2a84b8dc419cdde5b1e919a84aa807f5045e336ed433e7cb34 |
|
MD5 | c592bb768f1de15d3fb4f63c04bf202a |
|
BLAKE2b-256 | eff2af73802837779dbec2854a4806b02fa6e819901710fcd2c2b784e7d2df68 |