Cascade inserting for Notion Database Automation (as log)
Project description
Notion Cascade Insert
Installing
! pip install notion_cascade_insert
How to use
Building blocks
This package is built to emulate the Notion Automation function but
with one to many relation. I built this to track the transactions (hence
the log) that involves calculating in case where there is an big object
that map to many other objects, like when you have a recipe and you want
to get the ingredients, or when you have a lists of guests and you want
to get their details… This helps you manage the ammoun of stuff that
relate to that big object.
There are 4 of the pipelines:
- TriggerDB: monitors a database for status changes
- JunctionDB: looks up related items and amounts
- LogDB: writes transaction logs
- AutoLogger: orchestrates the flow
We can than use them to connect to Notion Webhook and create the
functions that we want.
Example
Let’s say we’re building a Bakery Inventory management database, and we
want our Production Plan database to automatically log the used
ingredients in a recipe that we want to make. This is a one-to-many
behavior, which Notion don’t support at the momment. For this, we would
do something like:
from notion_cascade_insert.core import TriggerDB, JunctionDB, LogDB, AutoLogger
from notion_cascade_insert.webhook import NotionWebhook
from fastapi import FastAPI, Request
from notion_client import Client
import os
notion = Client(auth=os.getenv("NOTION_TOKEN"))
trigger = TriggerDB(os.getenv("PRODUCTION_PLAN_DB_ID"), notion, "Status", "Recipes", "Batches to make")
junction = JunctionDB(os.getenv("RECIPE_INGREDIENTS_DB_ID"), notion, "Recipes", "Ingredient Inventory", "Amount per batch")
log = LogDB(os.getenv("INGREDIENT_TRANSACTION_DB"), notion, "Ingredient", "Amount", "Production Plan", "Reason")
db_logger = AutoLogger(trigger, junction, log, "In Process", -1)
This will create your Ingredient Logger! Then you can set up your server like so:
app = FastAPI()
@app.post("/webhook")
async def webhook(request: Request):
hook = NotionWebhook(await request.json())
if hook.parent_db_id == os.getenv("PRODUCTION_PLAN_DB_ID"):
if hook.type == 'page.created': return {"result": db_logger.process(hook.entity_id)}
return {"status": "received"}
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file notion_cascade_insert-0.0.7.tar.gz.
File metadata
- Download URL: notion_cascade_insert-0.0.7.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40b4888091ff5d256cdad3f131a40f09725f8e695dae319ea31b2f36df468beb
|
|
| MD5 |
1d6fda5033e48e8a4476fbc0e17a1ded
|
|
| BLAKE2b-256 |
ba1852fb295fe23f9ccedfb2ca1017074893f6ea3abd19d99f9e628ea8c5feb7
|
File details
Details for the file notion_cascade_insert-0.0.7-py3-none-any.whl.
File metadata
- Download URL: notion_cascade_insert-0.0.7-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
152fe76ef7ece009763105738ff16e0219c25f8a535c10d9fb57e5a3da8ff687
|
|
| MD5 |
7ebf4f0c3f452d260c2d662afdb45106
|
|
| BLAKE2b-256 |
c3421602ca26435cf050b3fdccaa791575091588c6056c26c0dbb58259c18708
|