Restore erpnext v12 backup to erpnext v13 issue

tried to restore with “bench – site mysite database-location” and it restored successfully but i got “Internal Server Error” when i try to access the site .
i tried bench migrate & bench update & bench install-requirements & bench update --force and many other commands and still the same for 2 days

here is the full track back

paulpaul@paul:~/myfrappe$ bench migrate
Migrating mysite
Executing erpnext.patches.v13_0.add_default_interview_notification_templates in mysite (_b7b324d5487a1a21)
Traceback (most recent call last):
File “/usr/lib/python3.8/runpy.py”, line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File “/usr/lib/python3.8/runpy.py”, line 87, in _run_code
exec(code, run_globals)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/utils/bench_helper.py”, line 104, in
main()
File “/home/paulpaul/myfrappe/apps/frappe/frappe/utils/bench_helper.py”, line 19, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/home/paulpaul/myfrappe/env/lib/python3.8/site-packages/click/core.py”, line 829, in call
return self.main(*args, **kwargs)
File “/home/paulpaul/myfrappe/env/lib/python3.8/site-packages/click/core.py”, line 782, in main
rv = self.invoke(ctx)
File “/home/paulpaul/myfrappe/env/lib/python3.8/site-packages/click/core.py”, line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/paulpaul/myfrappe/env/lib/python3.8/site-packages/click/core.py”, line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/paulpaul/myfrappe/env/lib/python3.8/site-packages/click/core.py”, line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/home/paulpaul/myfrappe/env/lib/python3.8/site-packages/click/core.py”, line 610, in invoke
return callback(*args, **kwargs)
File “/home/paulpaul/myfrappe/env/lib/python3.8/site-packages/click/decorators.py”, line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/commands/init.py”, line 27, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/commands/site.py”, line 306, in migrate
migrate(
File “/home/paulpaul/myfrappe/apps/frappe/frappe/migrate.py”, line 67, in migrate
frappe.modules.patch_handler.run_all(skip_failing)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/modules/patch_handler.py”, line 41, in run_all
run_patch(patch)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/modules/patch_handler.py”, line 30, in run_patch
if not run_single(patchmodule = patch):
File “/home/paulpaul/myfrappe/apps/frappe/frappe/modules/patch_handler.py”, line 71, in run_single
return execute_patch(patchmodule, method, methodargs)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/modules/patch_handler.py”, line 91, in execute_patch
frappe.get_attr(patchmodule.split()[0] + “.execute”)()
File “/home/paulpaul/myfrappe/apps/erpnext/erpnext/patches/v13_0/add_default_interview_notification_templates.py”, line 14, in execute
frappe.get_doc({
File “/home/paulpaul/myfrappe/apps/frappe/frappe/model/document.py”, line 238, in insert
self.run_before_save_methods()
File “/home/paulpaul/myfrappe/apps/frappe/frappe/model/document.py”, line 968, in run_before_save_methods
self.run_method(“validate”)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/model/document.py”, line 860, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/model/document.py”, line 1158, in composer
return composed(self, method, *args, **kwargs)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/model/document.py”, line 1141, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/paulpaul/myfrappe/apps/frappe/frappe/model/document.py”, line 854, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/paulpaul/myfrappe/apps/frappe/frappe/email/doctype/email_template/email_template.py”, line 12, in validate
if self.use_html:
AttributeError: ‘EmailTemplate’ object has no attribute ‘use_html’

any help here ?

any one ? :smiley:

We’ve also faced this error. We modified the email_template.py a little bit. https://github.com/frappe/frappe/blob/07af98255b6ac9bb3b277fc1b9d6999a86a90e9f/frappe/email/doctype/email_template/email_template.py#L11

Change this:

def validate(self):
	if self.use_html:
		validate_template(self.response_html)
	else:
		validate_template(self.response)

to:

def validate(self):
	pass
	#if self.use_html:
	#	validate_template(self.response_html)
	#else:
	#	validate_template(self.response)

Then you can proceed to migrate operation. Then you may revert your code.

3 Likes

Thanks, Turker. This worked well for me for migrating (to a new server) from v12 to v13

1 Like