[FIX] website_event: avoid multi tooltips on date edition

Avoid having multiple tooltips. We keep only one "t-field"
in the template. The other are replaced by a "t-out".
We also add a specific message when the datetime format is not
respected.

task-2942617

X-original-commit: a99d684507782cd0d9ff700dc7a12f7a46442403
Part-of: odoo/odoo#102545
This commit is contained in:
Jérémy Hennecart (jeh)
2022-10-07 11:13:13 +02:00
parent a918e7bf37
commit 81f13d32cb
2 changed files with 12 additions and 15 deletions
+6 -6
View File
@@ -11,13 +11,10 @@ Also, adds methods to convert values back to Odoo models.
import babel
import base64
import io
import itertools
import json
import logging
import os
import re
import hashlib
from datetime import datetime
import pytz
import requests
@@ -29,11 +26,10 @@ from werkzeug import urls
import odoo.modules
from odoo import _, api, models, fields
from odoo.exceptions import UserError
from odoo.exceptions import UserError, ValidationError
from odoo.tools import ustr, posix_to_ldml, pycompat
from odoo.tools import html_escape as escape
from odoo.tools.misc import get_lang, babel_locale_parse
from odoo.addons.base.models import ir_qweb
REMOTE_CONNECTION_TIMEOUT = 2.5
@@ -324,7 +320,11 @@ class DateTime(models.AbstractModel):
# parse from string to datetime
lg = self.env['res.lang']._lang_get(self.env.user.lang) or get_lang(self.env)
dt = datetime.strptime(value, '%s %s' % (lg.date_format, lg.time_format))
try:
datetime_format = f'{lg.date_format} {lg.time_format}'
dt = datetime.strptime(value, datetime_format)
except ValueError:
raise ValidationError(_("The datetime %s does not match the format %s", value, datetime_format))
# convert back from user's timezone to UTC
tz_name = element.attrib.get('data-oe-original-tz') or self.env.context.get('tz') or self.env.user.tz
@@ -42,27 +42,24 @@
<div class="o_wevent_sidebar_block">
<h6 class="o_wevent_sidebar_title">Date &amp; Time</h6>
<div class="d-flex">
<h5 t-field="event.date_begin" class="my-1 me-1 oe_hide_on_date_edit" t-options="{'tz_name': event.date_tz, 'date_only': 'true', 'format': 'EEEE'}"/>
<h5 class="my-1 oe_hide_on_date_edit" t-field="event.date_begin" t-options="{'tz_name': event.date_tz, 'date_only': 'true', 'format': 'long'}" itemprop="startDate" t-att-datetime="event.date_begin"/>
<h5 t-field="event.date_begin" class="my-1" t-options="{'tz_name': event.date_tz, 'format': 'EEEE MMMM dd, YYYY'}" t-att-datetime="event.date_begin"/>
</div>
<t t-if="not event.is_one_day">Start -</t>
<span t-field="event.date_begin" t-options="{'tz_name': event.date_tz, 'time_only': 'true', 'format': 'short'}"/>
<span t-out="event.date_begin" t-options="{'widget': 'datetime', 'tz_name': event.date_tz, 'time_only': 'true', 'format': 'short'}"/>
<t t-if="event.is_one_day">
<i class="fa fa-long-arrow-right mx-1"/>
<span t-field="event.date_end" t-options="{'tz_name': event.date_tz, 'time_only': 'true', 'format': 'short'}"/>
(<span t-out="event.date_tz"/>)
</t>
<t t-else="">
(<span t-out="event.date_tz"/>)
<i class="fa fa-long-arrow-down d-block text-muted mx-3 my-2" style="font-size: 1.5rem"/>
<div class="d-flex">
<h5 t-field="event.date_end" class="my-1 me-1 oe_hide_on_date_edit" t-options="{'tz_name': event.date_tz, 'date_only': 'true', 'format': 'EEEE'}"/>
<h5 class="my-1 oe_hide_on_date_edit" t-field="event.date_end" t-options="{'tz_name': event.date_tz, 'date_only': 'true', 'format': 'long'}"/>
<h5 t-field="event.date_end" class="my-1" t-options="{'tz_name': event.date_tz, 'format': 'EEEE MMMM dd, YYYY'}"/>
</div>
<t t-if="not event.is_one_day">End -</t>
<span t-field="event.date_end" t-options="{'tz_name': event.date_tz, 'time_only': 'true', 'format': 'short'}"/>
(<span t-out="event.date_tz"/>)
</t>
<span t-if="not event.is_one_day" t-out="event.date_end" t-options="{'widget': 'datetime', 'tz_name': event.date_tz, 'time_only': 'true', 'format': 'short'}"/>
<span t-else="" t-field="event.date_end" t-options="{'tz_name': event.date_tz, 'time_only': 'true', 'format': 'short'}" t-att-datetime="event.date_end"/>
(<span t-out="event.date_tz"/>)
<div class="dropdown">
<i class="fa fa-calendar me-1"/>