Odoo Help


KeyError exception when set up ir.model.access.csv

Firman Azis Rauf
on 4/8/16, 9:57 PM 2,840 views

I was learning to create a custom module to Odoo using Odoo Development Essentials book by Daniel Reis.  I set up access rule permissions just like the examples in the book. I wonder what goes wrong on my module?

My ir.access.model.csv content is below:


The __openerp__.py looks like below:


# -*- coding: utf-8 -*-
    'name': "learn_todo",
    'summary': """ 
        Short (1 phrase/line) summary of the module's purpose, used as
         subtitle on modules listing or apps.openerp.com""",
     'description': """
         Long description of module's purpose """,
     'author': "Your Company",
     'website': "http://www.yourcompany.com",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml
# for the full list
     'category': 'Uncategorized',
     'version': '0.1',
# any module necessary for this one to work correctly
     'depends': ['mail'],
# always loaded
     'data': [
# only loaded in demonstration mode
    'demo': [

The error trace


Traceback (most recent call last):
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/http.py", line 537, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/http.py", line 574, in dispatch
    result = self._call_function(**self.params)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/http.py", line 310, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/http.py", line 307, in checked_call
    return self.endpoint(*a, **kw)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/http.py", line 803, in __call__
    return self.method(*args, **kw)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/http.py", line 403, in response_wrap
    response = f(*args, **kw)
  File "/Volumes/HFS/projects/odoo/github/odoo/addons/web/controllers/main.py", line 948, in call_button
    action = self._call_kw(model, method, args, {})
  File "/Volumes/HFS/projects/odoo/github/odoo/addons/web/controllers/main.py", line 936, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/addons/base/module/module.py", line 447, in button_immediate_install
    return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/addons/base/module/module.py", line 495, in _button_immediate_function
    registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/modules/registry.py", line 370, in new
    openerp.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/modules/loading.py", line 355, in load_modules
    loaded_modules, update_module)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/modules/loading.py", line 255, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/modules/loading.py", line 176, in load_module_graph
    _load_data(cr, module_name, idref, mode, kind='data')
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/modules/loading.py", line 118, in _load_data
    tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/tools/convert.py", line 895, in convert_file
    convert_csv_import(cr, module, pathname, fp.read(), idref, mode, noupdate)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/tools/convert.py", line 960, in convert_csv_import
    result, rows, warning_msg, dummy = registry[model].import_data(cr, uid, fields, datas,mode, module, noupdate, filename=fname_partial)
  File "/Volumes/HFS/projects/odoo/github/odoo/openerp/modules/registry.py", line 102, in __getitem__
    return self.models[model_name]
KeyError: u'learn'

Hello, Load csv file first.

Jignesh Mehta
on 4/9/16, 12:05 AM

Hi Jignesh, if you mean to put ir.model.access.csv first, it still get the same exception.

Firman Azis Rauf
on 4/9/16, 6:52 AM
Firman Azis Rauf
On 4/9/16, 7:15 AM

Ok I found the problem. I put my module in a folder named learn-todo. It should be learn_todo, using underscore instead of a dash.

Abhimanyu Kumar Gaur
On 11/21/16, 8:50 AM

Hello  Firman I  face same issue . 

I thik this issue come when we use dash (-) place of  underscore (_).  

your module name shoud have   underscore (_)  not dash (-)


module name------>Champion-Marketing -------------Incorrect

module name------>Champion_Marketing -------------Correct

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 4/8/16, 9:57 PM
Seen: 2840 times
Last updated: 11/21/16, 8:50 AM