[ERROR] Executing frappe.patches.v7_1.rename_chinese_language_codes

Hello All,

I experience the following error when performing bench migrate after a git pull upstream develop. Same error when performing bench update. Any ideas on how to fix it welcome.

Executing frappe.patches.v7_1.rename_chinese_language_codes in erpnext_school (ace2dd0979440896)
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 79, in <module>
    main()
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 16, in main
    click.Group(commands=commands)(prog_name='bench')
  File "/Users/chudeosiegbu/frappe-bench/env/lib/python2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/Users/chudeosiegbu/frappe-bench/env/lib/python2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/Users/chudeosiegbu/frappe-bench/env/lib/python2.7/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/chudeosiegbu/frappe-bench/env/lib/python2.7/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/chudeosiegbu/frappe-bench/env/lib/python2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/chudeosiegbu/frappe-bench/env/lib/python2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/Users/chudeosiegbu/frappe-bench/env/lib/python2.7/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/commands/__init__.py", line 24, in _func
    ret = f(frappe._dict(ctx.obj), *args, **kwargs)
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/commands/site.py", line 206, in migrate
    migrate(context.verbose, rebuild_website=rebuild_website)
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/migrate.py", line 29, in migrate
    frappe.modules.patch_handler.run_all()
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 26, in run_all
    if not run_single(patchmodule = patch):
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 60, in run_single
    return execute_patch(patchmodule, method, methodargs)
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 80, in execute_patch
    frappe.get_attr(patchmodule.split()[0] + ".execute")()
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/patches/v7_1/rename_chinese_language_codes.py", line 6, in execute
    frappe.rename_doc('Language', 'zh-tw', 'zh-TW', force=True)
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/__init__.py", line 642, in rename_doc
    return rename_doc(doctype, old, new, force=force, merge=merge, ignore_permissions=ignore_permissions)
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/model/rename_doc.py", line 32, in rename_doc
    new = validate_rename(doctype, new, meta, merge, force, ignore_permissions)
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/model/rename_doc.py", line 103, in validate_rename
    frappe.msgprint(_("Another {0} with name {1} exists, select another name").format(doctype, new), raise_exception=1)
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/__init__.py", line 295, in msgprint
    _raise_exception()
  File "/Users/chudeosiegbu/frappe-bench/apps/frappe/frappe/__init__.py", line 270, in _raise_exception
    raise ValidationError, encode(msg)
frappe.exceptions.ValidationError: Another Language with name zh-TW exists, select another name

Regards,
cksgb

Hi Team,

It seems the issue is from:

import frappe

def execute():
	frappe.rename_doc('Language', 'zh-cn', 'zh', force=True,
		merge=True if frappe.db.exists('Language', 'zh') else False)
	frappe.rename_doc('Language', 'zh-tw', 'zh-TW', force=True)
	frappe.db.set_value('Language', 'zh', 'language_code', 'zh')
	frappe.db.set_value('Language', 'zh-TW', 'language_code', 'zh-TW')

is it okay to change it to:

import frappe

def execute():
	frappe.rename_doc('Language', 'zh-cn', 'zh', force=True,
		merge=True if frappe.db.exists('Language', 'zh') else False)
	frappe.rename_doc('Language', 'zh-tw', 'zh-TW', force=True)
		merge=True if frappe.db.exists('Language', 'zh-TW') else False)
	frappe.db.set_value('Language', 'zh', 'language_code', 'zh')
	frappe.db.set_value('Language', 'zh-TW', 'language_code', 'zh-TW')

Regards,
cksgb

Hi @Chude_Osiegbu,

Thanks for reporting an issue, we have fixed it. Kindly pull latest update and check.

Thanks, Rohit