Error KeyError: u when creating DocType

Hello Team,

Am trying to create new DocType and this is the error i am getting

Traceback (innermost last):
File “/home/frappe/frappe-bench/apps/frappe/frappe/desk/form/save.py”, line 18, in savedocs
doc.save()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 259, in save
self.run_post_save_methods()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 635, in run_post_save_methods
self.run_method(“on_update”)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 579, in run_method
return Document.hook(fn)(self, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 735, in composer
return composed(self, method, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 718, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 573, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 130, in on_update
self.export_doc()
File “/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 196, in export_doc
export_to_files(record_list=[[‘DocType’, self.name]])
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/export_file.py”, line 22, in export_to_files
write_document_file(frappe.get_doc(record[0], record[1]), record_module, create_init=create_init)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/export_file.py”, line 39, in write_document_file
folder = create_folder(module, doc.doctype, doc.name, create_init)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/export_file.py”, line 59, in create_folder
module_path = get_module_path(module)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/init.py”, line 29, in get_module_path
return frappe.get_module_path(module)
File “/home/frappe/frappe-bench/apps/frappe/frappe/init.py”, line 614, in get_module_path
return get_pymodule_path(local.module_app[module] + “.” + module, *joins)
KeyError: u’retirement’

Traceback (innermost last):
File “/home/frappe/frappe-bench/apps/frappe/frappe/app.py”, line 57, in application
response = frappe.handler.handle()
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 19, in handle
execute_cmd(cmd)
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 36, in execute_cmd
ret = frappe.call(method, **frappe.form_dict)
File “/home/frappe/frappe-bench/apps/frappe/frappe/init.py”, line 805, in call
return fn(*args, **newargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/desk/form/save.py”, line 18, in savedocs
doc.save()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 259, in save
self.run_post_save_methods()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 635, in run_post_save_methods
self.run_method(“on_update”)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 579, in run_method
return Document.hook(fn)(self, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 735, in composer
return composed(self, method, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 718, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 573, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 130, in on_update
self.export_doc()
File “/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 196, in export_doc
export_to_files(record_list=[[‘DocType’, self.name]])
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/export_file.py”, line 22, in export_to_files
write_document_file(frappe.get_doc(record[0], record[1]), record_module, create_init=create_init)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/export_file.py”, line 39, in write_document_file
folder = create_folder(module, doc.doctype, doc.name, create_init)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/export_file.py”, line 59, in create_folder
module_path = get_module_path(module)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/init.py”, line 29, in get_module_path
return frappe.get_module_path(module)
File “/home/frappe/frappe-bench/apps/frappe/frappe/init.py”, line 614, in get_module_path
return get_pymodule_path(local.module_app[module] + “.” + module, *joins)
KeyError: u’retirement’

Any help?

Thank you

Is there a module named “retirement” that you have made?

Hello vjFaLk

I have created docType called Retirement using developer module on web

is that the right way or is there any tutorial to do this?

Regards,
Ian Manyama

When you create a DocType, you assign a Module to it as well, you’ll need to create a new Module or add it to an existing module.

Hello vjFaLk,

Thank you i have solved this problem with your help, but can you help how to make a module visible on desktop?

Regards,
Ian Manyama

Add it to desktop.py in config folder. Like here: https://github.com/frappe/frappe/blob/develop/frappe/config/desktop.py

Hello vjFaLk

I have added as instructed by still i can not see the icon on my desktop, below is content of my desktop.py file
from future import unicode_literals
from frappe import _

def get_data():
return [
{
“module_name”: “Accounts”,
“color”: “#3498db”,
“icon”: “octicon octicon-repo”,
“type”: “module”
},
{
“module_name”: “Retirement”,
“color”: “#3498db”,
“icon”: “octicon octicon-repo”,
“type”: “module”
},
{
“module_name”: “Stock”,
“color”: “#f39c12”,
“icon”: “icon-truck”,
“icon”: “octicon octicon-package”,
“type”: “module”
},
{
“module_name”: “CRM”,
“color”: “#EF4DB6”,
“icon”: “octicon octicon-broadcast”,
“type”: “module”
},
{
“module_name”: “Selling”,
“color”: “#1abc9c”,
“icon”: “icon-tag”,
“icon”: “octicon octicon-tag”,
“type”: “module”
},
{…

Regards,
Ian Manyama

Can you run bench migrate?

Hello vjFaLk

Thank you very much after running bench migrate now i can see icon on desktop

regards,
Ian Manyama

I’d recommend creating a desktop.py in your custom app and adding an entry in there to keep the Frappé / ERPNext code clean.

Hello vjFaLk

How do i create another app?

Regards,
Ian Manyama

bench new-app [app-name]

Refer to the tutorial : https://frappe.github.io/frappe/user/en/tutorial/new-app.html

We highly recommend writing custom code in separate apps.