From 974ed4eb3f5e3d5e234b102e6bdc4884f77f8b14 Mon Sep 17 00:00:00 2001 From: Kralot Date: Fri, 23 Jan 2026 22:33:22 -0300 Subject: [PATCH] Inicia desenvolvimento de compatibilidade com Page Blocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- - Cria schema `BlockList` em `schemas.responses.blocks`; - Cria request `get` em `client.blocks`; - Modifica request `get_children` em `client.blocks` para deixar claro que o endpoint busca parentes de páginas e blocos; - Adiciona field `page_id` em `schemas.responses.pages.Parent`; - Cria pasta `blocks` em `schemas.responses` para guardar schemas de diversos tipos de objetos; - Cria schema `Block` em `schemas.responses.blocks`; - Cria schema `Toggle` em `schemas.responses.blocks`; - Cria pasta `misc` em `schemas.responses` e move schema `Parent` para lá; - Cria referência de `misc` e seus schemas em `notion.types.responses`; - Move pasta `properties` de `schemas.pages` para `schemas`; - Cria referência de `blocks` e seus schemas em `notion.types.responses`; - Cria referência de `properties` e seus schemas em `notion.types.responses`; - Remove pasta `.examples` de `orm.repositories.pages`; --- --- notion/client/blocks.py | 19 +++++++++++--- .../pages/.examples/CreatePage.py | 8 ------ .../repositories/pages/.examples/GetPage.py | 22 ---------------- .../pages/.examples/GetPageProperty.py | 21 --------------- .../repositories/pages/.examples/__init__.py | 0 notion/schemas/orm/properties/RichText.py | 6 ++--- notion/schemas/responses/blocks/Block.py | 26 +++++++++++++++++++ notion/schemas/responses/blocks/BlockList.py | 12 +++++++++ notion/schemas/responses/blocks/Toggle.py | 8 ++++++ notion/schemas/responses/blocks/__init__.py | 11 ++++++++ .../responses/{pages => misc}/Parent.py | 5 ++-- notion/schemas/responses/misc/__init__.py | 7 +++++ notion/schemas/responses/pages/Page.py | 2 +- notion/schemas/responses/pages/__init__.py | 6 ++--- .../{pages => }/properties/RichText.py | 4 +-- .../{pages => }/properties/__init__.py | 0 notion/types/responses/blocks/__init__.py | 3 +++ notion/types/responses/misc/__init__.py | 1 + notion/types/responses/pages/__init__.py | 3 +-- notion/types/responses/properties/__init__.py | 1 + 20 files changed, 97 insertions(+), 68 deletions(-) delete mode 100755 notion/orm/repositories/pages/.examples/CreatePage.py delete mode 100755 notion/orm/repositories/pages/.examples/GetPage.py delete mode 100755 notion/orm/repositories/pages/.examples/GetPageProperty.py delete mode 100755 notion/orm/repositories/pages/.examples/__init__.py create mode 100755 notion/schemas/responses/blocks/Block.py create mode 100755 notion/schemas/responses/blocks/BlockList.py create mode 100755 notion/schemas/responses/blocks/Toggle.py create mode 100755 notion/schemas/responses/blocks/__init__.py rename notion/schemas/responses/{pages => misc}/Parent.py (64%) create mode 100755 notion/schemas/responses/misc/__init__.py rename notion/schemas/responses/{pages => }/properties/RichText.py (79%) rename notion/schemas/responses/{pages => }/properties/__init__.py (100%) create mode 100755 notion/types/responses/blocks/__init__.py create mode 100755 notion/types/responses/misc/__init__.py create mode 100755 notion/types/responses/properties/__init__.py diff --git a/notion/client/blocks.py b/notion/client/blocks.py index ab856e1..ad9abb5 100755 --- a/notion/client/blocks.py +++ b/notion/client/blocks.py @@ -8,14 +8,27 @@ class Blocks: def __init__(self, headers : Dict[str, str]): self._headers = headers - async def get_children(self, page_id : str): + async def get(self, block_id : str): - "Busca pelos blocos de uma página" + "Busca detalhes de um bloco" async with httpx.AsyncClient(timeout=httpx.Timeout(30.0)) as client: response = await client.get( - f'https://api.notion.com/v1/blocks/{page_id}/children', + f'https://api.notion.com/v1/blocks/{block_id}', + headers = self._headers + ) + + return response.json() + + async def get_children(self, block_id : str): + + "Busca pelos blocos de um bloco ou página" + + async with httpx.AsyncClient(timeout=httpx.Timeout(30.0)) as client: + + response = await client.get( + f'https://api.notion.com/v1/blocks/{block_id}/children', headers = self._headers ) diff --git a/notion/orm/repositories/pages/.examples/CreatePage.py b/notion/orm/repositories/pages/.examples/CreatePage.py deleted file mode 100755 index e21bc31..0000000 --- a/notion/orm/repositories/pages/.examples/CreatePage.py +++ /dev/null @@ -1,8 +0,0 @@ -# async def main(): -# instance = NotionOrm.repo.pages() -# create = await instance.CreatePage()\ -# .set_parent("page_id", "2a564c9be67881a185c1c5d9133b9b1c")\ -# .set_title("Name", "Teste abc")\ -# .set_children("heading_1", "Teste")\ -# .call() -# return create \ No newline at end of file diff --git a/notion/orm/repositories/pages/.examples/GetPage.py b/notion/orm/repositories/pages/.examples/GetPage.py deleted file mode 100755 index ca91064..0000000 --- a/notion/orm/repositories/pages/.examples/GetPage.py +++ /dev/null @@ -1,22 +0,0 @@ -import sys, os, asyncio -sys.path.append( - os.path.abspath( - os.path.join( - os.path.dirname(__file__), '..', '..', '..', '..', '..', '..', '..' - ) - ) -) -from src.utils.pprint import pprint -from src.integrations.notion.orm.repositories.pages.GetPage import GetPage - -async def main(): - instance = GetPage() - search = await instance\ - .set_database(name="accounts")\ - .set_pageid("0db2806f-b365-4327-919d-afbd1943f2ad")\ - .select("Name") - #.call(True) - return search - -test = await main() -pprint(test) diff --git a/notion/orm/repositories/pages/.examples/GetPageProperty.py b/notion/orm/repositories/pages/.examples/GetPageProperty.py deleted file mode 100755 index 1a69e5d..0000000 --- a/notion/orm/repositories/pages/.examples/GetPageProperty.py +++ /dev/null @@ -1,21 +0,0 @@ -import sys, os, asyncio -sys.path.append( - os.path.abspath( - os.path.join( - os.path.dirname(__file__), '..', '..', '..', '..', '..', '..', '..' - ) - ) -) -from src.utils.pprint import pprint -from src.integrations.notion.orm.repositories.pages.GetPageProperty import GetPageProperty - -async def main(): - instance = GetPageProperty() - search = await instance\ - .set_pageid("0db2806f-b365-4327-919d-afbd1943f2ad")\ - .set_propname("Movements")\ - .call() - return search - -test = await main() -pprint(test) diff --git a/notion/orm/repositories/pages/.examples/__init__.py b/notion/orm/repositories/pages/.examples/__init__.py deleted file mode 100755 index e69de29..0000000 diff --git a/notion/schemas/orm/properties/RichText.py b/notion/schemas/orm/properties/RichText.py index 243de95..e743ae6 100755 --- a/notion/schemas/orm/properties/RichText.py +++ b/notion/schemas/orm/properties/RichText.py @@ -1,9 +1,9 @@ from ....schemas.dto import BaseModelSdk from pydantic import ConfigDict -from typing import Dict, Any, List, Optional -from ...responses.pages.properties.RichText import RichText as _RichText +from typing import List, Optional +from ...responses.properties.RichText import RichText as _RichText class RichText(BaseModelSdk): - model_config = ConfigDict(title="Notion_Orm_Common_RichText") + model_config = ConfigDict(title = "Notion_Orm_Common_RichText") text: Optional[str] detailed: List[_RichText] diff --git a/notion/schemas/responses/blocks/Block.py b/notion/schemas/responses/blocks/Block.py new file mode 100755 index 0000000..c360981 --- /dev/null +++ b/notion/schemas/responses/blocks/Block.py @@ -0,0 +1,26 @@ +from ...dto import BaseModelSdk +from pydantic import ConfigDict +from typing import Any, Union, Literal +from datetime import datetime +from ..users.User import User as _User +from ..misc.Parent import Parent as _Parent +from .Toggle import Toggle as _Toggle + +class Block(BaseModelSdk): + model_config = ConfigDict(title = "Notion_Responses_Blocks_List") + object: str + id: str + parent: _Parent + created_time: datetime + last_edited_time: datetime + created_by: _User + last_edited_by: _User + has_children: bool + archived: bool + in_trash: bool + type: Literal[ + "toggle" + ] + block : Union[Any, + _Toggle + ] diff --git a/notion/schemas/responses/blocks/BlockList.py b/notion/schemas/responses/blocks/BlockList.py new file mode 100755 index 0000000..ef137c2 --- /dev/null +++ b/notion/schemas/responses/blocks/BlockList.py @@ -0,0 +1,12 @@ +from ...dto import BaseModelSdk +from typing import Optional, List, Any, Union +from pydantic import ConfigDict, Field +from .Block import Block as _Block + +class BlockList(BaseModelSdk): + model_config = ConfigDict(title = "Notion_Responses_Blocks_BlockList") + results: List[Union[_Block, Any]] + next_cursor: Optional[str] = None + has_more: bool + type: str = "block" + block: dict diff --git a/notion/schemas/responses/blocks/Toggle.py b/notion/schemas/responses/blocks/Toggle.py new file mode 100755 index 0000000..dbece4c --- /dev/null +++ b/notion/schemas/responses/blocks/Toggle.py @@ -0,0 +1,8 @@ +from ...dto import BaseModelSdk +from pydantic import ConfigDict +from ..properties.RichText import RichText as _RichText + +class Toggle(BaseModelSdk): + model_config = ConfigDict(title = "Notion_Responses_Blocks_Toggle") + rich_text : _RichText + color : str diff --git a/notion/schemas/responses/blocks/__init__.py b/notion/schemas/responses/blocks/__init__.py new file mode 100755 index 0000000..10a4359 --- /dev/null +++ b/notion/schemas/responses/blocks/__init__.py @@ -0,0 +1,11 @@ +from .Block import Block as _Block +from .BlockList import BlockList as _BlockList +from .Toggle import Toggle as _Toggle + +class Schemas: + + Block = _Block + BlockList = _BlockList + Toggle = _Toggle + +__all__ = ["Schemas"] \ No newline at end of file diff --git a/notion/schemas/responses/pages/Parent.py b/notion/schemas/responses/misc/Parent.py similarity index 64% rename from notion/schemas/responses/pages/Parent.py rename to notion/schemas/responses/misc/Parent.py index 2f6ef2b..51f67f0 100755 --- a/notion/schemas/responses/pages/Parent.py +++ b/notion/schemas/responses/misc/Parent.py @@ -1,9 +1,10 @@ -from ....schemas.dto import BaseModelSdk +from ...dto import BaseModelSdk from pydantic import ConfigDict from typing import Optional, Literal class Parent(BaseModelSdk): - model_config = ConfigDict(title="Notion_Responses_Pages_Parent") + model_config = ConfigDict(title="Notion_Responses_Misc_Parent") type: Literal ["page_id", "data_source_id", "database_id"] data_source_id: Optional[str] = None database_id: Optional[str] = None + page_id: Optional[str] = None diff --git a/notion/schemas/responses/misc/__init__.py b/notion/schemas/responses/misc/__init__.py new file mode 100755 index 0000000..7a9d1e5 --- /dev/null +++ b/notion/schemas/responses/misc/__init__.py @@ -0,0 +1,7 @@ +from .Parent import Parent as _Parent + +class Schemas: + + Parent = _Parent + +__all__ = ["Schemas"] \ No newline at end of file diff --git a/notion/schemas/responses/pages/Page.py b/notion/schemas/responses/pages/Page.py index 44322c4..df897ce 100755 --- a/notion/schemas/responses/pages/Page.py +++ b/notion/schemas/responses/pages/Page.py @@ -4,7 +4,7 @@ from typing import Optional, Any, Dict, Generic, TypeVar, Union from datetime import datetime from ....orm.mapping.database import NotionDatabase as _NotionDatabase from ..users.User import User as _User -from .Parent import Parent as _Parent +from ..misc.Parent import Parent as _Parent TDB = TypeVar('TDB', bound = _NotionDatabase) diff --git a/notion/schemas/responses/pages/__init__.py b/notion/schemas/responses/pages/__init__.py index b2278f6..183a264 100755 --- a/notion/schemas/responses/pages/__init__.py +++ b/notion/schemas/responses/pages/__init__.py @@ -1,9 +1,7 @@ -from .Page import Page as _Page -from .Parent import Parent as _Parent +from .Page import Page as _Page class Schemas: - Page = _Page - Parent = _Parent + Page = _Page __all__ = ["Schemas"] \ No newline at end of file diff --git a/notion/schemas/responses/pages/properties/RichText.py b/notion/schemas/responses/properties/RichText.py similarity index 79% rename from notion/schemas/responses/pages/properties/RichText.py rename to notion/schemas/responses/properties/RichText.py index 568bdb2..b100516 100755 --- a/notion/schemas/responses/pages/properties/RichText.py +++ b/notion/schemas/responses/properties/RichText.py @@ -1,9 +1,9 @@ -from .....schemas.dto import BaseModelSdk +from ....schemas.dto import BaseModelSdk from pydantic import ConfigDict from typing import Dict, Any, Optional class RichText(BaseModelSdk): - model_config = ConfigDict(title="Notion_Responses_Pages_Properties_RichText") + model_config = ConfigDict(title="Notion_Responses_Properties_RichText") type: str text: 'Text' annotations: 'Annotations' diff --git a/notion/schemas/responses/pages/properties/__init__.py b/notion/schemas/responses/properties/__init__.py similarity index 100% rename from notion/schemas/responses/pages/properties/__init__.py rename to notion/schemas/responses/properties/__init__.py diff --git a/notion/types/responses/blocks/__init__.py b/notion/types/responses/blocks/__init__.py new file mode 100755 index 0000000..2018544 --- /dev/null +++ b/notion/types/responses/blocks/__init__.py @@ -0,0 +1,3 @@ +from ....schemas.responses.blocks.Block import Block +from ....schemas.responses.blocks.BlockList import BlockList +from ....schemas.responses.blocks.Toggle import Toggle \ No newline at end of file diff --git a/notion/types/responses/misc/__init__.py b/notion/types/responses/misc/__init__.py new file mode 100755 index 0000000..f57af6a --- /dev/null +++ b/notion/types/responses/misc/__init__.py @@ -0,0 +1 @@ +from ....schemas.responses.misc.Parent import Parent \ No newline at end of file diff --git a/notion/types/responses/pages/__init__.py b/notion/types/responses/pages/__init__.py index 1cfb79b..53b2849 100755 --- a/notion/types/responses/pages/__init__.py +++ b/notion/types/responses/pages/__init__.py @@ -1,2 +1 @@ -from ....schemas.responses.pages.Page import Page -from ....schemas.responses.pages.Parent import Parent \ No newline at end of file +from ....schemas.responses.pages.Page import Page \ No newline at end of file diff --git a/notion/types/responses/properties/__init__.py b/notion/types/responses/properties/__init__.py new file mode 100755 index 0000000..35f58e1 --- /dev/null +++ b/notion/types/responses/properties/__init__.py @@ -0,0 +1 @@ +from ....schemas.responses.properties.RichText import RichText \ No newline at end of file