[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:
committed by
Jeremy Kersten
parent
3de5fce87c
commit
230bb2a84d
@@ -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):
|
||||
|
||||
@@ -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/>
|
||||
|
||||
Reference in New Issue
Block a user