Guillotina Postgresql integration
Project description
guillotina_asyncom
POC of integrating a new Content-type DBFolder
- A DBFolder represents a table on postgres with a related sqlalchemy model
Benefits
- Use guillotina permission system
- Use guillotina framework.
- Lookup views on a context (a sqlalchemy object)
- Integrate with the guillotina gmi interface
Howto use
- Create your regular sqlalchemy model, like, import your Base, from guillotina_asyncom.db
from guillotina_asyncom.db import Base
import sqlalchemy as sa
@implementer(IModel)
class Model(Base):
__tablename__ = "extras"
pk = sa.Column(sa.Integer, primary_key=True)
value = sa.Column(sa.JSONB)
Add an object whenever you want of your guillotina content tree:
POST /db/guillotina/
{
"@type": "DBFolder",
"id", : "dbmodel",
"model": "Model"
}
From here, we can just use the guillotina API with our new endpoint.
POST /db/guillotina/dbmodel/ { "value": {"prop", "value"} }
GET /db/guillotina/dbmodel/@search GET /db/guillotina/dbmodel/{pk} DELETE /db/guillotina/dbmodel/{pk} PATCH /db/guillotina/dbmodel/{pk}
Thought it should work registering services for instances...
POST /db/guillotina/dbmodel/{pk}/@requeue
- Cool feature: It integrates with guillotina_react :)
IDEAS and TODOS
-
It's not hard to build a generic model explorer from here. All registered models on sqlalchemy live on Base.metadata... just build a small traversal around
-
Generate the expected schema for every new type, perhaps on the /db/guillotina/dbmodel/@schema taking it from declarative sqlalchemy models
-
Integrate the permission system on rows... Just implement an acl jsonb column in your models. (Setting the ownership, or whatever you want..)
-
The event system is still not implemented, perhaps could be implemented but with some new events. (If we do with the actuals we will mess with the catalog)
-
Implement a rich @search model (on the end we can just translate, the actual implementations to sqlalchemy querys). Also implement pagger, and the rest. This will make this fit so well with guillotina_react.
...
You are seeing a truncated changelog.
You can read the changelog file <https://github.com/plone/guillotina/blob/master/CHANGELOG.rst>
_
for a complete list.
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 guillotina_asyncom-0a1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f600b9c08eadf7049958b6c65171adf2f6472fd7cb849a5923f5ea38e4be4c98 |
|
MD5 | 2c213229bc315f8e746f8f2073b57047 |
|
BLAKE2b-256 | 6378b877f51166bfd923b312cc6c29bf85b4f4903d3c11463845986587bbdd45 |