Skip to content
Snippets Groups Projects
Commit ae45d83c authored by OndraRehounek's avatar OndraRehounek Committed by jan.bednarik
Browse files

ArticleMixin: YouTubeVideoBlock

parent 0149afb5
No related branches found
No related tags found
2 merge requests!480Release,!478Feature/youtube block
...@@ -138,77 +138,3 @@ class YouTubeVideoBlock(blocks.StructBlock): ...@@ -138,77 +138,3 @@ class YouTubeVideoBlock(blocks.StructBlock):
"Nepodařilo se získat video ID z YouTube URL", extra={"url": url} "Nepodařilo se získat video ID z YouTube URL", extra={"url": url}
) )
return "" return ""
class YouTubeVideoBlock(blocks.StructBlock):
video_url = blocks.URLBlock(
label="Odkaz na video",
required=False,
help_text="Odkaz na YouTube video bude automaticky "
"zkonvertován na ID videa a NEBUDE uložen.",
)
video_id = blocks.CharBlock(
label="ID videa (automatické pole)",
required=False,
help_text="Není třeba vyplňovat, bude automaticky " "načteno z odkazu.",
)
class Meta:
label = "YouTube video"
icon = "media"
template = "styleguide/2.3.x/blocks/video_block.html"
def clean(self, value):
errors = {}
if not value["video_url"] and not value["video_id"]:
errors["video_url"] = ErrorList(["Zadejte prosím odkaz na YouTube video."])
if value["video_url"]:
if not value["video_url"].startswith("https://youtu.be") and not value[
"video_url"
].startswith("https://www.youtube.com"):
errors["video_url"] = ErrorList(
[
'Odkaz na video musí začínat "https://www.youtube.com" '
'nebo "https://youtu.be"'
]
)
if value["video_id"]:
if not re.match("^[A-Za-z0-9_-]{11}$", value["video_id"]):
errors["video_url"] = ErrorList(
["Formát ID YouTube videa není validní"]
)
if errors:
raise StructBlockValidationError(errors)
return super().clean(value)
def get_prep_value(self, value):
value = super().get_prep_value(value)
if value["video_url"]:
value["video_id"] = self.convert_youtube_link_to_video_id(
value["video_url"]
)
value["video_url"] = ""
return value
@staticmethod
def convert_youtube_link_to_video_id(url):
reg_str = (
"((?<=(v|V)/)|(?<=youtu\.be/)|(?<=youtube\.com/watch(\?|\&)v=)"
"|(?<=embed/))([\w-]+)"
)
search_result = re.search(reg_str, url)
if search_result:
return search_result.group(0)
logger.warning(
"Nepodařilo se získat video ID z YouTube URL", extra={"url": url}
)
return ""
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment