Initial commit
This commit is contained in:
56
env/lib/python3.10/site-packages/wagtail/embeds/rich_text/contentstate.py
vendored
Normal file
56
env/lib/python3.10/site-packages/wagtail/embeds/rich_text/contentstate.py
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
"""
|
||||
Draftail / contentstate conversion
|
||||
"""
|
||||
from draftjs_exporter.dom import DOM
|
||||
|
||||
from wagtail.admin.rich_text.converters.contentstate_models import Entity
|
||||
from wagtail.admin.rich_text.converters.html_to_contentstate import (
|
||||
AtomicBlockEntityElementHandler,
|
||||
)
|
||||
from wagtail.embeds import embeds
|
||||
from wagtail.embeds.exceptions import EmbedException
|
||||
|
||||
|
||||
def media_embed_entity(props):
|
||||
"""
|
||||
Helper to construct elements of the form
|
||||
<embed embedtype="media" url="https://www.youtube.com/watch?v=y8Kyi0WNg40"/>
|
||||
when converting from contentstate data
|
||||
"""
|
||||
return DOM.create_element(
|
||||
"embed",
|
||||
{
|
||||
"embedtype": "media",
|
||||
"url": props.get("url"),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
class MediaEmbedElementHandler(AtomicBlockEntityElementHandler):
|
||||
"""
|
||||
Rule for building an embed entity when converting from database representation
|
||||
to contentstate
|
||||
"""
|
||||
|
||||
def create_entity(self, name, attrs, state, contentstate):
|
||||
try:
|
||||
embed_obj = embeds.get_embed(attrs["url"])
|
||||
embed_data = {
|
||||
"embedType": embed_obj.type,
|
||||
"url": embed_obj.url,
|
||||
"providerName": embed_obj.provider_name,
|
||||
"authorName": embed_obj.author_name,
|
||||
"thumbnail": embed_obj.thumbnail_url,
|
||||
"title": embed_obj.title,
|
||||
}
|
||||
except EmbedException:
|
||||
embed_data = {"url": attrs["url"]}
|
||||
return Entity("EMBED", "IMMUTABLE", embed_data)
|
||||
|
||||
|
||||
ContentstateMediaConversionRule = {
|
||||
"from_database_format": {
|
||||
'embed[embedtype="media"]': MediaEmbedElementHandler(),
|
||||
},
|
||||
"to_database_format": {"entity_decorators": {"EMBED": media_embed_entity}},
|
||||
}
|
||||
Reference in New Issue
Block a user