RATIONALE Events often have sponsors displayed on their front page. This should be a real standalone feature of Online Event application. However currently it cannot be used without tracks managements PURPOSE Purpose of this task is to allow to use and display sponsors on an Event front page without using tracks. Moreover online and chat capabilities should be part of a sponsor feature, located within website_event_exhibitor module. SPECIFICATIONS Move everything related to event.sponsor model from website_event_track to website_event_exhibitor. Functionally feature should be the same as before except that we should be able to configure and display sponsors directly with website_event_exhibitor application without using tracks. Website_event_exhibitor should also define the sponsor template used to display sponsors below an event. LINKS Task ID-2326433 COM PR odoo/odoo#61781 ENT pr odoo/enterprise#14752 UPG PR odoo/upgrade#1931
111 lines
4.3 KiB
Python
111 lines
4.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from datetime import datetime, timedelta, time
|
|
from unittest.mock import patch
|
|
|
|
from odoo.addons.event.tests.common import TestEventCommon
|
|
from odoo.addons.mail.tests.common import mail_new_test_user
|
|
from odoo.fields import Datetime as FieldsDatetime, Date as FieldsDate
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class EventDtPatcher(TransactionCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(EventDtPatcher, cls).setUpClass()
|
|
|
|
# Mock dates to have reproducible computed fields based on time
|
|
cls.reference_now = datetime(2020, 7, 6, 10, 0, 0)
|
|
cls.reference_today = datetime(2020, 7, 6)
|
|
|
|
cls.event_dt = patch(
|
|
'odoo.addons.event.models.event_event.fields.Datetime',
|
|
wraps=FieldsDatetime
|
|
)
|
|
cls.wevent_dt = patch(
|
|
'odoo.addons.website_event.models.event_event.fields.Datetime',
|
|
wraps=FieldsDatetime
|
|
)
|
|
cls.wevent_main_dt = patch(
|
|
'odoo.addons.website_event.controllers.main.fields.Datetime',
|
|
wraps=FieldsDatetime
|
|
)
|
|
cls.event_date = patch(
|
|
'odoo.addons.event.models.event_event.fields.Date',
|
|
wraps=FieldsDate
|
|
)
|
|
cls.wevent_main_date = patch(
|
|
'odoo.addons.website_event.controllers.main.fields.Date',
|
|
wraps=FieldsDate
|
|
)
|
|
cls.mock_event_dt = cls.event_dt.start()
|
|
cls.mock_wevent_dt = cls.wevent_dt.start()
|
|
cls.mock_wevent_main_dt = cls.wevent_main_dt.start()
|
|
cls.mock_event_date = cls.event_date.start()
|
|
cls.mock_wevent_main_date = cls.wevent_main_date.start()
|
|
cls.mock_event_dt.now.return_value = cls.reference_now
|
|
cls.mock_wevent_dt.now.return_value = cls.reference_now
|
|
cls.mock_wevent_main_dt.now.return_value = cls.reference_now
|
|
cls.mock_event_date.today.return_value = cls.reference_today
|
|
cls.mock_wevent_main_date.today.return_value = cls.reference_today
|
|
cls.addClassCleanup(cls.event_dt.stop)
|
|
cls.addClassCleanup(cls.wevent_dt.stop)
|
|
cls.addClassCleanup(cls.wevent_main_dt.stop)
|
|
cls.addClassCleanup(cls.event_date.stop)
|
|
cls.addClassCleanup(cls.wevent_main_date.stop)
|
|
|
|
|
|
class TestWebsiteEventCommon(TestEventCommon):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestWebsiteEventCommon, cls).setUpClass()
|
|
|
|
cls.company_main = cls.env.user.company_id
|
|
cls.user_event_web_manager = mail_new_test_user(
|
|
cls.env, login='user_event_web_manager',
|
|
name='Martin Sales Manager', email='crm_manager@test.example.com',
|
|
company_id=cls.company_main.id,
|
|
notification_type='inbox',
|
|
groups='event.group_event_manager,website.group_website_designer',
|
|
)
|
|
|
|
def _get_menus(self):
|
|
return set(['Introduction', 'Location', 'Register'])
|
|
|
|
def _assert_website_menus(self, event, menu_entries=None):
|
|
self.assertTrue(event.menu_id)
|
|
|
|
if menu_entries is None:
|
|
menu_entries = self._get_menus()
|
|
|
|
menus = self.env['website.menu'].search([('parent_id', '=', event.menu_id.id)])
|
|
self.assertEqual(len(menus), len(menu_entries))
|
|
self.assertEqual(set(menus.mapped('name')), menu_entries)
|
|
|
|
for page_specific in ['Introduction', 'Location']:
|
|
view = self.env['ir.ui.view'].search(
|
|
[('name', '=', page_specific + ' ' + event.name)]
|
|
)
|
|
if page_specific in menu_entries:
|
|
self.assertTrue(bool(view))
|
|
# TDE FIXME: page deletion not done in 13.3 for Introduction/Location, difficult to fix
|
|
# without website.event.menu model (or crappy code based on name)
|
|
# else:
|
|
# self.assertFalse(bool(view))
|
|
|
|
|
|
class TestEventOnlineCommon(TestEventCommon, EventDtPatcher):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestEventOnlineCommon, cls).setUpClass()
|
|
|
|
# event if 8-18 in Europe/Brussels (DST) (first day: begins at 9, last day: ends at 15)
|
|
cls.event_0.write({
|
|
'date_begin': datetime.combine(cls.reference_now, time(7, 0)) - timedelta(days=1),
|
|
'date_end': datetime.combine(cls.reference_now, time(13, 0)) + timedelta(days=1),
|
|
})
|