diff --git a/addons/website_slides/data/slide_user_demo.xml b/addons/website_slides/data/slide_user_demo.xml index 80d87842323..cc8b45a6219 100644 --- a/addons/website_slides/data/slide_user_demo.xml +++ b/addons/website_slides/data/slide_user_demo.xml @@ -2,6 +2,15 @@ + + + + + + + + + @@ -78,6 +87,15 @@ + + + + + + + + + @@ -187,6 +205,10 @@ + + + + @@ -199,10 +221,7 @@ 1 - - - - + diff --git a/addons/website_slides/models/slide_channel.py b/addons/website_slides/models/slide_channel.py index fdda9b34b2d..402222f0e8b 100644 --- a/addons/website_slides/models/slide_channel.py +++ b/addons/website_slides/models/slide_channel.py @@ -34,6 +34,13 @@ class ChannelUsersRelation(models.Model): channel_enroll = fields.Selection(related='channel_id.enroll') channel_website_id = fields.Many2one('website', string='Website', related='channel_id.website_id') + _sql_constraints = [ + ('channel_partner_uniq', + 'unique(channel_id, partner_id)', + 'A partner membership to a channel must be unique!' + ), + ] + def _recompute_completion(self): read_group_res = self.env['slide.slide.partner'].sudo().read_group( ['&', '&', ('channel_id', 'in', self.mapped('channel_id').ids), diff --git a/addons/website_slides/models/slide_slide.py b/addons/website_slides/models/slide_slide.py index 74ada83cee0..7386cfc597b 100644 --- a/addons/website_slides/models/slide_slide.py +++ b/addons/website_slides/models/slide_slide.py @@ -36,6 +36,13 @@ class SlidePartnerRelation(models.Model): completed = fields.Boolean('Completed') quiz_attempts_count = fields.Integer('Quiz attempts count', default=0) + _sql_constraints = [ + ('slide_partner_uniq', + 'unique(slide_id, partner_id)', + 'A partner membership to a slide must be unique!' + ) + ] + @api.model_create_multi def create(self, vals_list): res = super().create(vals_list)