summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-08-20 07:36:41 +0000
committerThibault Delavallée <tde@odoo.com>2020-08-20 14:03:07 +0000
commit4d411615fa8f8434f881c82e3f92eb94ae9b66b5 (patch)
treefdad9cd075c04b9a6d8a730fa26491cd1e782101 /addons
parent534fba1d332e210353a06f96b8c6726a0148a50f (diff)
[IMP] website_event_track_session: display not yet scheduled tracks
PURPOSE Allow users to display tracks that have not been scheduled yet. In tracks list they should be displayed to allow generating much hype about those. SPECIFICATIONS: NOT SCHEDULED TRACKS Some customers announce their tracks before giving them a date. As tracks pages are based on date, they are currently not displayed. Add an 'Coming Soon' section in tracks list with tracks not having a date. This is displayed below day-based tracks display. Now that we support displaying tracks without date, various fixes are also applied to various places where date is used. UPDATE * website_event_track_session.event_track_content * website_event_track_session.tracks_display_list * website_event_track_live.tracks_display_list LINKS Task ID-2323246 PR odoo/odoo#56180 X-original-commit: ab70df2670ed67929ee53af00a5dbc7d0b246589
Diffstat (limited to 'addons')
-rw-r--r--addons/test_event_full/static/src/js/tours/wevent_register_tour.js4
-rw-r--r--addons/test_event_full/tests/common.py10
-rw-r--r--addons/website_event_track/views/event_track_templates.xml11
-rw-r--r--addons/website_event_track_live/views/event_track_templates_list.xml4
-rw-r--r--addons/website_event_track_session/controllers/session.py20
-rw-r--r--addons/website_event_track_session/views/event_track_templates_list.xml20
-rw-r--r--addons/website_event_track_session/views/event_track_templates_page.xml22
7 files changed, 63 insertions, 28 deletions
diff --git a/addons/test_event_full/static/src/js/tours/wevent_register_tour.js b/addons/test_event_full/static/src/js/tours/wevent_register_tour.js
index 7d24c0ef0c6..1b12c66d920 100644
--- a/addons/test_event_full/static/src/js/tours/wevent_register_tour.js
+++ b/addons/test_event_full/static/src/js/tours/wevent_register_tour.js
@@ -150,7 +150,9 @@ tour.register('wevent_register', {
browseTalksSteps,
discoverTalkSteps('What This Event Is All About', true, true),
browseTalksSteps,
- discoverTalkSteps('Live Testimonial', false, false, true),
+ discoverTalkSteps('Live Testimonial', false, false, false),
+ browseTalksSteps,
+ discoverTalkSteps('Our Last Day Together !', true, false, true),
browseMeetSteps,
discoverRoomSteps('Best wood for furniture'),
registerSteps,
diff --git a/addons/test_event_full/tests/common.py b/addons/test_event_full/tests/common.py
index ab729cb9fa7..1e06d1be41c 100644
--- a/addons/test_event_full/tests/common.py
+++ b/addons/test_event_full/tests/common.py
@@ -250,6 +250,16 @@ class TestWEventCommon(HttpCaseWithUserDemo, HttpCaseWithUserPortal, EventDtPatc
'user_id': self.user_admin.id,
'partner_id': self.event_speaker.id,
})
+ self.track_2 = self.env['event.track'].create({
+ 'name': 'Our Last Day Together !',
+ 'event_id': self.event.id,
+ 'stage_id': self.env.ref('website_event_track.event_track_stage3').id,
+ 'date': self.reference_now + timedelta(days=1),
+ 'duration': 0.75,
+ 'is_published': True,
+ 'user_id': self.user_admin.id,
+ 'partner_id': self.event_speaker.id,
+ })
# ------------------------------------------------------------
# MEETING ROOMS
diff --git a/addons/website_event_track/views/event_track_templates.xml b/addons/website_event_track/views/event_track_templates.xml
index 0430f6670e7..17ed8bbb0bc 100644
--- a/addons/website_event_track/views/event_track_templates.xml
+++ b/addons/website_event_track/views/event_track_templates.xml
@@ -239,9 +239,14 @@
<h4 class="card-header">Practical Info</h4>
<div class="card-body">
<b>Date</b><br/>
- <span t-field="track.date" t-options='{"hide_seconds":"True", "format": "short"}'/>
- <t t-if="event.date_tz">
- (<span t-field="track.date" t-options='{"format": "zzz"}'/>)
+ <t t-if="track.date">
+ <span t-field="track.date" t-options='{"hide_seconds":"True", "format": "short"}'/>
+ <t t-if="event.date_tz">
+ (<span t-field="track.date" t-options='{"format": "zzz"}'/>)
+ </t>
+ </t>
+ <t t-else="">
+ <span>To be scheduled</span>
</t>
<br/>
<b>Duration</b><br/>
diff --git a/addons/website_event_track_live/views/event_track_templates_list.xml b/addons/website_event_track_live/views/event_track_templates_list.xml
index a48f07df85b..9f6236b6bfb 100644
--- a/addons/website_event_track_live/views/event_track_templates_list.xml
+++ b/addons/website_event_track_live/views/event_track_templates_list.xml
@@ -10,11 +10,11 @@
</xpath>
<!-- ADD YOUTUBE ICON -->
<xpath expr="//div[hasclass('o_wesession_list_item')]/div[hasclass('col-md-7')]//a/span[@t-field='track.name']" position="before">
- <i t-if="track.youtube_video_url and (track.is_track_soon or track.is_track_live or track.is_youtube_replay)"
+ <i t-if="track.date and track.youtube_video_url and (track.is_track_soon or track.is_track_live or track.is_youtube_replay)"
class="fa fa-youtube-play text-danger mr-1"/>
</xpath>
<xpath expr="//div[hasclass('o_wesession_list_item')]/div[hasclass('col-md-7')]//t/span[@t-field='track.name']" position="before">
- <i t-if="track.youtube_video_url and (track.is_track_soon or track.is_track_live or track.is_youtube_replay)"
+ <i t-if="track.date and track.youtube_video_url and (track.is_track_soon or track.is_track_live or track.is_youtube_replay)"
class="fa fa-youtube-play text-danger mr-1"/>
</xpath>
</template>
diff --git a/addons/website_event_track_session/controllers/session.py b/addons/website_event_track_session/controllers/session.py
index 8ac27f82eab..65d0106ced4 100644
--- a/addons/website_event_track_session/controllers/session.py
+++ b/addons/website_event_track_session/controllers/session.py
@@ -5,7 +5,7 @@ from ast import literal_eval
from pytz import timezone, utc
from werkzeug.exceptions import Forbidden, NotFound
-from odoo import exceptions, fields, http
+from odoo import fields, http, _
from odoo.addons.website_event_track_online.controllers.event_track import EventTrackOnlineController
from odoo.http import request
from odoo.osv import expression
@@ -20,7 +20,6 @@ class WebsiteEventSessionController(EventTrackOnlineController):
but not reachable for teasing purpose. """
search_domain_base = [
('event_id', '=', event.id),
- ('date', '!=', False)
]
if not request.env.user.has_group('event.group_event_user'):
search_domain_base = expression.AND([
@@ -101,18 +100,23 @@ class WebsiteEventSessionController(EventTrackOnlineController):
if searches.get('search_wishlist'):
tracks_sudo = tracks_sudo.filtered(lambda track: track.is_reminder_on)
- # organize categories for display: live, soon and day-based
+ # organize categories for display: announced, live, soon and day-based
+ tracks_announced = tracks_sudo.filtered(lambda track: not track.date)
+ tracks_wdate = tracks_sudo - tracks_announced
date_begin_tz_all = list(set(
dt.date()
- for dt in self._get_dt_in_event_tz(tracks_sudo.mapped('date'), event)
+ for dt in self._get_dt_in_event_tz(tracks_wdate.mapped('date'), event)
))
date_begin_tz_all.sort()
- tracks_sudo_live = tracks_sudo.filtered(lambda track: track.is_published and track.is_track_live)
- tracks_sudo_soon = tracks_sudo.filtered(lambda track: track.is_published and not track.is_track_live and track.is_track_soon)
+ tracks_sudo_live = tracks_wdate.filtered(lambda track: track.is_published and track.is_track_live)
+ tracks_sudo_soon = tracks_wdate.filtered(lambda track: track.is_published and not track.is_track_live and track.is_track_soon)
tracks_by_day = []
for display_date in date_begin_tz_all:
- matching_track = tracks_sudo.filtered(lambda track: self._get_dt_in_event_tz([track.date], event)[0].date() == display_date)
- tracks_by_day.append((display_date, matching_track))
+ matching_tracks = tracks_wdate.filtered(lambda track: self._get_dt_in_event_tz([track.date], event)[0].date() == display_date)
+ tracks_by_day.append({'date': display_date, 'name': display_date, 'tracks': matching_tracks})
+ if tracks_announced:
+ tracks_announced = tracks_announced.sorted('wishlisted_by_default', reverse=True)
+ tracks_by_day.append({'date': False, 'name': _('Coming soon'), 'tracks': tracks_announced})
# return rendering values
return {
diff --git a/addons/website_event_track_session/views/event_track_templates_list.xml b/addons/website_event_track_session/views/event_track_templates_list.xml
index 7dfe28ff509..7321fe5b970 100644
--- a/addons/website_event_track_session/views/event_track_templates_list.xml
+++ b/addons/website_event_track_session/views/event_track_templates_list.xml
@@ -168,11 +168,12 @@
<ul class="list-unstyled">
<li t-foreach="tracks_by_day" t-as="tracks_info"
class="mb-5">
- <t t-set="tracks_date" t-value="tracks_info[0]"/>
- <t t-set="tracks" t-value="tracks_info[1]"/>
+ <t t-set="tracks_date" t-value="tracks_info['date']"/>
+ <t t-set="tracks_header_name" t-value="tracks_info['name']"/>
+ <t t-set="tracks" t-value="tracks_info['tracks']"/>
<!-- DAY HEADER -->
<div class="o_we_track_day_header w-100">
- <div class="d-flex">
+ <div t-if="tracks_date" class="d-flex">
<span class="h1 m-0 font-weight-bold" t-esc="tracks_date"
t-options="{'widget': 'date', 'format': 'EEEE dd'}"/>
<div class="d-flex flex-column ml-2">
@@ -182,6 +183,10 @@
t-options="{'widget': 'date', 'format': 'YYYY'}"/>
</div>
</div>
+ <div t-elif="tracks_header_name">
+ <span class="h1 m-0 font-weight-bold"
+ t-esc="tracks_header_name"/>
+ </div>
<hr class="mt-2 pb-1 mb-1"/>
</div>
<!-- DAY TRACKS LIST -->
@@ -201,14 +206,15 @@
</span>
</span>
<div class="text-muted">
- <span class="text-muted" t-esc="track.partner_name"/> &amp;bull;
+ <span class="text-muted" t-esc="track.partner_name"/>
+ <t t-if="track.partner_name"> &amp;bull; </t>
<span t-esc="track.duration"
t-options="{'widget': 'duration', 'digital': False, 'format': 'short', 'unit': 'hour', 'round': 'minute'}"/>
</div>
</div>
<div class="col-md-5">
<div t-if="not event.is_done" class="float-right">
- <t t-if="today_tz &lt;= tracks_date">
+ <t t-if="tracks_date and today_tz &lt;= tracks_date">
<span t-if="track.is_track_live and not track.is_track_done"
class="badge badge-danger">Live</span>
<span t-elif="not track.is_track_done and track.is_track_soon">
@@ -230,6 +236,10 @@
<span class="badge badge-info">Finished</span>
</t>
</t>
+ <t t-elif="not track.date and option_track_wishlist"
+ t-call="website_event_track_online.track_widget_reminder">
+ <t t-set="reminder_small" t-value="True"/>
+ </t>
</div>
<t t-foreach="track.tag_ids" t-as="tag">
<t t-if="tag.color" t-call="website_event_track_session.track_tag_badge_link"/>
diff --git a/addons/website_event_track_session/views/event_track_templates_page.xml b/addons/website_event_track_session/views/event_track_templates_page.xml
index b2163878152..766631a98bd 100644
--- a/addons/website_event_track_session/views/event_track_templates_page.xml
+++ b/addons/website_event_track_session/views/event_track_templates_page.xml
@@ -80,16 +80,20 @@
<strong>Location:</strong> <span t-field="track.location_id"/>
<span> - </span>
</t>
- <span t-field="track.date"
- t-options='{"hide_seconds":"True", "format": "short"}'/>
- -
- <span t-field="track.date_end"
- t-options='{"hide_seconds":"True", "format": "short"}'/>
- <t t-if="event.date_tz">
- (<span t-field="track.date_end" t-options='{"format": "zzz"}'/>)
+ <t t-if="track.date">
+ <span t-field="track.date"
+ t-options='{"hide_seconds":"True", "format": "short"}'/>
+ -
+ <span t-field="track.date_end"
+ t-options='{"hide_seconds":"True", "format": "short"}'/>
+ <t t-if="event.date_tz">
+ (<span t-field="track.date_end" t-options='{"format": "zzz"}'/>)
+ </t>
+ </t>
+ <t t-if="track.duration">
+ (<span t-field="track.duration"
+ t-options='{"widget": "duration", "unit": "hour", "round": "minute"}'/>)
</t>
- (<span t-field="track.duration"
- t-options='{"widget": "duration", "unit": "hour", "round": "minute"}'/>)
</div>
<hr class="mt-2 mb-0"/>