fix(filter): use JSON encoding for in filter values containing commas
This commit is contained in:
parent
a9eea222fa
commit
0d1f8992bc
2 changed files with 12 additions and 3 deletions
|
|
@ -888,7 +888,11 @@ from {tables}
|
|||
if value is None:
|
||||
values = f.value or ""
|
||||
if isinstance(values, str):
|
||||
values = values.split(",")
|
||||
try:
|
||||
parsed = json.loads(values)
|
||||
values = parsed if isinstance(parsed, list) else [parsed]
|
||||
except (ValueError, TypeError):
|
||||
values = values.split(",")
|
||||
|
||||
fallback = "''"
|
||||
value = [frappe.db.escape((cstr(v) or "").strip(), percent=False) for v in values]
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ frappe.ui.Filter = class {
|
|||
this._filter_value_set = Promise.resolve();
|
||||
|
||||
if (["in", "not in"].includes(condition) && Array.isArray(value)) {
|
||||
value = value.join(",");
|
||||
value = value.some((v) => String(v).includes(",")) ? JSON.stringify(value) : value.join(",");
|
||||
}
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
|
|
@ -485,7 +485,12 @@ frappe.ui.filter_utils = {
|
|||
}
|
||||
} else if (["in", "not in"].includes(condition)) {
|
||||
if (val) {
|
||||
val = val.split(",").map((v) => strip(v));
|
||||
try {
|
||||
const parsed = JSON.parse(val);
|
||||
val = Array.isArray(parsed) ? parsed : [String(parsed)];
|
||||
} catch {
|
||||
val = val.split(",").map((v) => strip(v));
|
||||
}
|
||||
}
|
||||
} else if (frappe.boot.additional_filters_config[condition]) {
|
||||
val = field.value || val;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue