summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/website_slides/controllers/main.py2
-rw-r--r--addons/website_slides/models/slide_channel.py28
-rw-r--r--addons/website_slides/security/website_slides_security.xml2
-rw-r--r--addons/website_slides/tests/test_security.py10
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">['&amp;',
- '|', ('is_preview', '=', True), ('channel_id.member_ids', '=', user.partner_id.id),
+ '|', ('is_preview', '=', True), ('channel_id.partner_ids', '=', user.partner_id.id),
'&amp;', ('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):