diff options
| -rw-r--r-- | addons/website_slides/controllers/main.py | 2 | ||||
| -rw-r--r-- | addons/website_slides/models/slide_channel.py | 28 | ||||
| -rw-r--r-- | addons/website_slides/security/website_slides_security.xml | 2 | ||||
| -rw-r--r-- | addons/website_slides/tests/test_security.py | 10 |
4 files changed, 7 insertions, 35 deletions
diff --git a/addons/website_slides/controllers/main.py b/addons/website_slides/controllers/main.py index daa3dc4ba32..31502c33e5a 100644 --- a/addons/website_slides/controllers/main.py +++ b/addons/website_slides/controllers/main.py @@ -259,7 +259,7 @@ class WebsiteSlides(http.Controller): def slide_channel_join(self, channel_id): if request.website.is_public_user(): return {'error': 'public_user'} - joined = request.env['slide.channel'].browse(channel_id).action_add_member(state='confirmed') + joined = request.env['slide.channel'].browse(channel_id).action_add_member() if not joined: return {'error': 'join_done'} return joined.ids diff --git a/addons/website_slides/models/slide_channel.py b/addons/website_slides/models/slide_channel.py index 43dffcf31eb..64bd38a1b16 100644 --- a/addons/website_slides/models/slide_channel.py +++ b/addons/website_slides/models/slide_channel.py @@ -14,10 +14,6 @@ class ChannelUsersRelation(models.Model): _table = 'slide_channel_partner' channel_id = fields.Many2one('slide.channel', index=True, required=True) - state = fields.Selection([ - ('draft', 'Waiting confirmation'), - ('confirmed', 'Confirmed'), - ('canceled', 'Canceled')], default='draft', string='Member status') partner_id = fields.Many2one('res.partner', index=True, required=True) @@ -74,14 +70,10 @@ class Channel(models.Model): ('public', 'Public'), ('invite', 'Invite')], default='public', required=True) - # members and access partner_ids = fields.Many2many( 'res.partner', 'slide_channel_partner', 'channel_id', 'partner_id', - string='Members', help="All participants to the channel whatever their state.") - member_ids = fields.One2many( - comodel_name='res.partner', compute='_compute_member_ids', search='_search_member_ids', - string='Confirmed Members') - is_member = fields.Boolean(string='Is Member', compute='_compute_member_ids') + string='Members', help="All members of the channel.") + is_member = fields.Boolean(string='Is Member', compute='_compute_is_member') channel_partner_ids = fields.One2many('slide.channel.partner', 'channel_id', string='Members Information', groups='base.group_system') enroll_msg = fields.Html( 'Enroll Message', help="Message explaining the enroll process", @@ -107,11 +99,10 @@ class Channel(models.Model): limit=1, order=self._order_by_strategy[record.promote_strategy]) record.promoted_slide_id = slides and slides[0] or False - @api.depends('channel_partner_ids.partner_id', 'channel_partner_ids.state') + @api.depends('channel_partner_ids.partner_id') @api.model - def _compute_member_ids(self): + def _compute_is_member(self): channel_partners = self.env['slide.channel.partner'].sudo().search([ - ('state', '=', 'confirmed'), ('channel_id', 'in', self.ids), ]) result = dict() @@ -121,14 +112,6 @@ class Channel(models.Model): channel.valid_channel_partner_ids = result.get(channel.id, False) channel.is_member = self.env.user.partner_id.id in channel.valid_channel_partner_ids if channel.valid_channel_partner_ids else False - @api.model - def _search_member_ids(self, operator, operand): - assert operator != "not in", "Do not search with 'not in'" - members = self.env['slide.channel.partner'].sudo().search([ - ('state', '=', 'confirmed'), - ('partner_id', operator, operand)]) - return [('id', 'in', [m.channel_id.id for m in members])] - @api.depends('slide_ids.slide_type', 'slide_ids.website_published') def _count_presentations(self): result = dict.fromkeys(self.ids, dict()) @@ -191,8 +174,7 @@ class Channel(models.Model): # Ensure creator is member of its channel it is easier for him to manage it if vals.get('visibility') == 'invite' and not vals.get('channel_partner_ids'): vals['channel_partner_ids'] = [(0, 0, { - 'partner_id': self.env.user.partner_id.id, - 'state': 'confirmed', + 'partner_id': self.env.user.partner_id.id })] return super(Channel, self.with_context(mail_create_nosubscribe=True)).create(vals) diff --git a/addons/website_slides/security/website_slides_security.xml b/addons/website_slides/security/website_slides_security.xml index a3e00c1f7de..d3b54d240a1 100644 --- a/addons/website_slides/security/website_slides_security.xml +++ b/addons/website_slides/security/website_slides_security.xml @@ -38,7 +38,7 @@ <field name="model_id" ref="model_slide_slide"/> <field name="groups" eval="[(4, ref('base.group_public')), (4, ref('base.group_portal')), (4, ref('base.group_user'))]"/> <field name="domain_force">['&', - '|', ('is_preview', '=', True), ('channel_id.member_ids', '=', user.partner_id.id), + '|', ('is_preview', '=', True), ('channel_id.partner_ids', '=', user.partner_id.id), '&', ('channel_id.website_published', '=', True), ('website_published', '=', True)]</field> </record> diff --git a/addons/website_slides/tests/test_security.py b/addons/website_slides/tests/test_security.py index c73af1d932a..449dd7fca32 100644 --- a/addons/website_slides/tests/test_security.py +++ b/addons/website_slides/tests/test_security.py @@ -33,20 +33,11 @@ class TestAccess(common.SlidesCase): # if member -> can read membership = self.env['slide.channel.partner'].create({ 'channel_id': self.channel.id, - 'state': 'confirmed', 'partner_id': self.user_emp.partner_id.id, }) self.channel.sudo(self.user_emp).read(['name']) self.slide.sudo(self.user_emp).read(['name']) - # unvalidated member -> cannot read - membership.write({ - 'state': 'draft', - }) - self.channel.sudo(self.user_emp).read(['name']) - with self.assertRaises(AccessError): - self.slide.sudo(self.user_emp).read(['name']) - # not member anymore -> cannot read membership.unlink() self.channel.sudo(self.user_emp).read(['name']) @@ -98,7 +89,6 @@ class TestAccess(common.SlidesCase): # even members cannot see unpublished content self.env['slide.channel.partner'].create({ 'channel_id': self.channel.id, - 'state': 'confirmed', 'partner_id': self.user_emp.partner_id.id, }) with self.assertRaises(AccessError): |
