Skip to content

Commit

Permalink
fix: Quality Inspection Parameter migration - DuplicateEntryError due…
Browse files Browse the repository at this point in the history
… to case sensitivity (#37499)

* fix: account for case-insensitive database primary key for parameter names

* chore: linting

(cherry picked from commit b099590)
  • Loading branch information
casesolved-co-uk authored and mergify[bot] committed Nov 5, 2023
1 parent c2001be commit 0128436
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions erpnext/patches/v13_0/convert_qi_parameter_to_link_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,24 @@

def execute():
frappe.reload_doc("stock", "doctype", "quality_inspection_parameter")
params = set()

# get all distinct parameters from QI readigs table
reading_params = frappe.db.get_all(
"Quality Inspection Reading", fields=["distinct specification"]
)
reading_params = [d.specification for d in reading_params]
# get all parameters from QI readings table
for (p,) in frappe.db.get_all(
"Quality Inspection Reading", fields=["specification"], as_list=True
):
params.add(p.strip())

# get all distinct parameters from QI Template as some may be unused in QI
template_params = frappe.db.get_all(
"Item Quality Inspection Parameter", fields=["distinct specification"]
)
template_params = [d.specification for d in template_params]
# get all parameters from QI Template as some may be unused in QI
for (p,) in frappe.db.get_all(
"Item Quality Inspection Parameter", fields=["specification"], as_list=True
):
params.add(p.strip())

params = list(set(reading_params + template_params))
# because db primary keys are case insensitive, so duplicates will cause an exception
params = set({x.casefold(): x for x in params}.values())

for parameter in params:
if not frappe.db.exists("Quality Inspection Parameter", parameter):
frappe.get_doc(
{"doctype": "Quality Inspection Parameter", "parameter": parameter, "description": parameter}
).insert(ignore_permissions=True)
frappe.get_doc(
{"doctype": "Quality Inspection Parameter", "parameter": parameter, "description": parameter}
).insert(ignore_permissions=True)

0 comments on commit 0128436

Please sign in to comment.