Purpose is to ensure more advanced use cases are still supported in new elearning platform in addition to more public use cases. Fields controlling access are now * enroll: who can enroll on course: public (everyone, simply click on join button), invite (added by already members) and payment (in bridge with website_sale, if SO with product is confirmed); * enroll_group_ids: automatically add members of those groups to the channel to ease having groups for a given subset of users; * visibility: who can see a channel and its slides: public (everyone, it means channel is visible on website for example), members (hidden for non members) * website_published on channels and slides; non publishers cannot see what is not published, whatever other parameters; * upload_group_ids: who can upload on a channel; * download_security on a slide is completely removed as it makes no sense for most slide types; To ensure a better user experience responsible of a channel is added in its members. People uploading a slide are now also allowed to read it to avoid having inconsistency behavior between upload_group_ids and access rules. Some tests are added. This commit is linked to task ID 1942836 and PR #31239. Co-Authored-By: Aurélien Warnon <awa@odoo.com> Co-Authored-By: Thibault Delavallée <tde@odoo.com>
52 lines
2.8 KiB
XML
52 lines
2.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data noupdate="0">
|
|
<!-- CHANNEL -->
|
|
<record id="rule_slide_channel_global" model="ir.rule">
|
|
<field name="name">Channel: always visible (sub rules exist)</field>
|
|
<field name="model_id" ref="model_slide_channel"/>
|
|
<field name="global" eval="True"/>
|
|
<field name="domain_force">[(1, '=', 1)]</field>
|
|
</record>
|
|
|
|
<record id="rule_slide_channel_not_website" model="ir.rule">
|
|
<field name="name">Channel: public/portal/user: restricted to published and visible or member only</field>
|
|
<field name="model_id" ref="model_slide_channel"/>
|
|
<field name="groups" eval="[(4, ref('base.group_public')), (4, ref('base.group_portal')), (4, ref('base.group_user'))]"/>
|
|
<field name="domain_force">['&', ('website_published', '=', True), '|', ('visibility', '=', 'public'), ('partner_ids', '=', user.partner_id.id)]</field>
|
|
</record>
|
|
|
|
<record id="rule_slide_channel_website" model="ir.rule">
|
|
<field name="name">Channel: website group: access all</field>
|
|
<field name="model_id" ref="model_slide_channel"/>
|
|
<field name="groups" eval="[(4, ref('website.group_website_publisher'))]"/>
|
|
<field name="domain_force">[(1, '=', 1)]</field>
|
|
</record>
|
|
|
|
<!-- SLIDE -->
|
|
<record id="rule_slide_slide_global" model="ir.rule">
|
|
<field name="name">Slide: always visible (sub rules exist)</field>
|
|
<field name="model_id" ref="model_slide_slide"/>
|
|
<field name="global" eval="True"/>
|
|
<field name="domain_force">[(1, '=', 1)]</field>
|
|
</record>
|
|
|
|
<record id="rule_slide_slide_not_website" model="ir.rule">
|
|
<field name="name">Slide: public/portal/user: restricted to published or uploaded by user, and either channel member or public channel & previewable</field>
|
|
<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">['&',
|
|
'|',
|
|
'&', ('channel_id.visibility', '=', 'public'), ('is_preview', '=', True),
|
|
('channel_id.partner_ids', '=', user.partner_id.id),
|
|
'&', ('channel_id.website_published', '=', True), '|', ('user_id', '=', user.id), ('website_published', '=', True)]</field>
|
|
</record>
|
|
|
|
<record id="rule_slide_slide_website" model="ir.rule">
|
|
<field name="name">Slide: website group: access all</field>
|
|
<field name="model_id" ref="model_slide_slide"/>
|
|
<field name="groups" eval="[(4, ref('website.group_website_publisher'))]"/>
|
|
<field name="domain_force">[(1, '=', 1)]</field>
|
|
</record>
|
|
</data>
|
|
</odoo> |