[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>
This commit is contained in:
Andrea Ulliana
2019-06-27 14:46:42 +00:00
committed by Jeremy Kersten
parent 3de5fce87c
commit 230bb2a84d
4 changed files with 42 additions and 6 deletions
+1 -1
View File
@@ -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):
+6 -4
View File
@@ -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'
@@ -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()
@@ -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/>