Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
)
response.raise_for_status()
self.display_source = data["url"]
self.source = data["url"]
self.file_id = data["url"][len(S3_URL_PREFIX) :].split("/")[0]
class VideoBlock(EmbedOrUploadBlock):
_type = "video"
class FileBlock(EmbedOrUploadBlock):
size = property_map("size")
title = property_map("title")
_type = "file"
class AudioBlock(EmbedOrUploadBlock):
_type = "audio"
class PDFBlock(EmbedOrUploadBlock):
_type = "pdf"
class ImageBlock(EmbedOrUploadBlock):
"""
assert new_type in BLOCK_TYPES and issubclass(
BLOCK_TYPES[new_type], BasicBlock
), "Target type must correspond to a subclass of BasicBlock"
self.type = new_type
return self._client.get_block(self.id)
def _str_fields(self):
return super()._str_fields() + ["title"]
class TodoBlock(BasicBlock):
_type = "to_do"
checked = property_map(
"checked",
python_to_api=lambda x: "Yes" if x else "No",
api_to_python=lambda x: x == "Yes",
)
def _str_fields(self):
return super()._str_fields() + ["checked"]
class CodeBlock(BasicBlock):
_type = "code"
language = property_map("language")
wrap = field_map("format.code_wrap")
caption = property_map("caption")
def _str_fields(self):
return super()._str_fields() + ["caption"]
class EmbedBlock(MediaBlock):
_type = "embed"
display_source = field_map(
"format.display_source",
api_to_python=add_signed_prefix_as_needed,
python_to_api=remove_signed_prefix_as_needed,
)
source = property_map(
"source",
api_to_python=add_signed_prefix_as_needed,
python_to_api=remove_signed_prefix_as_needed,
)
height = field_map("format.block_height")
full_width = field_map("format.block_full_width")
page_width = field_map("format.block_page_width")
width = field_map("format.block_width")
def set_source_url(self, url):
self.source = remove_signed_prefix_as_needed(url)
self.display_source = get_embed_link(self.source)
def _str_fields(self):
return super()._str_fields() + ["source"]
checked = property_map(
"checked",
python_to_api=lambda x: "Yes" if x else "No",
api_to_python=lambda x: x == "Yes",
)
def _str_fields(self):
return super()._str_fields() + ["checked"]
class CodeBlock(BasicBlock):
_type = "code"
language = property_map("language")
wrap = field_map("format.code_wrap")
class FactoryBlock(BasicBlock):
"""
Also known as a "Template Button". The title is the button text, and the children are the templates to clone.
"""
_type = "factory"
class HeaderBlock(BasicBlock):
_type = "header"
_type = "pdf"
class ImageBlock(EmbedOrUploadBlock):
_type = "image"
class BookmarkBlock(EmbedBlock):
_type = "bookmark"
bookmark_cover = field_map("format.bookmark_cover")
bookmark_icon = field_map("format.bookmark_icon")
description = property_map("description")
link = property_map("link")
title = property_map("title")
def set_new_link(self, url):
self._client.post("setBookmarkMetadata", {"blockId": self.id, "url": url})
self.refresh()
class LinkToCollectionBlock(MediaBlock):
_type = "link_to_collection"
# TODO: add custom fields
class BreadcrumbBlock(MediaBlock):
class ImageBlock(EmbedOrUploadBlock):
_type = "image"
class BookmarkBlock(EmbedBlock):
_type = "bookmark"
bookmark_cover = field_map("format.bookmark_cover")
bookmark_icon = field_map("format.bookmark_icon")
description = property_map("description")
link = property_map("link")
title = property_map("title")
def set_new_link(self, url):
self._client.post("setBookmarkMetadata", {"blockId": self.id, "url": url})
self.refresh()
class LinkToCollectionBlock(MediaBlock):
_type = "link_to_collection"
# TODO: add custom fields
class BreadcrumbBlock(MediaBlock):
_type = "breadcrumb"
class EquationBlock(BasicBlock):
latex = field_map(
["properties", "title"],
python_to_api=lambda x: [[x]],
api_to_python=lambda x: x[0][0],
)
_type = "equation"
class MediaBlock(Block):
caption = property_map("caption")
def _str_fields(self):
return super()._str_fields() + ["caption"]
class EmbedBlock(MediaBlock):
_type = "embed"
display_source = field_map(
"format.display_source",
api_to_python=add_signed_prefix_as_needed,
python_to_api=remove_signed_prefix_as_needed,
)
source = property_map(
"source",
_type = "pdf"
class ImageBlock(EmbedOrUploadBlock):
_type = "image"
class BookmarkBlock(EmbedBlock):
_type = "bookmark"
bookmark_cover = field_map("format.bookmark_cover")
bookmark_icon = field_map("format.bookmark_icon")
description = property_map("description")
link = property_map("link")
title = property_map("title")
def set_new_link(self, url):
self._client.post("setBookmarkMetadata", {"blockId": self.id, "url": url})
self.refresh()
class LinkToCollectionBlock(MediaBlock):
_type = "link_to_collection"
# TODO: add custom fields
class BreadcrumbBlock(MediaBlock):
_type = "breadcrumb"