diff --git a/addons/website_event_meet/models/event_meeting_room.py b/addons/website_event_meet/models/event_meeting_room.py index cad8bc78936..4d88f9aaedd 100644 --- a/addons/website_event_meet/models/event_meeting_room.py +++ b/addons/website_event_meet/models/event_meeting_room.py @@ -1,9 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from werkzeug.urls import url_join - -from odoo import api, fields, models, _ +from odoo import api, fields, models from odoo.addons.http_routing.models.ir_http import slug @@ -21,17 +19,10 @@ class EventMeetingRoom(models.Model): is_published = fields.Boolean(copy=True) # make the inherited field copyable event_id = fields.Many2one("event.event", string="Event", required=True, ondelete="cascade") is_pinned = fields.Boolean("Is Pinned") - summary = fields.Char("Summary") + chat_room_id = fields.Many2one("chat.room", required=True, ondelete="restrict") + summary = fields.Char("Summary", translate=True) target_audience = fields.Char("Audience", translate=True) - # TDE FIXME: merge with mixin code - ROOM_CONFIG_FIELDS = { - 'room_name': 'name', - 'room_lang_id': 'lang_id', - 'room_max_capacity': 'max_capacity', - 'room_participant_count': 'participant_count', - } - @api.depends('name', 'event_id.name') def _compute_website_url(self): super(EventMeetingRoom, self)._compute_website_url() @@ -42,19 +33,7 @@ class EventMeetingRoom(models.Model): @api.model_create_multi def create(self, values_list): - # TDE FIXME: merge with mixin code for values in values_list: - if not values.get("chat_room_id"): - # be sure to always create a `chat.room` for each `event.meeting.room` - chat_room = self.env["chat.room"].create({ - self.ROOM_CONFIG_FIELDS[field]: value - for field, value in dict(values).items() - if field in self.ROOM_CONFIG_FIELDS and values.pop(field) - }) - - values["chat_room_id"] = chat_room.id - - values["name"] = values["name"].capitalize() - values["target_audience"] = (values.get("target_audience") or _("Attendee(s)")).capitalize() - + if not values.get("chat_room_id") and not values.get('room_name'): + values['room_name'] = 'odoo-room-%s' % (values['name']) return super(EventMeetingRoom, self).create(values_list) diff --git a/addons/website_event_meet/tests/test_website_event_meet.py b/addons/website_event_meet/tests/test_website_event_meet.py index becb51e85bf..a6687a3623f 100644 --- a/addons/website_event_meet/tests/test_website_event_meet.py +++ b/addons/website_event_meet/tests/test_website_event_meet.py @@ -38,8 +38,9 @@ class TestWebsiteEventMeet(TestEventCommon): "target_audience": "dev", "room_max_capacity": "20", }) - + self.assertEqual(meeting_room_1.room_name, 'odoo-room-test-meeting-room') meeting_room_2 = meeting_room_1.copy() + self.assertEqual(meeting_room_2.room_name, 'odoo-room-test-meeting-room-1') chat_room_1 = meeting_room_1.chat_room_id chat_room_2 = meeting_room_2.chat_room_id @@ -51,6 +52,9 @@ class TestWebsiteEventMeet(TestEventCommon): self.assertEqual(chat_room_1.max_capacity, "20", "Must set the max capacity on the chat room") self.assertEqual(chat_room_2.max_capacity, "20", "Must copy the max capacity") + meeting_room_3 = meeting_room_1.copy() + self.assertEqual(meeting_room_3.room_name, 'odoo-room-test-meeting-room-2') + def test_meeting_room_unlink(self): """Test the duplication of the meeting room.""" meeting_room = self.env["event.meeting.room"].create({ diff --git a/addons/website_event_meet/views/event_meet_templates_list.xml b/addons/website_event_meet/views/event_meet_templates_list.xml index 85b92c920fe..2ca4ab38b37 100644 --- a/addons/website_event_meet/views/event_meet_templates_list.xml +++ b/addons/website_event_meet/views/event_meet_templates_list.xml @@ -115,7 +115,7 @@
Full
-

+

diff --git a/addons/website_event_meet/views/event_meet_templates_page.xml b/addons/website_event_meet/views/event_meet_templates_page.xml index ee453fd7682..bd865af704a 100644 --- a/addons/website_event_meet/views/event_meet_templates_page.xml +++ b/addons/website_event_meet/views/event_meet_templates_page.xml @@ -43,7 +43,7 @@ t-options="{'format': 'medium'}"/> ().
- Join us there to chat about " ! + Join us there to chat about !
diff --git a/addons/website_event_meet/views/event_meeting_room_views.xml b/addons/website_event_meet/views/event_meeting_room_views.xml index 9012ee443bd..c7489ccb355 100644 --- a/addons/website_event_meet/views/event_meeting_room_views.xml +++ b/addons/website_event_meet/views/event_meeting_room_views.xml @@ -36,7 +36,7 @@ - + @@ -58,14 +58,14 @@ event.meeting.room.tree event.meeting.room - + - - + + diff --git a/addons/website_event_track_exhibitor/models/event_sponsor.py b/addons/website_event_track_exhibitor/models/event_sponsor.py index 1f91250377d..4f812034e3e 100644 --- a/addons/website_event_track_exhibitor/models/event_sponsor.py +++ b/addons/website_event_track_exhibitor/models/event_sponsor.py @@ -53,9 +53,12 @@ class EventSponsor(models.Model): for sponsor in self: if sponsor.is_exhibitor and not sponsor.room_name: if sponsor.name: - sponsor.room_name = self.env['chat.room']._jitsi_sanitize_name("odoo-exhibitor-%s" % sponsor.name) + room_name = "odoo-exhibitor-%s" % sponsor.name else: - sponsor.room_name = self.env['chat.room']._default_name() + room_name = self.env['chat.room']._default_name(objname='exhibitor') + sponsor.room_name = self._jitsi_sanitize_name(room_name) + if sponsor.is_exhibitor and not sponsor.room_max_capacity: + sponsor.room_max_capacity = '8' @api.depends('partner_id') def _compute_website_description(self): @@ -97,6 +100,10 @@ class EventSponsor(models.Model): else: sponsor.country_flag_url = False + # ------------------------------------------------------------ + # MIXINS + # --------------------------------------------------------- + @api.depends('name', 'event_id.name') def _compute_website_url(self): super(EventSponsor, self)._compute_website_url() @@ -105,13 +112,32 @@ class EventSponsor(models.Model): base_url = sponsor.event_id.get_base_url() sponsor.website_url = '%s/event/%s/exhibitor/%s' % (base_url, slug(sponsor.event_id), slug(sponsor)) + # ------------------------------------------------------------ + # CRUD + # ------------------------------------------------------------ + @api.model_create_multi def create(self, values_list): for values in values_list: if values.get('is_exhibitor') and not values.get('room_name'): - name = values['name'] if values.get('name') else self.env['res.partner'].browse(values['partner_id']).name or 'sponsor' - values['room_name'] = self.env['chat.room']._jitsi_sanitize_name(name) + exhibitor_name = values['name'] if values.get('name') else self.env['res.partner'].browse(values['partner_id']).name + name = 'odoo-exhibitor-%s' % exhibitor_name or 'sponsor' + values['room_name'] = name return super(EventSponsor, self).create(values_list) + def write(self, values): + toupdate = self.env['event.sponsor'] + if values.get('is_exhibitor') and not values.get('chat_room_id') and not values.get('room_name'): + toupdate = self.filtered(lambda exhibitor: not exhibitor.chat_room_id) + # go into sequential update in order to create a custom room name for each sponsor + for exhibitor in toupdate: + values['room_name'] = 'odoo-exhibitor-%s' % exhibitor.name + super(EventSponsor, exhibitor).write(values) + return super(EventSponsor, self - toupdate).write(values) + + # ------------------------------------------------------------ + # ACTIONS + # --------------------------------------------------------- + def get_backend_menu_id(self): return self.env.ref('event.event_main_menu').id diff --git a/addons/website_event_track_exhibitor/views/event_sponsor_views.xml b/addons/website_event_track_exhibitor/views/event_sponsor_views.xml index 4228c23527d..268342973b7 100644 --- a/addons/website_event_track_exhibitor/views/event_sponsor_views.xml +++ b/addons/website_event_track_exhibitor/views/event_sponsor_views.xml @@ -18,6 +18,7 @@ + diff --git a/addons/website_event_track_online/models/event_track.py b/addons/website_event_track_online/models/event_track.py index 131abf0ee2f..511fbf404ff 100644 --- a/addons/website_event_track_online/models/event_track.py +++ b/addons/website_event_track_online/models/event_track.py @@ -17,6 +17,12 @@ class Track(models.Model): partner_biography = fields.Html( string='Biography', compute='_compute_partner_biography', readonly=False, store=True) + partner_function = fields.Char( + 'Job Position', related='partner_id.function', + compute_sudo=True, readonly=True) + partner_company_name = fields.Char( + 'Company Name', related='partner_id.parent_name', + compute_sudo=True, readonly=True) image = fields.Image( string="Speaker Photo", compute="_compute_speaker_image", readonly=False, store=True, diff --git a/addons/website_event_track_online/views/event_sponsor_views.xml b/addons/website_event_track_online/views/event_sponsor_views.xml index 9fd79468f71..6dd681d7fab 100644 --- a/addons/website_event_track_online/views/event_sponsor_views.xml +++ b/addons/website_event_track_online/views/event_sponsor_views.xml @@ -18,6 +18,12 @@ event.sponsor + + 1 + + + 1 + diff --git a/addons/website_event_track_session/views/event_track_templates_page.xml b/addons/website_event_track_session/views/event_track_templates_page.xml index 7e8c8d11a28..5056039dede 100644 --- a/addons/website_event_track_session/views/event_track_templates_page.xml +++ b/addons/website_event_track_session/views/event_track_templates_page.xml @@ -100,6 +100,12 @@ t-options="{'widget': 'image', 'class': 'rounded-circle', 'max_width': '96'}"/>
+ + + +  at  + + @@ -183,7 +189,7 @@