summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorAurélien Warnon <awa@odoo.com>2019-02-08 10:53:41 +0000
committerThibault Delavallée <tde@odoo.com>2019-02-08 11:33:09 +0000
commitc4c067509e1d6802943ca99d5e5806da5f38438e (patch)
tree8d70e0191883206bcca4475398fbc2425fc73e38 /addons
parenteea58a3cf85b08e58c8b2f755fca933af171d1f7 (diff)
[REM] website_slides: remove the 'state' field of slide.channel.partner
Purpose ======= The 'state' field for a member of a channel did not imply anything functionally so we decided to remove it. It allows to remove an unnecessary computed fields. ACLs are updated accordingly. If needed, we will soon be able to check partner_ids that have ordered but not paid a channel / course product by searching the related 'sale.order' model for such products.
Diffstat (limited to 'addons')
-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):