Skip to content

Commit 255fd86

Browse files
[IMP] Avoid deleting the cross connect server groups when unactiving it
We want to avoid deletion of the group because we would then loose all users configured on it. So we prefer to remove the link between the cross connect server and the group instead
1 parent 0ac7ee6 commit 255fd86

2 files changed

Lines changed: 14 additions & 16 deletions

File tree

cross_connect_client/models/cross_connect_server.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def _compute_menu_id(self):
4949
record.menu_id = False
5050
continue
5151

52-
menu_groups = self.env.ref("base.group_system") | record.group_ids
52+
menu_groups = record.group_ids
5353

5454
if not record.menu_id:
5555
action = self.env["ir.actions.act_url"].create(
@@ -134,13 +134,15 @@ def _sync_groups(self):
134134
remote_groups_ids = {remote_group["id"] for remote_group in remote_groups}
135135
self.group_ids.filtered(
136136
lambda group: group.cross_connect_server_group_id not in remote_groups_ids
137-
).unlink()
137+
).write({"cross_connect_server_id": False})
138138

139139
# Create or Update existing groups
140140
for remote_group in remote_groups:
141-
existing_group = self.group_ids.filtered(
142-
lambda group: group.cross_connect_server_group_id == remote_group["id"]
141+
existing_group = self.env["res.groups"].search(
142+
[("cross_connect_server_group_id", "=", remote_group["id"])]
143143
)
144+
if existing_group and not existing_group.cross_connect_server_id:
145+
existing_group.write({"cross_connect_server_id": self.id})
144146
if existing_group:
145147
existing_group.sudo().write(
146148
{
@@ -164,8 +166,14 @@ def action_sync(self):
164166

165167
def action_disable(self):
166168
for record in self:
167-
record.group_ids.unlink()
169+
record.group_ids.write({"cross_connect_server_id": False})
168170

169171
@property
170172
def _server_env_fields(self):
171173
return {"api_key": {}}
174+
175+
def unlink(self):
176+
for rec in self:
177+
# deleting the groups will delete the menu and related action.
178+
rec.group_ids.unlink()
179+
return super().unlink()

cross_connect_client/tests/test_cross_connect_client.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,6 @@ def test_base(self):
3838
self.assertFalse(self.server.menu_id)
3939
self.assertFalse(self.server.web_icon_data)
4040

41-
def test_name(self):
42-
self.server.name = False
43-
self.server.server_url = "//["
44-
self.assertEqual(self.server.name, "/")
45-
self.server.server_url = "https://test.example.org"
46-
self.assertEqual(self.server.name, "test.example.org")
47-
4841
def test_absolute_url_for(self):
4942
self.assertEqual(
5043
self.server._absolute_url_for("test"),
@@ -113,10 +106,7 @@ def test_sync(self, req):
113106
self.server.menu_id.web_icon,
114107
"cross_connect_client,static/description/web_icon_data.png",
115108
)
116-
self.assertEqual(
117-
self.server.menu_id.groups_id,
118-
self.server.group_ids | self.env.ref("base.group_system"),
119-
)
109+
self.assertEqual(self.server.menu_id.groups_id, self.server.group_ids)
120110
self.assertTrue(self.server.menu_id.action.name, "Test Server")
121111
self.assertEqual(
122112
self.server.menu_id.action.url, f"/cross_connect_server/{self.server.id}"

0 commit comments

Comments
 (0)