← Back to team overview

openerp-dev-web team mailing list archive

[Bug 700240] Re: [6.0-trunk] selecting 'Year', 'Month' etc causes python crash

 

** Changed in: openobject-client-web
       Status: Confirmed => Fix Released

-- 
You received this bug notification because you are a member of OpenERP
SA's Web Client R&D, which is a bug assignee.
https://bugs.launchpad.net/bugs/700240

Title:
  [6.0-trunk] selecting 'Year', 'Month' etc causes python crash

Status in OpenObject Web Client:
  Fix Released

Bug description:
  Using Firefox browser on Mac OSX. Using 'Sales Analysis', selecting 'Year', 'Month' etc gives the following python error:

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/CherryPy-3.1.2-py2.7.egg/cherrypy/_cprequest.py in respond(self=<cherrypy._cprequest.Request object>, path_info='/openerp/listgrid/get')
    604                     if self.handler:
    605                         self.stage = 'handler'
=>  606                         cherrypy.response.body = self.handler()
    607                     
    608                     self.stage = 'before_finalize'
global cherrypy = <module 'cherrypy' from '/opt/local/Library/Fram.../CherryPy-3.1.2-py2.7.egg/cherrypy/__init__.pyc'>, cherrypy.response = <cherrypy._ThreadLocalProxy object>, cherrypy.response.body = [], self = <cherrypy._cprequest.Request object>, self.handler = <cherrypy._cpdispatch.LateParamPageHandler object>
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/CherryPy-3.1.2-py2.7.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object>)
     23     def __call__(self):
     24         try:
=>   25             return self.callable(*self.args, **self.kwargs)
     26         except TypeError, x:
     27             test_callable_spec(self.callable, self.args, self.kwargs)
self = <cherrypy._cpdispatch.LateParamPageHandler object>, self.callable = <bound method Root.default of <openobject.controllers._root.Root object>>, self.args = ('openerp', 'listgrid', 'get'), self.kwargs = {'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...}
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/openobject/tools/_expose.py in func_wrapper(*args=(<openobject.controllers._root.Root object>, 'openerp', 'listgrid', 'get'), **kw={'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...})
    189                 raise cherrypy.HTTPError(405)
    190 
=>  191             res = func(*args, **kw)
    192             if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
    193                 cherrypy.response.headers['Content-Type'] = 'text/javascript'
global res = '/opt/local/Library/Frameworks/Python.framework/V....7.egg/openobject/widgets/templates/textarea.mako', func = <function default>, args = (<openobject.controllers._root.Root object>, 'openerp', 'listgrid', 'get'), kw = {'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...}
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/openobject/controllers/_root.py in default(self=<openobject.controllers._root.Root object>, *args=('openerp', 'listgrid', 'get'), **kw={'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...})
     86             request.handler = cherrypy.NotFound()
     87 
=>   88         return request.handler()
     89 
     90     def find_handler(self):
request = <cherrypy._ThreadLocalProxy object>, request.handler = <cherrypy._cpdispatch.LateParamPageHandler object>
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/CherryPy-3.1.2-py2.7.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object>)
     23     def __call__(self):
     24         try:
=>   25             return self.callable(*self.args, **self.kwargs)
     26         except TypeError, x:
     27             test_callable_spec(self.callable, self.args, self.kwargs)
self = <cherrypy._cpdispatch.LateParamPageHandler object>, self.callable = <function get>, self.args = (), self.kwargs = {'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...}
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/controllers/utils.py in wrapper(*args=(), **kw={'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...})
    118             # User is logged in; allow access
    119             clear_login_fields(kw)
=>  120             return fn(*args, **kw)
    121         else:
    122             action = kw.get('login_action', '')
fn = <bound method List.get of <openerp.controllers.listgrid.List object>>, args = (), kw = {'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...}
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/openobject/tools/_expose.py in func_wrapper(*args=(<openerp.controllers.listgrid.List object>,), **kw={'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...})
    189                 raise cherrypy.HTTPError(405)
    190 
=>  191             res = func(*args, **kw)
    192             if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
    193                 cherrypy.response.headers['Content-Type'] = 'text/javascript'
global res = '/opt/local/Library/Frameworks/Python.framework/V....7.egg/openobject/widgets/templates/textarea.mako', func = <function get>, args = (<openerp.controllers.listgrid.List object>,), kw = {'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...}
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/controllers/listgrid.py in get(self=<openerp.controllers.listgrid.List object>, **kw={'_terp_context': "{'lang': u'en_GB', 'tz': u'Europe/London', 'acti...716, 4720, 4717, 4714, 4713], 'active_id': False}", '_terp_count': '1', '_terp_domain': '[]', '_terp_editable': 'True', '_terp_filter_domain': '[]', '_terp_filters_context': '', '_terp_group_by_ctx': '[]', '_terp_id': 'False', '_terp_ids': '[4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759,..., 4719, 4715, 4718, 4716, 4720, 4717, 4714, 4713]', '_terp_limit': '-1', ...})
    288             frm = res['form']
    289         else:
=>  290             frm = form.Form().create_form(params)
    291 
    292         if params.view_type == 'graph':
frm undefined, global form = <module 'openerp.controllers.form' from '/opt/lo...2-py2.7.egg/addons/openerp/controllers/form.pyc'>, form.Form = <class 'openerp.controllers.form.Form'>, ).create_form = <unbound method Form.create_form>, params = {'_terp_offset': 0, '_terp_filters_context': '',...source': '_terp_list', '_terp_filter_domain': []}
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/controllers/form.py in create_form(self=<openerp.controllers.form.Form object>, params={'_terp_offset': 0, '_terp_filters_context': '',...source': '_terp_list', '_terp_filter_domain': []}, tg_errors=None)
    193         params.view_type = params.view_type or params.view_mode[0]
    194 
=>  195         return tw.form_view.ViewForm(params, name="view_form", action="/openerp/form/save")
    196 
    197     @expose(template="/openerp/controllers/templates/form.mako")
global tw = <module 'openerp.widgets' from '/opt/local/Libra...2-py2.7.egg/addons/openerp/widgets/__init__.pyc'>, tw.form_view = <module 'openerp.widgets.form_view' from '/opt/l...-py2.7.egg/addons/openerp/widgets/form_view.pyc'>, tw.form_view.ViewForm = <class 'openerp.widgets.form_view.ViewForm'>, params = {'_terp_offset': 0, '_terp_filters_context': '',...source': '_terp_list', '_terp_filter_domain': []}, name undefined, action undefined
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/widgets/form_view.py in __init__(self=ViewForm, params={'_terp_offset': 0, '_terp_filters_context': '',...source': '_terp_list', '_terp_filter_domain': []}, **kw={'action': '/openerp/form/save', 'name': 'view_form'})
     96             
     97         self.screen = Screen(prefix='', hastoolbar=True, hassubmenu=True, editable=editable, readonly=readonly,
=>   98                              selectable=params.selectable or 2)
     99         
    100         if self.screen.widget and self.screen.view_type in ['form', 'tree']:
selectable undefined, params = {'_terp_offset': 0, '_terp_filters_context': '',...source': '_terp_list', '_terp_filter_domain': []}, params.selectable = None
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/widgets/screen.py in __init__(self=Screen, params={'_terp_offset': 0, '_terp_filters_context': '',...source': '_terp_list', '_terp_filter_domain': []}, prefix='', name='', views_preloaded={}, hastoolbar=True, hassubmenu=True, editable=True, readonly=False, selectable=2, nolinks=1, **kw={})
    109         self.kalendar           = params.kalendar
    110         if self.view_mode:
=>  111             self.add_view_id(self.view_id, self.view_type)
    112 
    113     def add_view_id(self, view_id, view_type):
self = Screen, self.add_view_id = <bound method Screen.add_view_id of Screen>, self.view_id = 623, self.view_type = 'tree'
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/widgets/screen.py in add_view_id(self=Screen, view_id=623, view_type='tree')
    123             view = cache.fields_view_get(self.model, view_id, view_type, ctx, self.hastoolbar, self.hassubmenu)
    124 
=>  125         self.add_view(view, view_type)
    126 
    127     def add_view(self, view, view_type='form'):
self = Screen, self.add_view = <bound method Screen.add_view of Screen>, view = {'arch': u'<tree string="Sales Analysis">\n <...c_account_id" invisible="1"/>\n </tree>', 'field_parent': False, 'fields': {'analytic_account_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'analytic_account_id', 'readonly': True, 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one', 'views': {}}, 'categ_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'categ_id', 'readonly': True, 'relation': u'product.category', 'selectable': True, 'string': u'Category of Product', 'type': u'many2one', 'views': {}}, 'company_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'company_id', 'readonly': True, 'relation': u'res.company', 'selectable': True, 'string': u'Company', 'type': u'many2one', 'views': {}}, 'date': {'invisible': u'1', 'name': u'date', 'readonly': True, 'selectable': True, 'string': u'Date Order', 'type': u'date', 'views': {}}, 'day': {'invisible': u'1', 'name': u'day', 'readonly': True, 'selectable': True, 'size': 128, 'string': u'Day', 'type': u'char', 'views': {}}, 'delay': {'digits': (16, 2), 'name': u'delay', 'readonly': True, 'selectable': True, 'string': u'Commitment Delay', 'sum': u'Commitment Delay', 'type': u'float', 'views': {}}, 'month': {'invisible': u'1', 'name': u'month', 'readonly': True, 'selectable': True, 'selection': [(u'01', u'January'), (u'02', u'February'), (u'03', u'March'), (u'04', u'April'), (u'05', u'May'), (u'06', u'June'), (u'07', u'July'), (u'08', u'August'), (u'09', u'September'), (u'10', u'October'), (u'11', u'November'), (u'12', u'December')], 'string': u'Month', 'type': u'selection', 'views': {}}, 'nbr': {'name': u'nbr', 'readonly': True, 'selectable': True, 'string': u'# of Lines', 'sum': u'# of Lines', 'type': u'integer', 'views': {}}, 'partner_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'partner_id', 'readonly': True, 'relation': u'res.partner', 'selectable': True, 'string': u'Partner', 'type': u'many2one', 'views': {}}, 'price_total': {'name': u'price_total', 'readonly': True, 'selectable': True, 'string': u'Total Price', 'sum': u'Total Price', 'type': u'float', 'views': {}}, ...}, 'model': u'sale.report', 'name': u'sale.report.tree', 'toolbar': {'action': [], 'print': [], 'relate': []}, 'type': u'tree', 'view_id': 623}, view_type = 'tree'
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/widgets/screen.py in add_view(self=Screen, view={'arch': u'<tree string="Sales Analysis">\n <...c_account_id" invisible="1"/>\n </tree>', 'field_parent': False, 'fields': {'analytic_account_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'analytic_account_id', 'readonly': True, 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one', 'views': {}}, 'categ_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'categ_id', 'readonly': True, 'relation': u'product.category', 'selectable': True, 'string': u'Category of Product', 'type': u'many2one', 'views': {}}, 'company_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'company_id', 'readonly': True, 'relation': u'res.company', 'selectable': True, 'string': u'Company', 'type': u'many2one', 'views': {}}, 'date': {'invisible': u'1', 'name': u'date', 'readonly': True, 'selectable': True, 'string': u'Date Order', 'type': u'date', 'views': {}}, 'day': {'invisible': u'1', 'name': u'day', 'readonly': True, 'selectable': True, 'size': 128, 'string': u'Day', 'type': u'char', 'views': {}}, 'delay': {'digits': (16, 2), 'name': u'delay', 'readonly': True, 'selectable': True, 'string': u'Commitment Delay', 'sum': u'Commitment Delay', 'type': u'float', 'views': {}}, 'month': {'invisible': u'1', 'name': u'month', 'readonly': True, 'selectable': True, 'selection': [(u'01', u'January'), (u'02', u'February'), (u'03', u'March'), (u'04', u'April'), (u'05', u'May'), (u'06', u'June'), (u'07', u'July'), (u'08', u'August'), (u'09', u'September'), (u'10', u'October'), (u'11', u'November'), (u'12', u'December')], 'string': u'Month', 'type': u'selection', 'views': {}}, 'nbr': {'name': u'nbr', 'readonly': True, 'selectable': True, 'string': u'# of Lines', 'sum': u'# of Lines', 'type': u'integer', 'views': {}}, 'partner_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'partner_id', 'readonly': True, 'relation': u'res.partner', 'selectable': True, 'string': u'Partner', 'type': u'many2one', 'views': {}}, 'price_total': {'name': u'price_total', 'readonly': True, 'selectable': True, 'string': u'Total Price', 'sum': u'Total Price', 'type': u'float', 'views': {}}, ...}, 'model': u'sale.report', 'name': u'sale.report.tree', 'toolbar': {'action': [], 'print': [], 'relate': []}, 'type': u'tree', 'view_id': 623}, view_type='tree')
    131         
    132         from _views import get_view_widget
=>  133         self.widget = get_view_widget(view_type, self)
    134 
    135         self.string = (self.widget or '') and self.widget.string
self = Screen, self.widget = None, get_view_widget = <function get_view_widget>, view_type = 'tree'
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/widgets/_views.py in get_view_widget(kind='tree', screen=Screen)
    135         raise Exception("view '%s' not supported." % kind)
    136 
=>  137     return view(screen)
    138 
    139 def get_registered_views():
view = <openerp.widgets._views.ListView object>, screen = Screen
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/widgets/_views.py in __call__(self=<openerp.widgets._views.ListView object>, screen=Screen)
    102                                         offset=screen.offset, limit=screen.limit,
    103                                         count=screen.count, nolinks=screen.link,
=>  104                                         group_by_ctx=screen.group_by_ctx)
    105         else:
    106             widget = listgrid.List(screen.name or '_terp_list',
group_by_ctx undefined, screen = Screen, screen.group_by_ctx = []
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/widgets/listgroup.py in __init__(self=ListGroup, name='_terp_list', model='sale.report', view={'arch': u'<tree string="Sales Analysis">\n <...c_account_id" invisible="1"/>\n </tree>', 'field_parent': False, 'fields': {'analytic_account_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'analytic_account_id', 'readonly': True, 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one', 'views': {}}, 'categ_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'categ_id', 'readonly': True, 'relation': u'product.category', 'selectable': True, 'string': u'Category of Product', 'type': u'many2one', 'views': {}}, 'company_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'company_id', 'readonly': True, 'relation': u'res.company', 'selectable': True, 'string': u'Company', 'type': u'many2one', 'views': {}}, 'date': {'invisible': u'1', 'name': u'date', 'readonly': True, 'selectable': True, 'string': u'Date Order', 'type': u'date', 'views': {}}, 'day': {'invisible': u'1', 'name': u'day', 'readonly': True, 'selectable': True, 'size': 128, 'string': u'Day', 'type': u'char', 'views': {}}, 'delay': {'digits': (16, 2), 'name': u'delay', 'readonly': True, 'selectable': True, 'string': u'Commitment Delay', 'sum': u'Commitment Delay', 'type': u'float', 'views': {}}, 'month': {'invisible': u'1', 'name': u'month', 'readonly': True, 'selectable': True, 'selection': [(u'01', u'January'), (u'02', u'February'), (u'03', u'March'), (u'04', u'April'), (u'05', u'May'), (u'06', u'June'), (u'07', u'July'), (u'08', u'August'), (u'09', u'September'), (u'10', u'October'), (u'11', u'November'), (u'12', u'December')], 'string': u'Month', 'type': u'selection', 'views': {}}, 'nbr': {'name': u'nbr', 'readonly': True, 'selectable': True, 'string': u'# of Lines', 'sum': u'# of Lines', 'type': u'integer', 'views': {}}, 'partner_id': {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'partner_id', 'readonly': True, 'relation': u'res.partner', 'selectable': True, 'string': u'Partner', 'type': u'many2one', 'views': {}}, 'price_total': {'name': u'price_total', 'readonly': True, 'selectable': True, 'string': u'Total Price', 'sum': u'Total Price', 'type': u'float', 'views': {}}, ...}, 'model': u'sale.report', 'name': u'sale.report.tree', 'toolbar': {'action': [], 'print': [], 'relate': []}, 'type': u'tree', 'view_id': 623}, ids=None, domain=[('date', '<=', False), ('date', '>=', False), ('date', '<=', False), ('date', '>=', False)], context={'active_id': False, 'active_ids': [4757, 4755, 4761, 4763, 4765, 4758, 4764, 4759, 4762, 4756, 4766, 4760, 4747, 4753, 4746, 4750, 4749, 4752, 4751, 4754, ...], 'active_model': False, 'client': 'web', 'group_by_no_leaf': 1, 'lang': u'en_GB', 'search_view': 625, 'tz': u'Europe/London'}, **kw={'count': 1, 'editable': True, 'group_by_ctx': [], 'limit': -1, 'nolinks': 1, 'offset': 0, 'selectable': 2, 'view_mode': ['tree', 'graph']})
    194             self.group_by_ctx = self.context.get('group_by')
    195 
=>  196         self.group_by_ctx, self.hiddens, self.headers = parse(self.group_by_ctx, self.hiddens, self.headers, None, self.group_by_ctx)
    197 
    198         self.grp_records = proxy.read_group(self.context.get('__domain', []) + (self.domain or []),
self = ListGroup, self.group_by_ctx = None, self.hiddens = [(u'date', {'invisible': u'1', 'name': u'date', 'readonly': True, 'selectable': True, 'string': u'Date Order', 'type': u'date', 'views': {}}), (u'user_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'user_id', 'readonly': True, 'relation': u'res.users', 'selectable': True, 'string': u'Salesman', 'type': u'many2one', 'views': {}}), (u'year', {'invisible': u'1', 'name': u'year', 'readonly': True, 'selectable': True, 'size': 4, 'string': u'Year', 'type': u'char', 'views': {}}), (u'day', {'invisible': u'1', 'name': u'day', 'readonly': True, 'selectable': True, 'size': 128, 'string': u'Day', 'type': u'char', 'views': {}}), (u'month', {'invisible': u'1', 'name': u'month', 'readonly': True, 'selectable': True, 'selection': [(u'01', u'January'), (u'02', u'February'), (u'03', u'March'), (u'04', u'April'), (u'05', u'May'), (u'06', u'June'), (u'07', u'July'), (u'08', u'August'), (u'09', u'September'), (u'10', u'October'), (u'11', u'November'), (u'12', u'December')], 'string': u'Month', 'type': u'selection', 'views': {}}), (u'shop_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'shop_id', 'readonly': True, 'relation': u'sale.shop', 'selectable': True, 'string': u'Shop', 'type': u'many2one', 'views': {}}), (u'company_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'company_id', 'readonly': True, 'relation': u'res.company', 'selectable': True, 'string': u'Company', 'type': u'many2one', 'views': {}}), (u'partner_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'partner_id', 'readonly': True, 'relation': u'res.partner', 'selectable': True, 'string': u'Partner', 'type': u'many2one', 'views': {}}), (u'product_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'product_id', 'readonly': True, 'relation': u'product.product', 'selectable': True, 'string': u'Product', 'type': u'many2one', 'views': {}}), (u'categ_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'categ_id', 'readonly': True, 'relation': u'product.category', 'selectable': True, 'string': u'Category of Product', 'type': u'many2one', 'views': {}}), (u'uom_name', {'invisible': u"not context.get('set_visible',False)", 'name': u'uom_name', 'readonly': True, 'selectable': True, 'size': 128, 'string': u'Reference UoM', 'type': u'char', 'views': {}}), (u'state', {'invisible': u'1', 'name': u'state', 'readonly': True, 'selectable': True, 'selection': [(u'draft', u'Quotation'), (u'waiting_date', u'Waiting Schedule'), (u'manual', u'Manual In Progress'), (u'progress', u'In Progress'), (u'shipping_except', u'Shipping Exception'), (u'invoice_except', u'Invoice Exception'), (u'done', u'Done'), (u'cancel', u'Cancelled')], 'string': u'Order State', 'type': u'selection', 'views': {}}), (u'analytic_account_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'analytic_account_id', 'readonly': True, 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one', 'views': {}})], self.headers = [(u'nbr', {'name': u'nbr', 'readonly': True, 'selectable': True, 'string': u'# of Lines', 'sum': u'# of Lines', 'type': u'integer', 'views': {}}), (u'product_uom_qty', {'name': u'product_uom_qty', 'readonly': True, 'selectable': True, 'string': u'# of Qty', 'sum': u'# of Qty', 'type': u'float', 'views': {}}), (u'shipped_qty_1', {'name': u'shipped_qty_1', 'readonly': True, 'selectable': True, 'string': u'Shipped Qty', 'sum': u'Shipped Qty', 'type': u'integer', 'views': {}}), (u'price_total', {'name': u'price_total', 'readonly': True, 'selectable': True, 'string': u'Total Price', 'sum': u'Total Price', 'type': u'float', 'views': {}}), (u'delay', {'digits': (16, 2), 'name': u'delay', 'readonly': True, 'selectable': True, 'string': u'Commitment Delay', 'sum': u'Commitment Delay', 'type': u'float', 'views': {}})], global parse = <function parse>, builtin None = None
 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/openerp_web-6.0.0_rc2-py2.7.egg/addons/openerp/widgets/listgroup.py in parse(group_by=None, hiddens=[(u'date', {'invisible': u'1', 'name': u'date', 'readonly': True, 'selectable': True, 'string': u'Date Order', 'type': u'date', 'views': {}}), (u'user_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'user_id', 'readonly': True, 'relation': u'res.users', 'selectable': True, 'string': u'Salesman', 'type': u'many2one', 'views': {}}), (u'year', {'invisible': u'1', 'name': u'year', 'readonly': True, 'selectable': True, 'size': 4, 'string': u'Year', 'type': u'char', 'views': {}}), (u'day', {'invisible': u'1', 'name': u'day', 'readonly': True, 'selectable': True, 'size': 128, 'string': u'Day', 'type': u'char', 'views': {}}), (u'month', {'invisible': u'1', 'name': u'month', 'readonly': True, 'selectable': True, 'selection': [(u'01', u'January'), (u'02', u'February'), (u'03', u'March'), (u'04', u'April'), (u'05', u'May'), (u'06', u'June'), (u'07', u'July'), (u'08', u'August'), (u'09', u'September'), (u'10', u'October'), (u'11', u'November'), (u'12', u'December')], 'string': u'Month', 'type': u'selection', 'views': {}}), (u'shop_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'shop_id', 'readonly': True, 'relation': u'sale.shop', 'selectable': True, 'string': u'Shop', 'type': u'many2one', 'views': {}}), (u'company_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'company_id', 'readonly': True, 'relation': u'res.company', 'selectable': True, 'string': u'Company', 'type': u'many2one', 'views': {}}), (u'partner_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'partner_id', 'readonly': True, 'relation': u'res.partner', 'selectable': True, 'string': u'Partner', 'type': u'many2one', 'views': {}}), (u'product_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'product_id', 'readonly': True, 'relation': u'product.product', 'selectable': True, 'string': u'Product', 'type': u'many2one', 'views': {}}), (u'categ_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'categ_id', 'readonly': True, 'relation': u'product.category', 'selectable': True, 'string': u'Category of Product', 'type': u'many2one', 'views': {}}), (u'uom_name', {'invisible': u"not context.get('set_visible',False)", 'name': u'uom_name', 'readonly': True, 'selectable': True, 'size': 128, 'string': u'Reference UoM', 'type': u'char', 'views': {}}), (u'state', {'invisible': u'1', 'name': u'state', 'readonly': True, 'selectable': True, 'selection': [(u'draft', u'Quotation'), (u'waiting_date', u'Waiting Schedule'), (u'manual', u'Manual In Progress'), (u'progress', u'In Progress'), (u'shipping_except', u'Shipping Exception'), (u'invoice_except', u'Invoice Exception'), (u'done', u'Done'), (u'cancel', u'Cancelled')], 'string': u'Order State', 'type': u'selection', 'views': {}}), (u'analytic_account_id', {'context': {}, 'domain': [], 'invisible': u'1', 'name': u'analytic_account_id', 'readonly': True, 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one', 'views': {}})], headers=[(u'nbr', {'name': u'nbr', 'readonly': True, 'selectable': True, 'string': u'# of Lines', 'sum': u'# of Lines', 'type': u'integer', 'views': {}}), (u'product_uom_qty', {'name': u'product_uom_qty', 'readonly': True, 'selectable': True, 'string': u'# of Qty', 'sum': u'# of Qty', 'type': u'float', 'views': {}}), (u'shipped_qty_1', {'name': u'shipped_qty_1', 'readonly': True, 'selectable': True, 'string': u'Shipped Qty', 'sum': u'Shipped Qty', 'type': u'integer', 'views': {}}), (u'price_total', {'name': u'price_total', 'readonly': True, 'selectable': True, 'string': u'Total Price', 'sum': u'Total Price', 'type': u'float', 'views': {}}), (u'delay', {'digits': (16, 2), 'name': u'delay', 'readonly': True, 'selectable': True, 'string': u'Commitment Delay', 'sum': u'Commitment Delay', 'type': u'float', 'views': {}})], group_level=None, groups=None)
     45         group_by = group_by.split(',')
     46 
=>   47     for grp in range(len(group_by)):
     48         if 'group_' in group_by[grp]:
     49             if group_by[grp].count('group_') > 1:
grp undefined, builtin range = <built-in function range>, builtin len = <built-in function len>, group_by = None

<type 'exceptions.TypeError'>: object of type 'NoneType' has no len()
      args = ("object of type 'NoneType' has no len()",)
      message = "object of type 'NoneType' has no len()"