diff --git a/addons/website_slides/models/res_partner.py b/addons/website_slides/models/res_partner.py
index 54fd52e96d4..7787e7d3b70 100644
--- a/addons/website_slides/models/res_partner.py
+++ b/addons/website_slides/models/res_partner.py
@@ -57,7 +57,15 @@ class ResPartner(models.Model):
partner.slide_channel_company_count = 0
def action_view_courses(self):
- action = self.env["ir.actions.actions"]._for_xml_id("website_slides.slide_channel_action_overview")
+ """ View partners courses. In singleton mode, return courses followed
+ by all its contacts (if company) or by himself (if not a company).
+ Otherwise simply set a domain on required partners. """
+ action = self.env["ir.actions.actions"]._for_xml_id("website_slides.slide_channel_partner_action")
action['name'] = _('Followed Courses')
- action['domain'] = ['|', ('partner_ids', 'in', self.ids), ('partner_ids', 'in', self.child_ids.ids)]
+ if len(self) == 1 and self.is_company:
+ action['domain'] = [('partner_id', 'in', self.child_ids.ids)]
+ elif len(self) == 1:
+ action['context'] = {'search_default_partner_id': self.id}
+ else:
+ action['domain'] = [('partner_id', 'in', self.ids)]
return action
diff --git a/addons/website_slides/models/slide_channel.py b/addons/website_slides/models/slide_channel.py
index 52568a5415d..60e74c019b6 100644
--- a/addons/website_slides/models/slide_channel.py
+++ b/addons/website_slides/models/slide_channel.py
@@ -26,6 +26,12 @@ class ChannelUsersRelation(models.Model):
completed_slides_count = fields.Integer('# Completed Slides')
partner_id = fields.Many2one('res.partner', index=True, required=True, ondelete='cascade')
partner_email = fields.Char(related='partner_id.email', readonly=True)
+ # channel-related information (for UX purpose)
+ channel_user_id = fields.Many2one('res.users', string='Responsible', related='channel_id.user_id')
+ channel_type = fields.Selection(related='channel_id.channel_type')
+ channel_visibility = fields.Selection(related='channel_id.visibility')
+ channel_enroll = fields.Selection(related='channel_id.enroll')
+ channel_website_id = fields.Many2one('website', string='Website', related='channel_id.website_id')
def _recompute_completion(self):
read_group_res = self.env['slide.slide.partner'].sudo().read_group(
@@ -517,21 +523,22 @@ class Channel(models.Model):
# Business / Actions
# ---------------------------------------------------------
- def action_redirect_to_members(self, state=None):
+ def action_redirect_to_members(self, completed=False):
+ """ Redirects to attendees of the course. If completed is True, a filter
+ will be added in action that will display only attendees who have completed
+ the course. """
action = self.env["ir.actions.actions"]._for_xml_id("website_slides.slide_channel_partner_action")
- action['domain'] = [('channel_id', 'in', self.ids)]
+ action_ctx = {'active_test': False}
+ if completed:
+ action_ctx['search_default_filter_completed'] = 1
if len(self) == 1:
action['display_name'] = _('Attendees of %s', self.name)
- action['context'] = {'active_test': False, 'default_channel_id': self.id}
- if state:
- action['domain'] += [('completed', '=', state == 'completed')]
+ action_ctx['search_default_channel_id'] = self.id
+ action['context'] = action_ctx
return action
- def action_redirect_to_running_members(self):
- return self.action_redirect_to_members('running')
-
def action_redirect_to_done_members(self):
- return self.action_redirect_to_members('completed')
+ return self.action_redirect_to_members(completed=True)
def action_channel_invite(self):
self.ensure_one()
diff --git a/addons/website_slides/views/slide_channel_partner_views.xml b/addons/website_slides/views/slide_channel_partner_views.xml
index 8b88417d96b..1ea66f1ef0d 100644
--- a/addons/website_slides/views/slide_channel_partner_views.xml
+++ b/addons/website_slides/views/slide_channel_partner_views.xml
@@ -9,6 +9,11 @@
+
+
+
+
+
@@ -18,21 +23,71 @@
slide.channel.partner
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ slide.channel.partner.view.kanban
+ slide.channel.partner
+
+
+
+
+
+
+
+
+
+
+
Attendees
slide.channel.partner
- tree,form
+ tree,form,kanban
+
+
+ Attendees
+ slide.channel.partner
+ tree,kanban
+
+ {'search_default_groupby_channel': 1}
+
+
diff --git a/addons/website_slides/views/website_slides_menu_views.xml b/addons/website_slides/views/website_slides_menu_views.xml
index 46395cc78b7..bc5a0a81220 100644
--- a/addons/website_slides/views/website_slides_menu_views.xml
+++ b/addons/website_slides/views/website_slides_menu_views.xml
@@ -50,15 +50,20 @@
parent="website_slides_menu_report"
sequence="2"
action="slide_slide_action_report"/>
+
diff --git a/addons/website_slides_forum/views/website_slides_menu_views.xml b/addons/website_slides_forum/views/website_slides_menu_views.xml
index e3a8b9ddfa7..91a3f656b13 100644
--- a/addons/website_slides_forum/views/website_slides_menu_views.xml
+++ b/addons/website_slides_forum/views/website_slides_menu_views.xml
@@ -18,6 +18,6 @@