summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorSébastien Mottet (oms) <oms@odoo.com>2020-04-27 11:53:01 +0000
committerThibault Delavallée <tde@odoo.com>2020-05-19 10:14:39 +0000
commit179c5fcaba9432a6f1f8af984ce3d7226a385dc1 (patch)
treedaf713e3760fdfaf656b49f0280cf550e394c61f /addons
parent28734ac268c7ef24c78e32223b9a4398e96cdb93 (diff)
[FIX] (website_)event: fix 'sold out' display condition on frontend
One condition among other to determine if SOLD OUT should be displayed for a ticket is start_sale_date < current date. However is start_sale_date is not set a traceback is raised. Moreover timezones are not taken into account when comparing dates, which may create issues. A tool method 'is_launched' has been added to overcome this problem. It works like the already existing field 'is_expired'. Its value is computed based on start_sale_date and event_id.date_tz. This will be changed into a not stored computed field in master. Task ID 2244487 PR #51503 X-original-commit: 9f81e126cdb1ce79ef26077a708cad8a7614031f
Diffstat (limited to 'addons')
-rw-r--r--addons/event/models/event_ticket.py18
-rw-r--r--addons/website_event/views/event_templates.xml2
2 files changed, 13 insertions, 7 deletions
diff --git a/addons/event/models/event_ticket.py b/addons/event/models/event_ticket.py
index 2d55a20aa35..3e96eb78d8c 100644
--- a/addons/event/models/event_ticket.py
+++ b/addons/event/models/event_ticket.py
@@ -82,14 +82,10 @@ class EventTicket(models.Model):
else:
ticket.is_expired = False
- @api.depends('start_sale_date', 'end_sale_date', 'event_id.date_tz', 'seats_available', 'seats_max')
+ @api.depends('is_expired', 'start_sale_date', 'event_id.date_tz', 'seats_available', 'seats_max')
def _compute_sale_available(self):
for ticket in self:
- ticket = ticket._set_tz_context()
- current_date = fields.Date.context_today(ticket)
- if (ticket.start_sale_date and ticket.start_sale_date > current_date) or \
- ticket.end_sale_date and ticket.end_sale_date < current_date or \
- ticket.seats_available <= 0 and ticket.seats_max > 0:
+ if not ticket.is_launched() or ticket.is_expired or (ticket.seats_max and ticket.seats_available <= 0):
ticket.sale_available = False
else:
ticket.sale_available = True
@@ -142,3 +138,13 @@ class EventTicket(models.Model):
def _set_tz_context(self):
self.ensure_one()
return self.with_context(tz=self.event_id.date_tz or 'UTC')
+
+ def is_launched(self):
+ # TDE FIXME: in master, make a computed field, easier to use
+ self.ensure_one()
+ if self.start_sale_date:
+ ticket = self._set_tz_context()
+ current_date = fields.Date.context_today(ticket)
+ return ticket.start_sale_date < current_date
+ else:
+ return True
diff --git a/addons/website_event/views/event_templates.xml b/addons/website_event/views/event_templates.xml
index 911b6b7bcf2..b4fc8565d82 100644
--- a/addons/website_event/views/event_templates.xml
+++ b/addons/website_event/views/event_templates.xml
@@ -599,7 +599,7 @@
</t>
</select>
<div t-else="" class="text-danger">
- <span t-if="not ticket.sale_available and not ticket.is_expired and ticket.start_sale_date &lt; datetime.date.today()" >Sold Out</span>
+ <span t-if="not ticket.sale_available and not ticket.is_expired and ticket.is_launched()" >Sold Out</span>
<span t-if="ticket.is_expired">Expired</span>
</div>
</div>