Skip to content

Commit

Permalink
[MIG] resource_booking: Finish migration to 16.0
Browse files Browse the repository at this point in the history
Changes done:
- Squash administrative commits.
- Purge translations.
- Fix tests and/or remove warnings.
- Remove migration scripts from 15.0
- Change resource_booking_ids field from partner to many2many field

TT45643
  • Loading branch information
victoralmau committed Mar 19, 2024
1 parent e4652d6 commit 778d9f3
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 84 deletions.
6 changes: 0 additions & 6 deletions resource_booking/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -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?"
9 changes: 0 additions & 9 deletions resource_booking/i18n/fr_FR.po
Original file line number Diff line number Diff line change
Expand Up @@ -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)"
19 changes: 0 additions & 19 deletions resource_booking/migrations/15.0.1.4.0/post-migration.py

This file was deleted.

10 changes: 0 additions & 10 deletions resource_booking/migrations/15.0.1.4.0/pre-migration.py

This file was deleted.

11 changes: 8 additions & 3 deletions resource_booking/models/res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,13 @@ class ResPartner(models.Model):
resource_booking_count = fields.Integer(
compute="_compute_resource_booking_count", string="Resource booking count"
)
resource_booking_ids = fields.One2many(
"resource.booking", "partner_id", string="Bookings"
resource_booking_ids = fields.Many2many(
comodel_name="resource.booking",
relation="res_partner_resource_booking_rel",
column1="res_partner_id",
column2="resource_booking_id",
string="Bookings",
copy=False,
)

def _compute_resource_booking_count(self):
Expand All @@ -21,6 +26,6 @@ def action_view_resource_booking(self):
"resource_booking.resource_booking_action"
)
action["context"] = {

Check warning on line 28 in resource_booking/models/res_partner.py

View check run for this annotation

Codecov / codecov/patch

resource_booking/models/res_partner.py#L28

Added line #L28 was not covered by tests
"default_partner_id": self.id,
"default_partner_ids": self.ids,
}
return action

Check warning on line 31 in resource_booking/models/res_partner.py

View check run for this annotation

Codecov / codecov/patch

resource_booking/models/res_partner.py#L31

Added line #L31 was not covered by tests
11 changes: 8 additions & 3 deletions resource_booking/models/resource_booking.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ class ResourceBooking(models.Model):
)
partner_ids = fields.Many2many(
comodel_name="res.partner",
relation="res_partner_resource_booking_rel",
string="Attendees",
required=True,
tracking=True,
Expand Down Expand Up @@ -724,16 +725,20 @@ def _message_get_suggested_recipients(self):

def action_schedule(self):
"""Redirect user to a simpler way to schedule this booking."""
FloatTimeParser = self.env["ir.qweb.field.float_time"]
DurationParser = self.env["ir.qweb.field.duration"]
return {
"context": dict(
self.env.context,
# These 2 avoid creating event as activity
default_res_model_id=False,
default_res_id=False,
# Context used by web_calendar_slot_duration module
calendar_slot_duration=FloatTimeParser.value_to_html(
self.duration, False
calendar_slot_duration=DurationParser.value_to_html(
self.duration,
{
"unit": "hour",
"digital": True,
},
),
default_resource_booking_ids=[(6, 0, self.ids)],
default_name=self.name or "",
Expand Down
27 changes: 14 additions & 13 deletions resource_booking/tests/test_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,9 @@ def test_location(self):
self.assertEqual(rb.location, "Office 3")

def test_videocall_location(self):
"""Videocall location across records works as expected."""
"""Videocall location across records works as expected.
We need to set dummy urls to prevent the _set_videocall_location() method
of calendar from doing so."""
rbt2 = self.rbt.copy({"videocall_location": "Videocall Office 2"})
rb_f = Form(self.env["resource.booking"])
rb_f.partner_ids.add(self.partner)
Expand All @@ -638,29 +640,28 @@ def test_videocall_location(self):
self.assertEqual(rb.videocall_location, "Videocall Office 2")
# Still can change it independently
with Form(rb) as rb_f:
rb_f.videocall_location = "Videocall Office 1"
self.assertEqual(rb.videocall_location, "Videocall Office 1")
rb_f.videocall_location = "https://Videocall Office 1"
self.assertEqual(rb.videocall_location, "https://Videocall Office 1")
self.assertEqual(rbt2.videocall_location, "Videocall Office 2")
# Schedule the booking, meeting inherits videocall location from it
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")
# Changing meeting videocall location changes videocall location of booking
self.assertEqual(rb.videocall_location, "https://Videocall Office 1")
self.assertEqual(rb.meeting_id.videocall_location, "https://Videocall Office 1")
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")
meeting_f.videocall_location = "https://Videocall Office 2"
self.assertEqual(rb.videocall_location, "https://Videocall Office 2")
self.assertEqual(rb.meeting_id.videocall_location, "https://Videocall Office 2")
# 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")
rb_f.videocall_location = "https://Videocall Office 3"
self.assertEqual(rb.videocall_location, "https://Videocall Office 3")
self.assertEqual(rb.meeting_id.videocall_location, "https://Videocall Office 3")
# When unscheduled, it keeps videocall location untouched
rb.action_unschedule()
self.assertFalse(rb.meeting_id)
self.assertEqual(rb.videocall_location, "Videocall Office 3")
self.assertEqual(rb.videocall_location, "https://Videocall Office 3")

def test_organizer_sync(self):
"""Resource booking and meeting organizers are properly synced."""
Expand Down
37 changes: 16 additions & 21 deletions resource_booking/tests/test_portal.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,28 @@
from freezegun import freeze_time
from lxml.html import fromstring

from odoo.tests import new_test_user, tagged
from odoo.tests.common import HttpCase

from .common import create_test_data


@freeze_time("2021-02-26 09:00:00", tick=True)
@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):
Expand Down Expand Up @@ -195,7 +190,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:
Expand Down

0 comments on commit 778d9f3

Please sign in to comment.