diff --git a/addons/survey/models/survey_survey.py b/addons/survey/models/survey_survey.py index c49aa846de4..deb6978d0f7 100644 --- a/addons/survey/models/survey_survey.py +++ b/addons/survey/models/survey_survey.py @@ -70,6 +70,7 @@ class Survey(models.Model): invite_count = fields.Integer("Invite", compute="_compute_survey_statistic") answer_count = fields.Integer("Started", compute="_compute_survey_statistic") answer_done_count = fields.Integer("Completed", compute="_compute_survey_statistic") + certified_count = fields.Integer("Certified", compute="_compute_certified_count") # scoring and certification fields scoring_type = fields.Selection([ @@ -119,6 +120,22 @@ class Survey(models.Model): for survey in self: survey.update(stat[survey.id]) + @api.depends('certificate', 'user_input_ids.quizz_passed', 'user_input_ids.test_entry') + def _compute_certified_count(self): + stat = dict((cid, 0) for cid in self.ids) + certificate_surveys = self.filtered(lambda survey: survey.certificate) + if certificate_surveys: + read_group_res = self.env['survey.user_input'].read_group( + [('survey_id', 'in', certificate_surveys.ids), ('test_entry', '!=', True), ('quizz_passed', '=', True)], + [], + ['survey_id'] + ) + for item in read_group_res: + stat[item['survey_id'][0]] += item['survey_id_count'] + + for survey in self: + survey.certified_count = stat.get(survey.id, 0) + def _compute_survey_url(self): """ Computes a public URL for the survey """ base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') @@ -503,6 +520,16 @@ class Survey(models.Model): action['context'] = ctx return action + @api.multi + def action_survey_user_input_certified(self): + action_rec = self.env.ref('survey.action_survey_user_input_notest') + action = action_rec.read()[0] + ctx = dict(self.env.context) + ctx.update({'search_default_survey_id': self.ids[0], + 'search_default_quizz_passed': 1}) + action['context'] = ctx + return action + @api.multi def action_survey_user_input_invite(self): action_rec = self.env.ref('survey.action_survey_user_input_notest') diff --git a/addons/survey/views/survey_survey_views.xml b/addons/survey/views/survey_survey_views.xml index 35833af5fef..43a7a44c26c 100644 --- a/addons/survey/views/survey_survey_views.xml +++ b/addons/survey/views/survey_survey_views.xml @@ -24,6 +24,13 @@ icon="fa-envelope-o"> +