After a lot of searching stuff, I found a solution I did override the read_group method:
@api.model
def read_group(self,
domain,
fields,
groupby,
offset=0,
limit=None,
orderby=False,
lazy=True):
""" Override read_group to always display all states. """
if groupby and groupby[0] == "state":
# Default result structure
states = [('new', _('New')), ('assign', _('Assigned')),
('evaluate', _('Evaluating')), ('done', _('Done')),
('cancel', _('Cancel'))]
read_group_all_states = [{
'__context': {
'group_by': groupby[1:]
},
'__domain':
domain + [('state', '=', state_value)],
'state':
state_value,
'state_count':
0,
} for state_value, state_name in states]
# Get standard results
read_group_res = super(Maintenance, self).read_group(
domain,
fields,
groupby,
offset=offset,
limit=limit,
orderby=orderby)
# Update standard results with default results
result = []
for state_value, state_name in states:
res = filter(lambda x: x['state'] == state_value,
read_group_res)
if not res:
res = filter(lambda x: x['state'] == state_value,
read_group_all_states)
res[0]['state'] = [state_value, state_name]
result.append(res[0])
return result
else:
return super(Maintenance, self).read_group(
domain,
fields,
groupby,
offset=offset,
limit=limit,
orderby=orderby)