Files
odoo_source/addons/website_event_track_live/models/event_track.py
T
Aurélien Warnon 24a0354d49 [IMP] website_event_track_live: hide "YouTube replay" if no YouTube URL configured
This commit slightly adapts the invisible attrs domain of the is_youtube_replay
field to account for empty OR False youtube_video_url values.

So that the youtube replay field is always hidden if no youtube URL is
configured.

Side note: The web client should probably consider empty as a Falsy value so
that we can write simpler attrs domain based on empty/False Char values.

We also took this opportunity to tweak some youtube field labels.

Task-2643205

closes odoo/odoo#76303

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2021-09-14 07:10:49 +00:00

43 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import re
from odoo import api, fields, models
class Track(models.Model):
_inherit = 'event.track'
youtube_video_url = fields.Char('YouTube Video Link',
help="Configure this URL so that event attendees can see your Track in video!")
youtube_video_id = fields.Char('YouTube video ID', compute='_compute_youtube_video_id',
help="Extracted from the video URL and used to infer various links (embed/thumbnail/...)")
is_youtube_replay = fields.Boolean('Is YouTube Replay',
help="Check this option if the video is already available on YouTube to avoid showing 'Direct' options (Chat, ...)")
is_youtube_chat_available = fields.Boolean('Is Chat Available', compute='_compute_is_youtube_chat_available')
@api.depends('youtube_video_url')
def _compute_youtube_video_id(self):
for track in self:
if track.youtube_video_url:
regex = r'^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*'
match = re.match(regex, track.youtube_video_url)
if match and len(match.groups()) == 2 and len(match.group(2)) == 11:
track.youtube_video_id = match.group(2)
if not track.youtube_video_id:
track.youtube_video_id = False
@api.depends('youtube_video_id', 'is_youtube_replay', 'date_end', 'is_track_done')
def _compute_website_image_url(self):
youtube_thumbnail_tracks = self.filtered(lambda track: not track.website_image and track.youtube_video_id)
super(Track, self - youtube_thumbnail_tracks)._compute_website_image_url()
for track in youtube_thumbnail_tracks:
track.website_image_url = f'https://img.youtube.com/vi/{track.youtube_video_id}/maxresdefault.jpg'
@api.depends('youtube_video_url', 'is_youtube_replay', 'date', 'date_end', 'is_track_upcoming', 'is_track_live')
def _compute_is_youtube_chat_available(self):
for track in self:
track.is_youtube_chat_available = track.youtube_video_url and not track.is_youtube_replay and (track.is_track_soon or track.is_track_live)