Odoo Help


IndexError: list index out of range

Abayomi Olatidoye
on 9/28/16, 8:20 AM 1,591 views

I get this error message when I try to run a report in odoo 8.

Traceback (most recent call last):

File "/opt/openerp-8.0/openerp/http.py", line 530, in _handle_exception return super(JsonRequest, self)._handle_exception(exception)

File "/opt/openerp-8.0/openerp/http.py", line 567, in dispatch result = self._call_function(**self.params)

File "/opt/openerp-8.0/openerp/http.py", line 303, in _call_function return checked_call(self.db, *args, **kwargs) File "/opt/openerp-8.0/openerp/service/model.py", line 113, in wrapper return f(dbname, *args, **kwargs)

File "/opt/openerp-8.0/openerp/http.py", line 300, in checked_call return self.endpoint(*a, **kw) File "/opt/openerp-8.0/openerp/http.py", line 796, in __call__ return self.method(*args, **kw)

File "/opt/openerp-8.0/openerp/http.py", line 396, in response_wrap response = f(*args, **kw)

File "/opt/openerp-8.0/openerp/addons/web/controllers/main.py", line 939, in call_button action = self._call_kw(model, method, args, {}) File "/opt/openerp-8.0/openerp/addons/web/controllers/main.py", line 927, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)

File "/opt/openerp-8.0/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs)

File "/opt/openerp-8.0/openerp/addons/bluspiral_sche/bluspiral_sche_report_wizard.py", line 23, in print_payroll_schedule_report data = self.read(cr, uid, ids)[0]

IndexError: list index out of range

My report wizard code is 

import time

from datetime import datetime

from dateutil import relativedelta

from openerp.osv import fields, osv

class ReportWizard(osv.osv_memory):

    _name = 'bluspiral.sche.schedule'

    _description = 'Cash Payroll Schedule'

    _columns = {

        'date_from': fields.date('Date From', required=True),

        'date_to': fields.date('Date To', required=True),


    _defaults = {

        'date_from': lambda *a: time.strftime('%Y-%m-01'),

        'date_to': lambda *a: str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10],


    def print_payroll_schedule_report(self, cr, uid, ids, context=None):

         if context is None:

             context = {}

         data = self.read(cr, uid, ids)[0]

         ids = []

         if context.get('active_id',False):


         datas = {

             'ids': context.get('active_ids', []),

             'model': 'bluspiral.report.template',

             'form': self.read(cr, uid, ids, context=context)[0]


         return self.pool['report'].get_action(

            cr, uid, [], 'bluspiral_sche.cash_report', data=datas, context=context




Bejaoui Souheil

--Bejaoui Souheil--
--Bejaoui Souheil--

Odoo developer,  functional and technical consultant


Bejaoui Souheil
On 9/28/16, 9:52 AM


Check the output type of this line "self.read(cr, uid, ids)[0]". It may return False or [].

To solve this replace it with this line:

data = isinstance(ids, type([])) and self.read(cr,uid, ids)[0] or self.read(cr,uid, ids)

Best regards.

Manxy thanks Bejaoui.

I got an error that says global name 'a' is not defined

Abayomi Olatidoye
on 9/28/16, 11:03 AM


I updated the answer.

Bejaoui Souheil
on 9/28/16, 11:06 AM

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: 9/28/16, 8:20 AM
Seen: 1591 times
Last updated: 9/28/16, 9:52 AM