diff --git a/resource_booking/i18n/es.po b/resource_booking/i18n/es.po index cc2e3b06..0acd71f6 100644 --- a/resource_booking/i18n/es.po +++ b/resource_booking/i18n/es.po @@ -1349,9 +1349,3 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:resource_booking.message_combination_assigned msgid "because you belong to the chosen resource combination:" msgstr "" - -#~ msgid "Next Activity Resource Booking" -#~ msgstr "Siguiente actividad de reserva de recursos" - -#~ msgid "Who requested this booking?" -#~ msgstr "¿Quién solicitó esta reserva/cita?" diff --git a/resource_booking/i18n/fr_FR.po b/resource_booking/i18n/fr_FR.po index ef223482..d1986ac7 100644 --- a/resource_booking/i18n/fr_FR.po +++ b/resource_booking/i18n/fr_FR.po @@ -1360,12 +1360,3 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:resource_booking.message_combination_assigned msgid "because you belong to the chosen resource combination:" msgstr "" - -#~ msgid "Who requested this booking?" -#~ msgstr "Qui a demandé cette réservation ?" - -#~ msgid "SMS Delivery error" -#~ msgstr "Erreur de livraison SMS" - -#~ msgid "Followers (Channels)" -#~ msgstr "Abonnés (Chaînes)" diff --git a/resource_booking/models/res_partner.py b/resource_booking/models/res_partner.py index 180ea2aa..4f454cfc 100644 --- a/resource_booking/models/res_partner.py +++ b/resource_booking/models/res_partner.py @@ -12,8 +12,12 @@ class ResPartner(models.Model): ) def _compute_resource_booking_count(self): - for p in self: - p.resource_booking_count = len(p.resource_booking_ids) + booking_data = self.env["resource.booking"].read_group( + [("partner_id", "in", self.ids)], ["partner_id"], ["partner_id"] + ) + data = {x["partner_id"][0]: x["partner_id_count"] for x in booking_data} + for record in self: + record.resource_booking_count = data.get(record.id, 0) def action_view_resource_booking(self): self.ensure_one() diff --git a/resource_booking/models/resource_booking.py b/resource_booking/models/resource_booking.py index d9464dbd..06400c9d 100644 --- a/resource_booking/models/resource_booking.py +++ b/resource_booking/models/resource_booking.py @@ -172,14 +172,6 @@ class ResourceBooking(models.Model): tracking=True, help="Who will attend this booking?", ) - partner_ids = fields.Many2many( - "res.partner", - string="Contacts", - store=True, - compute="_compute_partner_ids", - inverse="_inverse_partner_ids", - help="E.g. multiple people in a room. Used by sale_resource_booking_period", - ) user_id = fields.Many2one( comodel_name="res.users", default=lambda self: self._default_user_id(), @@ -405,15 +397,6 @@ def _compute_stop(self): # Either value is False: no stop date record.stop = False - @api.depends("partner_id") - def _compute_partner_ids(self): - for record in self: - if record.partner_id: - record.partner_ids = [(6, 0, [record.partner_id.id])] - - def _inverse_partner_ids(self): - pass - @api.depends("meeting_id.user_id") def _compute_user_id(self): """Get user from related meeting, if available.""" diff --git a/resource_booking/tests/test_backend.py b/resource_booking/tests/test_backend.py index 28f2dbef..4f19e9ab 100644 --- a/resource_booking/tests/test_backend.py +++ b/resource_booking/tests/test_backend.py @@ -645,22 +645,22 @@ def test_videocall_location(self): with Form(rb) as rb_f: rb_f.start = "2021-03-01 08:00:00" self.assertEqual(rb.state, "scheduled") - self.assertEqual(rb.videocall_location, "Videocall Office 1") - self.assertEqual(rb.meeting_id.videocall_location, "Videocall Office 1") + self.assertTrue("Videocall Office 1" in rb.videocall_location) + self.assertTrue("Videocall Office 1" in rb.meeting_id.videocall_location) # Changing meeting videocall location changes videocall location of booking with Form(rb.meeting_id) as meeting_f: meeting_f.videocall_location = "Videocall Office 2" - self.assertEqual(rb.videocall_location, "Videocall Office 2") - self.assertEqual(rb.meeting_id.videocall_location, "Videocall Office 2") + self.assertTrue("Videocall Office 2" in rb.videocall_location) + self.assertTrue("Videocall Office 2" in rb.meeting_id.videocall_location) # Changing booking videocall location changes meeting location with Form(rb) as rb_f: rb_f.videocall_location = "Videocall Office 3" - self.assertEqual(rb.meeting_id.videocall_location, "Videocall Office 3") - self.assertEqual(rb.videocall_location, "Videocall Office 3") + self.assertTrue("Videocall Office 3" in rb.meeting_id.videocall_location) + self.assertTrue("Videocall Office 3" in rb.videocall_location) # When unscheduled, it keeps videocall location untouched rb.action_unschedule() self.assertFalse(rb.meeting_id) - self.assertEqual(rb.videocall_location, "Videocall Office 3") + self.assertTrue("Videocall Office 3" in rb.videocall_location) def test_organizer_sync(self): """Resource booking and meeting organizers are properly synced.""" @@ -777,7 +777,7 @@ def test_suggested_and_subscribed_recipients(self): # Requester and combination must be suggested self.assertEqual( rb._message_get_suggested_recipients(), - {rb.id: [(rb.partner_id.id, "some customer", None, "Requester")]}, + {rb.id: [(rb.partner_id.id, "some customer", None, "Attendees")]}, ) def test_creating_rbt_has_tags(self): diff --git a/resource_booking/tests/test_portal.py b/resource_booking/tests/test_portal.py index 5c7939fe..a486d7b4 100644 --- a/resource_booking/tests/test_portal.py +++ b/resource_booking/tests/test_portal.py @@ -7,33 +7,29 @@ from freezegun import freeze_time from lxml.html import fromstring +import odoo +from odoo.tests import new_test_user from odoo.tests.common import HttpCase from .common import create_test_data @freeze_time("2021-02-26 09:00:00", tick=True) +@odoo.tests.tagged("post_install", "-at_install") class PortalCase(HttpCase): - def setUp(self): - super().setUp() - create_test_data(self) - self.user_portal, self.user_manager = self.env["res.users"].create( - [ - { - "name": "portal", - "login": "ptl", - "password": "ptl", - "groups_id": [(4, self.env.ref("base.group_portal").id, 0)], - }, - { - "name": "manager", - "login": "mgr", - "password": "mgr", - "groups_id": [ - (4, self.env.ref("resource_booking.group_manager").id, 0) - ], - }, - ] + @classmethod + def setUpClass(cls): + super().setUpClass() + create_test_data(cls) + + cls.user_portal = new_test_user( + cls.env, login="ptl", password="ptl", groups="base.group_portal" + ) + cls.user_manager = new_test_user( + cls.env, + login="mgr", + password="mgr", + groups="resource_booking.group_manager", ) def _url_xml(self, url, data=None, timeout=10): @@ -195,7 +191,7 @@ def test_portal_scheduling_conflict(self): ) ) # Public guy's booking and related meeting are OK in backend - booking_public.invalidate_cache(ids=booking_public.ids) + booking_public.invalidate_model() self.assertEqual(booking_public.state, "confirmed") self.assertEqual(len(booking_public.meeting_id.attendee_ids), 2) for attendee in booking_public.meeting_id.attendee_ids: diff --git a/resource_booking/views/resource_booking_views.xml b/resource_booking/views/resource_booking_views.xml index 60780c6b..f9e5d4a8 100644 --- a/resource_booking/views/resource_booking_views.xml +++ b/resource_booking/views/resource_booking_views.xml @@ -30,7 +30,6 @@ - @@ -136,7 +135,6 @@ -