Skip to content

Commit 77fde09

Browse files
committed
fix(spp_change_request_v2): hide ID column in wizard search and use exact match for ID search
- Remove ID column from search results table (show Name and Type only) - Remove ID badges from selected registrant info card - Change reg_ids.value search from ilike (partial) to = (exact match)
1 parent 458596b commit 77fde09

1 file changed

Lines changed: 10 additions & 73 deletions

File tree

spp_change_request_v2/wizards/create_wizard.py

Lines changed: 10 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -144,44 +144,15 @@ def _compute_registrant_info(self):
144144
# Line 1: Name + Type
145145
name = escape(reg.name or "Unknown")
146146
if reg.is_group:
147-
member_count = (
148-
len(reg.group_membership_ids)
149-
if hasattr(reg, "group_membership_ids")
150-
else 0
151-
)
147+
member_count = len(reg.group_membership_ids) if hasattr(reg, "group_membership_ids") else 0
152148
type_badge = Markup(
153-
"<span class='text-muted ms-2'>"
154-
"<i class='fa fa-users me-1'></i>{} members</span>"
149+
"<span class='text-muted ms-2'><i class='fa fa-users me-1'></i>{} members</span>"
155150
).format(member_count)
156151
else:
157152
type_badge = Markup(
158-
"<span class='text-muted ms-2'>"
159-
"<i class='fa fa-user me-1'></i>Individual</span>"
160-
)
161-
lines.append(
162-
Markup("<div><strong>{}</strong>{}</div>").format(
163-
name, type_badge
153+
"<span class='text-muted ms-2'><i class='fa fa-user me-1'></i>Individual</span>"
164154
)
165-
)
166-
167-
# Line 2: All IDs
168-
if hasattr(reg, "reg_ids") and reg.reg_ids:
169-
id_parts = []
170-
for rid in reg.reg_ids:
171-
if rid.value:
172-
label = rid.id_type_as_str or "ID"
173-
id_parts.append(
174-
Markup(
175-
"<span class='badge text-bg-light border me-1'>"
176-
"{}: {}</span>"
177-
).format(escape(label), escape(rid.value))
178-
)
179-
if id_parts:
180-
lines.append(
181-
Markup("<div class='mt-1'>{}</div>").format(
182-
Markup("").join(id_parts)
183-
)
184-
)
155+
lines.append(Markup("<div><strong>{}</strong>{}</div>").format(name, type_badge))
185156

186157
rec.registrant_info_html = Markup("").join(lines)
187158
else:
@@ -220,9 +191,7 @@ def _compute_freeze_status(self):
220191
def _onchange_selected_partner(self):
221192
"""Convert the bridge integer to a Many2one registrant_id."""
222193
if self._selected_partner_id:
223-
self.registrant_id = self.env["res.partner"].browse(
224-
self._selected_partner_id
225-
)
194+
self.registrant_id = self.env["res.partner"].browse(self._selected_partner_id)
226195

227196
_SEARCH_PAGE_SIZE = 10
228197

@@ -256,7 +225,7 @@ def _get_search_domain(self):
256225
return domain + [
257226
"|",
258227
("name", "ilike", self.search_text),
259-
("reg_ids.value", "ilike", self.search_text),
228+
("reg_ids.value", "=", self.search_text),
260229
]
261230

262231
def _render_search_results(self):
@@ -265,9 +234,7 @@ def _render_search_results(self):
265234
total = self.env["res.partner"].search_count(search_domain)
266235

267236
if not total:
268-
self.search_results_html = Markup(
269-
"<p class='text-muted'>No registrants found.</p>"
270-
)
237+
self.search_results_html = Markup("<p class='text-muted'>No registrants found.</p>")
271238
return
272239

273240
page = self._search_page or 0
@@ -276,58 +243,28 @@ def _render_search_results(self):
276243
page = min(page, max_page)
277244

278245
offset = page * page_size
279-
partners = self.env["res.partner"].search(
280-
search_domain, limit=page_size, offset=offset
281-
)
246+
partners = self.env["res.partner"].search(search_domain, limit=page_size, offset=offset)
282247

283248
rows = []
284249
for p in partners:
285-
# Build ALL IDs in "TypeName (value)" format, show max 2
286-
id_parts = []
287-
if p.reg_ids:
288-
for rid in p.reg_ids:
289-
if rid.value:
290-
label = rid.id_type_as_str or "ID"
291-
id_parts.append(f"{label} ({rid.value})")
292-
if not id_parts:
293-
id_html = Markup("")
294-
id_title = ""
295-
elif len(id_parts) <= 2:
296-
id_html = escape(", ".join(id_parts))
297-
id_title = ""
298-
else:
299-
visible = escape(", ".join(id_parts[:2]))
300-
extra = len(id_parts) - 2
301-
id_html = Markup(
302-
'{} <span class="badge text-bg-secondary ms-1">'
303-
"+{} <i class='fa fa-info-circle'></i></span>"
304-
).format(visible, extra)
305-
id_title = ", ".join(id_parts)
306-
ptype = (
307-
'<i class="fa fa-users"></i> Group'
308-
if p.is_group
309-
else '<i class="fa fa-user"></i> Individual'
310-
)
250+
ptype = '<i class="fa fa-users"></i> Group' if p.is_group else '<i class="fa fa-user"></i> Individual'
311251
rows.append(
312252
Markup(
313253
'<tr class="o_cr_search_result" style="cursor:pointer"'
314254
' data-partner-id="{}" data-partner-name="{}">'
315255
"<td>{}</td>"
316-
'<td title="{}">{}</td>'
317256
"<td>{}</td></tr>"
318257
).format(
319258
p.id,
320259
escape(p.name or ""),
321260
escape(p.name or ""),
322-
escape(id_title),
323-
id_html,
324261
Markup(ptype),
325262
)
326263
)
327264

328265
table = Markup(
329266
'<table class="table table-hover table-sm mb-0 w-100">'
330-
"<thead><tr><th>Name</th><th>ID</th><th>Type</th></tr></thead>"
267+
"<thead><tr><th>Name</th><th>Type</th></tr></thead>"
331268
"<tbody>{}</tbody></table>"
332269
).format(Markup("").join(rows))
333270

0 commit comments

Comments
 (0)