summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
Diffstat (limited to 'addons')
-rw-r--r--addons/event/models/event.py2
-rw-r--r--addons/event_sale/models/event.py10
-rw-r--r--addons/event_sale/tests/test_event_sale.py34
-rw-r--r--addons/website_event/views/event_templates.xml2
4 files changed, 42 insertions, 6 deletions
diff --git a/addons/event/models/event.py b/addons/event/models/event.py
index 1c1f24a099b..7f2f6b0d325 100644
--- a/addons/event/models/event.py
+++ b/addons/event/models/event.py
@@ -340,7 +340,7 @@ class EventEvent(models.Model):
@api.multi
def _is_event_registrable(self):
- return True
+ return self.date_end > fields.Datetime.now()
@api.multi
def _get_ics_file(self):
diff --git a/addons/event_sale/models/event.py b/addons/event_sale/models/event.py
index 3d3e9095a43..052a0594ab9 100644
--- a/addons/event_sale/models/event.py
+++ b/addons/event_sale/models/event.py
@@ -56,10 +56,12 @@ class Event(models.Model):
@api.multi
def _is_event_registrable(self):
- self.ensure_one()
- if not self.event_ticket_ids:
- return True
- return all(self.event_ticket_ids.with_context(active_test=False).mapped(lambda t: t.product_id.active))
+ if super(Event, self)._is_event_registrable():
+ self.ensure_one()
+ return all(self.event_ticket_ids.with_context(active_test=False).mapped(lambda t: t.product_id.active))
+ else:
+ return False
+
class EventTicket(models.Model):
_name = 'event.event.ticket'
diff --git a/addons/event_sale/tests/test_event_sale.py b/addons/event_sale/tests/test_event_sale.py
index 8f17f322780..92ca4246a04 100644
--- a/addons/event_sale/tests/test_event_sale.py
+++ b/addons/event_sale/tests/test_event_sale.py
@@ -1,6 +1,9 @@
# -*- coding: utf-8 -*-
+import datetime
from odoo.tests import common
+from odoo.fields import Datetime
+from unittest.mock import patch
class EventSaleTest(common.TransactionCase):
@@ -66,3 +69,34 @@ class EventSaleTest(common.TransactionCase):
# I check if a registration is created
registrations = self.EventRegistration.search([('origin', '=', self.sale_order.name)])
self.assertTrue(registrations, "The registration is not created.")
+
+ def test_event_is_registrable(self):
+ self.patcher = patch('odoo.addons.event.models.event.fields.Datetime', wraps=Datetime)
+ self.mock_datetime = self.patcher.start()
+
+ test_event = self.env['event.event'].create({
+ 'name': 'TestEvent',
+ 'date_begin': datetime.datetime(2019, 6, 8, 12, 0),
+ 'date_end': datetime.datetime(2019, 6, 12, 12, 0),
+ })
+
+ self.mock_datetime.now.return_value = datetime.datetime(2019, 6, 9, 12, 0)
+ self.assertEqual(test_event._is_event_registrable(), True)
+
+ self.mock_datetime.now.return_value = datetime.datetime(2019, 6, 13, 12, 0)
+ self.assertEqual(test_event._is_event_registrable(), False)
+
+ self.mock_datetime.now.return_value = datetime.datetime(2019, 6, 10, 12, 0)
+ test_event.write({'event_ticket_ids': [(6, 0, [])]})
+ self.assertEqual(test_event._is_event_registrable(), True)
+
+ test_event_ticket = self.env['event.event.ticket'].create({
+ 'name': 'TestTicket',
+ 'event_id': test_event.id,
+ 'product_id': 1,
+ })
+ test_event_ticket.copy()
+ test_event_ticket.product_id.active = False
+ self.assertEqual(test_event._is_event_registrable(), False)
+
+ self.patcher.stop()
diff --git a/addons/website_event/views/event_templates.xml b/addons/website_event/views/event_templates.xml
index 287e1a35b76..ca06a76b345 100644
--- a/addons/website_event/views/event_templates.xml
+++ b/addons/website_event/views/event_templates.xml
@@ -314,7 +314,7 @@
<template id="event_description_full">
<t t-call="website_event.event_details">
<div class="col">
- <div t-if="event.state == 'done' or not registrable" class="alert alert-info" role="status">Registration for this event is now closed</div>
+ <div t-if="event.state == 'done' or not registrable" class="alert alert-info" role="status">Registration for this event is now closed.</div>
<t t-if="event.state != 'done' and registrable" t-call="website_event.registration_template"/>
<div class="clearfix"/>
<hr/>