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 @@