Skip to content

Commit 7e18e52

Browse files
Merge pull request #3 from akretion/16.0-add-cross_connect_client-fdc-ref
[REF] avoid groupe deletion + simplify name management
2 parents 52bd7ff + 255fd86 commit 7e18e52

3 files changed

Lines changed: 17 additions & 28 deletions

File tree

cross_connect_client/models/cross_connect_server.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Copyright 2024 Akretion (http://www.akretion.com).
22
# @author Florian Mounier <florian.mounier@akretion.com>
33
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
4-
from urllib.parse import urlparse
54

65
import requests
76

@@ -15,7 +14,8 @@ class CrossConnectServer(models.Model):
1514
_inherit = "server.env.mixin"
1615

1716
name = fields.Char(
18-
required=True, compute="_compute_name", readonly=False, store=True
17+
required=True,
18+
help="This name will be used for the new created app",
1919
)
2020
server_url = fields.Char(required=True)
2121
api_key = fields.Char(
@@ -38,15 +38,6 @@ class CrossConnectServer(models.Model):
3838
compute="_compute_web_icon_data", inverse="_inverse_web_icon_data"
3939
)
4040

41-
@api.depends("server_url")
42-
def _compute_name(self):
43-
for record in self:
44-
if not record.name or record.name == "/":
45-
try:
46-
record.name = urlparse(record.server_url).hostname
47-
except Exception:
48-
record.name = "/"
49-
5041
@api.depends("name", "group_ids")
5142
def _compute_menu_id(self):
5243
for record in self:
@@ -58,7 +49,7 @@ def _compute_menu_id(self):
5849
record.menu_id = False
5950
continue
6051

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

6354
if not record.menu_id:
6455
action = self.env["ir.actions.act_url"].create(
@@ -143,13 +134,15 @@ def _sync_groups(self):
143134
remote_groups_ids = {remote_group["id"] for remote_group in remote_groups}
144135
self.group_ids.filtered(
145136
lambda group: group.cross_connect_server_group_id not in remote_groups_ids
146-
).unlink()
137+
).write({"cross_connect_server_id": False})
147138

148139
# Create or Update existing groups
149140
for remote_group in remote_groups:
150-
existing_group = self.group_ids.filtered(
151-
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"])]
152143
)
144+
if existing_group and not existing_group.cross_connect_server_id:
145+
existing_group.write({"cross_connect_server_id": self.id})
153146
if existing_group:
154147
existing_group.sudo().write(
155148
{
@@ -173,8 +166,14 @@ def action_sync(self):
173166

174167
def action_disable(self):
175168
for record in self:
176-
record.group_ids.unlink()
169+
record.group_ids.write({"cross_connect_server_id": False})
177170

178171
@property
179172
def _server_env_fields(self):
180173
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}"

cross_connect_client/views/cross_connect_server_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
bg_color="bg-warning"
3939
attrs="{'invisible': [('group_ids', '!=', [])]}"
4040
/>
41-
<div class="oe_title" attrs="{'invisible': [('name', '=', False)]}">
41+
<div class="oe_title">
4242
<h1>
4343
<field name="name" />
4444
</h1>

0 commit comments

Comments
 (0)