notion-cascade-insert 0.0.1__py3-none-any.whl → 0.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- notion_cascade_insert/__init__.py +1 -1
- notion_cascade_insert/_modidx.py +2 -0
- notion_cascade_insert/core.py +21 -3
- {notion_cascade_insert-0.0.1.dist-info → notion_cascade_insert-0.0.3.dist-info}/METADATA +3 -22
- notion_cascade_insert-0.0.3.dist-info/RECORD +10 -0
- {notion_cascade_insert-0.0.1.dist-info → notion_cascade_insert-0.0.3.dist-info}/WHEEL +1 -1
- notion_cascade_insert-0.0.1.dist-info/RECORD +0 -10
- {notion_cascade_insert-0.0.1.dist-info → notion_cascade_insert-0.0.3.dist-info}/entry_points.txt +0 -0
- {notion_cascade_insert-0.0.1.dist-info → notion_cascade_insert-0.0.3.dist-info}/licenses/LICENSE +0 -0
- {notion_cascade_insert-0.0.1.dist-info → notion_cascade_insert-0.0.3.dist-info}/top_level.txt +0 -0
notion_cascade_insert/_modidx.py
CHANGED
|
@@ -20,6 +20,8 @@ d = { 'settings': { 'branch': 'main',
|
|
|
20
20
|
'notion_cascade_insert.core.Database': ('core.html#database', 'notion_cascade_insert/core.py'),
|
|
21
21
|
'notion_cascade_insert.core.Database.__init__': ( 'core.html#database.__init__',
|
|
22
22
|
'notion_cascade_insert/core.py'),
|
|
23
|
+
'notion_cascade_insert.core.Database.check_db_exists': ( 'core.html#database.check_db_exists',
|
|
24
|
+
'notion_cascade_insert/core.py'),
|
|
23
25
|
'notion_cascade_insert.core.Database.get_schema': ( 'core.html#database.get_schema',
|
|
24
26
|
'notion_cascade_insert/core.py'),
|
|
25
27
|
'notion_cascade_insert.core.JunctionDB': ( 'core.html#junctiondb',
|
notion_cascade_insert/core.py
CHANGED
|
@@ -13,6 +13,10 @@ class Database:
|
|
|
13
13
|
notion # Notion client instance
|
|
14
14
|
):
|
|
15
15
|
self.db_id, self.notion = db_id, notion
|
|
16
|
+
|
|
17
|
+
# Fetch and store the data source ID
|
|
18
|
+
db_info = self.notion.databases.retrieve(self.db_id)
|
|
19
|
+
self.data_source_id = db_info['data_sources'][0]['id']
|
|
16
20
|
|
|
17
21
|
def get_schema(self):
|
|
18
22
|
"""Retrieve the database schema.
|
|
@@ -22,6 +26,16 @@ class Database:
|
|
|
22
26
|
"""
|
|
23
27
|
db = self.notion.databases.retrieve(self.db_id)
|
|
24
28
|
return {name: props['type'] for name, props in db['properties'].items()}
|
|
29
|
+
|
|
30
|
+
def check_db_exists(self):
|
|
31
|
+
"Check if database exists and is accessible"
|
|
32
|
+
try:
|
|
33
|
+
db = self.notion.databases.retrieve(database_id=self.db_id)
|
|
34
|
+
print(f"✓ Database exists: {db['title'][0]['plain_text']}")
|
|
35
|
+
return True
|
|
36
|
+
except Exception as e:
|
|
37
|
+
print(f"✗ Database not found: {e}")
|
|
38
|
+
return False
|
|
25
39
|
|
|
26
40
|
# %% ../nbs/00_core.ipynb #52b04240
|
|
27
41
|
class TriggerDB(Database):
|
|
@@ -80,7 +94,7 @@ class JunctionDB(Database):
|
|
|
80
94
|
dict: Mapping of item IDs to their amounts, empty dict if no relation_id
|
|
81
95
|
"""
|
|
82
96
|
if not relation_id: return {}
|
|
83
|
-
res = self.notion.data_sources.query(data_source_id=self.
|
|
97
|
+
res = self.notion.data_sources.query(data_source_id=self.data_source_id, filter={"property": self.relation_prop, "relation": {"contains": relation_id}})
|
|
84
98
|
return {r['properties'][self.item_prop]['relation'][0]['id']: r['properties'][self.amount_prop]['number'] for r in res['results']}
|
|
85
99
|
|
|
86
100
|
#| export
|
|
@@ -133,13 +147,16 @@ class AutoLogger:
|
|
|
133
147
|
self.trigger_db, self.junction_db, self.log_db = trigger_db, junction_db, log_db
|
|
134
148
|
self.trigger_status, self.multiplier = trigger_status, multiplier
|
|
135
149
|
|
|
136
|
-
def process(self,
|
|
150
|
+
def process(self,
|
|
151
|
+
page_id,
|
|
152
|
+
reason:str # Reason for log entry
|
|
153
|
+
):
|
|
137
154
|
"""Process a trigger page and create log entries."""
|
|
138
155
|
status, relation_id, qty = self.trigger_db.get_page_data(page_id)
|
|
139
156
|
if status != self.trigger_status: return f"Status is {status}, not {self.trigger_status}"
|
|
140
157
|
items = self.junction_db.get_items(relation_id)
|
|
141
158
|
if not items: return "No items found in junction"
|
|
142
|
-
for item_id, amt in items.items(): self.log_db.create_entry(item_id, self.multiplier * qty * amt, page_id,
|
|
159
|
+
for item_id, amt in items.items(): self.log_db.create_entry(item_id, self.multiplier * qty * amt, page_id, reason)
|
|
143
160
|
return f"Logged {len(items)} items"
|
|
144
161
|
|
|
145
162
|
def cancel(self, page_id):
|
|
@@ -176,3 +193,4 @@ class AutoLogger:
|
|
|
176
193
|
if old_status and old_status != self.trigger_status: return self.process(page_id)
|
|
177
194
|
if old_qty and old_qty != qty: return self.adjust_batch(page_id, old_qty, qty)
|
|
178
195
|
return "No action needed"
|
|
196
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: notion_cascade_insert
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3
|
|
4
4
|
Summary: Cascade inserting for Notion Database Automation (as log)
|
|
5
5
|
Home-page: https://github.com/amezaikupan/notion_cascade_insert
|
|
6
|
-
Author:
|
|
7
|
-
Author-email:
|
|
6
|
+
Author: TN
|
|
7
|
+
Author-email: amezaikupan@gmail.com
|
|
8
8
|
License: Apache-2.0
|
|
9
9
|
Keywords: nbdev jupyter notebook python
|
|
10
10
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -47,25 +47,6 @@ Dynamic: summary
|
|
|
47
47
|
! pip install notion_cascade_insert
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Requirement already satisfied: notion_cascade_insert in /app/data/.local/lib/python3.12/site-packages (0.0.1)
|
|
51
|
-
Requirement already satisfied: fastcore in /usr/local/lib/python3.12/site-packages (from notion_cascade_insert) (1.12.2)
|
|
52
|
-
Requirement already satisfied: fastapi in /usr/local/lib/python3.12/site-packages (from notion_cascade_insert) (0.128.0)
|
|
53
|
-
Requirement already satisfied: notion_client in /app/data/.local/lib/python3.12/site-packages (from notion_cascade_insert) (2.7.0)
|
|
54
|
-
Requirement already satisfied: starlette<0.51.0,>=0.40.0 in /app/data/.local/lib/python3.12/site-packages (from fastapi->notion_cascade_insert) (0.50.0)
|
|
55
|
-
Requirement already satisfied: pydantic>=2.7.0 in /usr/local/lib/python3.12/site-packages (from fastapi->notion_cascade_insert) (2.12.5)
|
|
56
|
-
Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.12/site-packages (from fastapi->notion_cascade_insert) (4.15.0)
|
|
57
|
-
Requirement already satisfied: annotated-doc>=0.0.2 in /usr/local/lib/python3.12/site-packages (from fastapi->notion_cascade_insert) (0.0.4)
|
|
58
|
-
Requirement already satisfied: anyio<5,>=3.6.2 in /usr/local/lib/python3.12/site-packages (from starlette<0.51.0,>=0.40.0->fastapi->notion_cascade_insert) (4.12.1)
|
|
59
|
-
Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.12/site-packages (from anyio<5,>=3.6.2->starlette<0.51.0,>=0.40.0->fastapi->notion_cascade_insert) (3.11)
|
|
60
|
-
Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.12/site-packages (from pydantic>=2.7.0->fastapi->notion_cascade_insert) (0.7.0)
|
|
61
|
-
Requirement already satisfied: pydantic-core==2.41.5 in /usr/local/lib/python3.12/site-packages (from pydantic>=2.7.0->fastapi->notion_cascade_insert) (2.41.5)
|
|
62
|
-
Requirement already satisfied: typing-inspection>=0.4.2 in /usr/local/lib/python3.12/site-packages (from pydantic>=2.7.0->fastapi->notion_cascade_insert) (0.4.2)
|
|
63
|
-
Requirement already satisfied: packaging in /usr/local/lib/python3.12/site-packages (from fastcore->notion_cascade_insert) (25.0)
|
|
64
|
-
Requirement already satisfied: httpx>=0.23.0 in /usr/local/lib/python3.12/site-packages (from notion_client->notion_cascade_insert) (0.28.1)
|
|
65
|
-
Requirement already satisfied: certifi in /usr/local/lib/python3.12/site-packages (from httpx>=0.23.0->notion_client->notion_cascade_insert) (2026.1.4)
|
|
66
|
-
Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.12/site-packages (from httpx>=0.23.0->notion_client->notion_cascade_insert) (1.0.9)
|
|
67
|
-
Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.12/site-packages (from httpcore==1.*->httpx>=0.23.0->notion_client->notion_cascade_insert) (0.16.0)
|
|
68
|
-
|
|
69
50
|
## How to use
|
|
70
51
|
|
|
71
52
|
### Building blocks
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
notion_cascade_insert/__init__.py,sha256=auXNGZG-UuY84e9PtdBQpmFqSBmZvpdPH-yqwWW6UfY,322
|
|
2
|
+
notion_cascade_insert/_modidx.py,sha256=iaCld590eNIbQeklcaoYoqTdF6fuSOpmCkPx-diM9k4,6080
|
|
3
|
+
notion_cascade_insert/core.py,sha256=9Xe5ypDZnZZh8lm5fFyEaVz6s5EoCECGZJcQq25_3fw,8808
|
|
4
|
+
notion_cascade_insert/webhook.py,sha256=myE6iRY232Zd2uBSfuepPcIPm4mopEYWmFzvfaWxF30,1214
|
|
5
|
+
notion_cascade_insert-0.0.3.dist-info/licenses/LICENSE,sha256=xV8xoN4VOL0uw9X8RSs2IMuD_Ss_a9yAbtGNeBWZwnw,11337
|
|
6
|
+
notion_cascade_insert-0.0.3.dist-info/METADATA,sha256=J9HdPs-Oatkt_gQPFo23_rqZqy376upc7i3GOuHWLi0,3724
|
|
7
|
+
notion_cascade_insert-0.0.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
8
|
+
notion_cascade_insert-0.0.3.dist-info/entry_points.txt,sha256=XqKv0P7bGQlZ7SqZcyTdvIaQJI8GlMHtcJP9NPOhQbA,64
|
|
9
|
+
notion_cascade_insert-0.0.3.dist-info/top_level.txt,sha256=XRld1ok2pAh3DC9o3ZByqlORHGblJMVMOjE0pQRROE4,22
|
|
10
|
+
notion_cascade_insert-0.0.3.dist-info/RECORD,,
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
notion_cascade_insert/__init__.py,sha256=PTPiHewYdSbDtv-VQRxIRCW4-vkVdIAIDhtFvHAUomE,322
|
|
2
|
-
notion_cascade_insert/_modidx.py,sha256=Z2tOwCLdEpsBT0EAcjJwRLYQwbtx8vDvvHsXdB7m4ow,5806
|
|
3
|
-
notion_cascade_insert/core.py,sha256=_7tTLut_SlwA8r2B-FBBW3ChQPOmu7CZz3RtFUEWRrE,8193
|
|
4
|
-
notion_cascade_insert/webhook.py,sha256=myE6iRY232Zd2uBSfuepPcIPm4mopEYWmFzvfaWxF30,1214
|
|
5
|
-
notion_cascade_insert-0.0.1.dist-info/licenses/LICENSE,sha256=xV8xoN4VOL0uw9X8RSs2IMuD_Ss_a9yAbtGNeBWZwnw,11337
|
|
6
|
-
notion_cascade_insert-0.0.1.dist-info/METADATA,sha256=IV187x-EVC-uvLHjCSoIlWU52BchOVIhsI4xcgUI1Cc,6419
|
|
7
|
-
notion_cascade_insert-0.0.1.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
8
|
-
notion_cascade_insert-0.0.1.dist-info/entry_points.txt,sha256=XqKv0P7bGQlZ7SqZcyTdvIaQJI8GlMHtcJP9NPOhQbA,64
|
|
9
|
-
notion_cascade_insert-0.0.1.dist-info/top_level.txt,sha256=XRld1ok2pAh3DC9o3ZByqlORHGblJMVMOjE0pQRROE4,22
|
|
10
|
-
notion_cascade_insert-0.0.1.dist-info/RECORD,,
|
{notion_cascade_insert-0.0.1.dist-info → notion_cascade_insert-0.0.3.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{notion_cascade_insert-0.0.1.dist-info → notion_cascade_insert-0.0.3.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{notion_cascade_insert-0.0.1.dist-info → notion_cascade_insert-0.0.3.dist-info}/top_level.txt
RENAMED
|
File without changes
|