diff options
| author | Andrea Ulliana <aul@odoo.com> | 2019-06-24 13:10:27 +0000 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2019-06-27 14:46:42 +0000 |
| commit | 230bb2a84d44abcf132a6b2dbe50898f6cbef417 (patch) | |
| tree | d9bba9ed3512bb056f248022cfde606e9b206aae | |
| parent | 3de5fce87c9c539fa97d29f199a7575432117c6a (diff) | |
[IMP] w_event, event_sale, event: check registrable events
Before this task, an event out of date was still registrable for a
customer. Now, an event is registrable only if the end date is not out
of date.
task-1973957
closes odoo/odoo#33389
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
| -rw-r--r-- | addons/event/models/event.py | 2 | ||||
| -rw-r--r-- | addons/event_sale/models/event.py | 10 | ||||
| -rw-r--r-- | addons/event_sale/tests/test_event_sale.py | 34 | ||||
| -rw-r--r-- | addons/website_event/views/event_templates.xml | 2 |
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/> |
