[FIX] versioning: override read_group in Experiment to always display all Experiment states.
This commit is contained in:
@@ -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']
|
||||
|
||||
Reference in New Issue
Block a user