[FIX] versioning: override read_group in Experiment to always display all Experiment states.

This commit is contained in:
Goffin Simon
2015-02-26 15:02:04 +01:00
parent faad625a45
commit f99cea5f69
+26 -3
View File
@@ -62,9 +62,31 @@ class Experiment(models.Model):
if not exp_ver.version_id.website_id.id == exp.website_id.id:
raise ValidationError('This experiment must have versions which are in the same website')
_group_by_full = {
'state': lambda *args, **kwargs: ([('running', 'Running'), ('paused', 'Paused'), ('ended', 'Ended')], dict())
}
def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False, lazy=True):
""" Override read_group to always display all states. """
if groupby and groupby[0] == "state":
# Default result structure
# states = self._get_state_list(cr, uid, context=context)
states = [('running', 'Running'), ('paused', 'Paused'), ('ended', 'Ended')]
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(Experiment, self).read_group(cr, uid, domain, fields, groupby, offset=offset, limit=limit, context=context, 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(Experiment, self).read_group(cr, uid, domain, fields, groupby, offset=offset, limit=limit, context=context, orderby=orderby)
@api.one
def _get_version_number(self):
@@ -127,6 +149,7 @@ class Experiment(models.Model):
self.env['google.management'].delete_an_experiment(exp.google_id, exp.website_id.id)
return super(Experiment, self).unlink()
@api.multi
def update_goals(self):
gm_obj = self.env['google.management']
goals_obj = self.env['website_version.goals']