From 0b43747a4bdf549e5f4770662b5db523ebc04e89 Mon Sep 17 00:00:00 2001 From: Patrick Hoste Date: Wed, 17 Jun 2020 13:21:50 +0000 Subject: [PATCH] [IMP] website_slides: add partner completed course filter PURPOSE Before this commit, it was possible to send an email to all attendees only. After this commit, it will be possible to send an email to attendees that completed the course. SPECIFICATION Adds a searchable o2m field in the res.partner model to find all the completed courses linked to that partner. LINKS Task ID : 2216352 PR : #49592 --- .../views/slide_channel_views.xml | 26 +++++++------- addons/website_slides/models/res_partner.py | 14 ++++++++ .../static/src/scss/slide_views.scss | 5 +++ .../views/slide_channel_views.xml | 34 +++++++++++-------- 4 files changed, 51 insertions(+), 28 deletions(-) diff --git a/addons/mass_mailing_slides/views/slide_channel_views.xml b/addons/mass_mailing_slides/views/slide_channel_views.xml index 9b7f35b202c..66265fa222c 100644 --- a/addons/mass_mailing_slides/views/slide_channel_views.xml +++ b/addons/mass_mailing_slides/views/slide_channel_views.xml @@ -5,16 +5,11 @@ slide.channel - - - + @@ -23,10 +18,13 @@ slide.channel - - - Mail Attendees - + + diff --git a/addons/website_slides/models/res_partner.py b/addons/website_slides/models/res_partner.py index 7f3aaaf9ed2..541947c9035 100644 --- a/addons/website_slides/models/res_partner.py +++ b/addons/website_slides/models/res_partner.py @@ -10,6 +10,9 @@ class ResPartner(models.Model): slide_channel_ids = fields.Many2many( 'slide.channel', 'slide_channel_partner', 'partner_id', 'channel_id', string='eLearning Courses', groups="website_slides.group_website_slides_officer") + slide_channel_completed_ids = fields.One2many( + 'slide.channel', string='Completed Courses', compute='_compute_slide_channel_completed_ids', + search='_search_slide_channel_completed_ids') slide_channel_count = fields.Integer( 'Course Count', compute='_compute_slide_channel_count', groups="website_slides.group_website_slides_officer") @@ -17,6 +20,17 @@ class ResPartner(models.Model): 'Company Course Count', compute='_compute_slide_channel_company_count', groups="website_slides.group_website_slides_officer") + def _compute_slide_channel_completed_ids(self): + for partner in self: + partner.slide_channel_completed_ids = self.env['slide.channel.partner'].search([ + ('partner_id', '=', partner.id), + ('completed', '=', True) + ]).mapped('channel_id') + + def _search_slide_channel_completed_ids(self, operator, value): + cp_done = self.env['slide.channel.partner'].search([('channel_id', operator, value), ('completed', '=', True)]) + return [('id', 'in', cp_done.partner_id.ids)] + @api.depends('is_company') def _compute_slide_channel_count(self): read_group_res = self.env['slide.channel.partner'].sudo().read_group( diff --git a/addons/website_slides/static/src/scss/slide_views.scss b/addons/website_slides/static/src/scss/slide_views.scss index 035f4699309..6afd73e9423 100644 --- a/addons/website_slides/static/src/scss/slide_views.scss +++ b/addons/website_slides/static/src/scss/slide_views.scss @@ -7,6 +7,11 @@ $o-kanban-large-record-width: 400px; .o_kanban_record { width: $o-kanban-large-record-width; } + .o_kanban_slides_card_manage_pane { + > div { + @include o-kanban-dashboard-dropdown-link; + } + } } table.o_section_list_view tr.o_data_row.o_is_section { diff --git a/addons/website_slides/views/slide_channel_views.xml b/addons/website_slides/views/slide_channel_views.xml index f207e36a50c..9637ffd2786 100644 --- a/addons/website_slides/views/slide_channel_views.xml +++ b/addons/website_slides/views/slide_channel_views.xml @@ -214,20 +214,26 @@ -