Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
|
@@ -15,6 +15,10 @@ app = FastAPI()
|
|
| 15 |
NOTION_SECRET = os.getenv("NOTION_SECRET", "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")
|
| 16 |
NOTION_VERSION = "2025-09-03"
|
| 17 |
NOTION_DRIVE_PROP_ID = os.getenv("NOTION_DRIVE_PROP_ID", "EFoh") # ID بتاع حقل Google Drive Link
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
# ===== Google Drive Config =====
|
| 20 |
GOOGLE_CREDENTIALS = os.getenv("GOOGLE_CREDENTIALS") # JSON string للـ service account
|
|
@@ -518,35 +522,50 @@ async def webhook(request: Request):
|
|
| 518 |
event_type = body.get("type")
|
| 519 |
page_id = body.get("entity", {}).get("id")
|
| 520 |
timestamp = body.get("timestamp")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 521 |
|
| 522 |
print("\n===== NEW WEBHOOK EVENT =====")
|
| 523 |
print("Raw body:", body)
|
| 524 |
|
| 525 |
if event_type == "page.created":
|
| 526 |
-
|
| 527 |
-
|
| 528 |
-
print(
|
| 529 |
-
|
| 530 |
-
|
| 531 |
-
|
| 532 |
-
|
| 533 |
-
|
| 534 |
-
|
| 535 |
-
|
| 536 |
-
|
| 537 |
-
|
| 538 |
-
|
| 539 |
-
|
| 540 |
-
|
| 541 |
-
|
| 542 |
-
|
| 543 |
-
|
| 544 |
-
|
| 545 |
-
|
| 546 |
-
|
| 547 |
-
|
| 548 |
-
|
| 549 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 550 |
|
| 551 |
elif event_type == "page.deleted":
|
| 552 |
print(f"Page deleted. ID: {page_id}, Timestamp: {timestamp}")
|
|
|
|
| 15 |
NOTION_SECRET = os.getenv("NOTION_SECRET", "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")
|
| 16 |
NOTION_VERSION = "2025-09-03"
|
| 17 |
NOTION_DRIVE_PROP_ID = os.getenv("NOTION_DRIVE_PROP_ID", "EFoh") # ID بتاع حقل Google Drive Link
|
| 18 |
+
NOTION_TARGET_DATABASE_ID = os.getenv(
|
| 19 |
+
"NOTION_TARGET_DATABASE_ID",
|
| 20 |
+
"8ad05d66-3b83-4102-ac37-1e3e35dd10a7" # الداتابيز اللي عايزين نشتغل عليها بس
|
| 21 |
+
)
|
| 22 |
|
| 23 |
# ===== Google Drive Config =====
|
| 24 |
GOOGLE_CREDENTIALS = os.getenv("GOOGLE_CREDENTIALS") # JSON string للـ service account
|
|
|
|
| 522 |
event_type = body.get("type")
|
| 523 |
page_id = body.get("entity", {}).get("id")
|
| 524 |
timestamp = body.get("timestamp")
|
| 525 |
+
parent = body.get("data", {}).get("parent", {})
|
| 526 |
+
parent_db_id = None
|
| 527 |
+
if parent.get("type") == "database":
|
| 528 |
+
parent_db_id = parent.get("id")
|
| 529 |
+
|
| 530 |
+
print(f"[DEBUG] Parent database id: {parent_db_id}")
|
| 531 |
|
| 532 |
print("\n===== NEW WEBHOOK EVENT =====")
|
| 533 |
print("Raw body:", body)
|
| 534 |
|
| 535 |
if event_type == "page.created":
|
| 536 |
+
# لو الحدث مش جاي من الداتابيز اللي احنا مستهدفينها -> تجاهل
|
| 537 |
+
if parent_db_id != NOTION_TARGET_DATABASE_ID:
|
| 538 |
+
print(
|
| 539 |
+
f"[SKIP] Page {page_id} is in database {parent_db_id}, "
|
| 540 |
+
f"not target {NOTION_TARGET_DATABASE_ID}. Skipping template & drive."
|
| 541 |
+
)
|
| 542 |
+
print("================================\n")
|
| 543 |
+
return {"status": "ignored"}
|
| 544 |
+
|
| 545 |
+
title = await get_page_title(page_id)
|
| 546 |
+
|
| 547 |
+
print(f"Event Type : {event_type}")
|
| 548 |
+
print(f"Page Title : {title}")
|
| 549 |
+
print(f"Page ID : {page_id}")
|
| 550 |
+
print(f"Timestamp : {timestamp}")
|
| 551 |
+
|
| 552 |
+
# تشيك الأول: هل الصفحة دي Archived (زي لما تدوس Escape على placeholder)؟
|
| 553 |
+
archived = await is_block_archived(page_id)
|
| 554 |
+
if archived:
|
| 555 |
+
print(f"[TEMPLATE] Page {page_id} is archived right after creation. Skipping template & drive.")
|
| 556 |
+
else:
|
| 557 |
+
# 1) نطبّق التمبلت
|
| 558 |
+
try:
|
| 559 |
+
await apply_template_to_page(page_id)
|
| 560 |
+
except Exception as e:
|
| 561 |
+
print("[ERROR] While applying template:", e)
|
| 562 |
+
|
| 563 |
+
# 2) ننشئ فولدر على الدرايف باسم الصفحة ونحط اللينك في النوشن
|
| 564 |
+
try:
|
| 565 |
+
drive_link = ensure_drive_folder_for_page(title or page_id)
|
| 566 |
+
await update_page_drive_link(page_id, drive_link)
|
| 567 |
+
except Exception as e:
|
| 568 |
+
print("[ERROR] While creating drive folder or updating Notion URL:", e)
|
| 569 |
|
| 570 |
elif event_type == "page.deleted":
|
| 571 |
print(f"Page deleted. ID: {page_id}, Timestamp: {timestamp}")
|