This commit is contained in:
2026-07-11 01:28:32 +02:00
parent 0a6176cf53
commit 8e01c7c8ec
99 changed files with 34739 additions and 0 deletions
@@ -0,0 +1,22 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_otk_seo_content_user,otk.seo.content.user,model_otk_seo_content,group_seo_content_user,1,1,1,0
access_otk_seo_content_manager,otk.seo.content.manager,model_otk_seo_content,group_seo_content_manager,1,1,1,1
access_otk_seo_content_image_user,otk.seo.content.image.user,model_otk_seo_content_image,group_seo_content_user,1,1,1,0
access_otk_seo_content_image_manager,otk.seo.content.image.manager,model_otk_seo_content_image,group_seo_content_manager,1,1,1,1
access_otk_seo_template_user,otk.seo.template.user,model_otk_seo_template,group_seo_content_user,1,0,0,0
access_otk_seo_template_manager,otk.seo.template.manager,model_otk_seo_template,group_seo_content_manager,1,1,1,1
access_otk_seo_content_version_user,otk.seo.content.version.user,model_otk_seo_content_version,group_seo_content_user,1,0,0,0
access_otk_seo_content_version_manager,otk.seo.content.version.manager,model_otk_seo_content_version,group_seo_content_manager,1,1,1,1
access_otk_seo_content_generate_wizard_user,otk.seo.content.generate.wizard.user,model_otk_seo_content_generate_wizard,group_seo_content_user,1,1,1,1
access_otk_seo_brand_voice_user,otk.seo.brand.voice.user,model_otk_seo_brand_voice,group_seo_content_user,1,0,0,0
access_otk_seo_brand_voice_manager,otk.seo.brand.voice.manager,model_otk_seo_brand_voice,group_seo_content_manager,1,1,1,1
access_otk_seo_content_batch_user,otk.seo.content.batch.user,model_otk_seo_content_batch,group_seo_content_user,1,1,1,0
access_otk_seo_content_batch_manager,otk.seo.content.batch.manager,model_otk_seo_content_batch,group_seo_content_manager,1,1,1,1
access_otk_seo_content_batch_item_user,otk.seo.content.batch.item.user,model_otk_seo_content_batch_item,group_seo_content_user,1,1,1,0
access_otk_seo_content_batch_item_manager,otk.seo.content.batch.item.manager,model_otk_seo_content_batch_item,group_seo_content_manager,1,1,1,1
access_otk_seo_reference_user,otk.seo.reference.user,model_otk_seo_reference,group_seo_content_user,1,0,0,0
access_otk_seo_reference_manager,otk.seo.reference.manager,model_otk_seo_reference,group_seo_content_manager,1,1,1,1
access_otk_seo_reference_tag_user,otk.seo.reference.tag.user,model_otk_seo_reference_tag,group_seo_content_user,1,0,0,0
access_otk_seo_reference_tag_manager,otk.seo.reference.tag.manager,model_otk_seo_reference_tag,group_seo_content_manager,1,1,1,1
access_otk_seo_content_idea_user,otk.seo.content.idea.user,model_otk_seo_content_idea,group_seo_content_user,1,1,1,0
access_otk_seo_content_idea_manager,otk.seo.content.idea.manager,model_otk_seo_content_idea,group_seo_content_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_otk_seo_content_user otk.seo.content.user model_otk_seo_content group_seo_content_user 1 1 1 0
3 access_otk_seo_content_manager otk.seo.content.manager model_otk_seo_content group_seo_content_manager 1 1 1 1
4 access_otk_seo_content_image_user otk.seo.content.image.user model_otk_seo_content_image group_seo_content_user 1 1 1 0
5 access_otk_seo_content_image_manager otk.seo.content.image.manager model_otk_seo_content_image group_seo_content_manager 1 1 1 1
6 access_otk_seo_template_user otk.seo.template.user model_otk_seo_template group_seo_content_user 1 0 0 0
7 access_otk_seo_template_manager otk.seo.template.manager model_otk_seo_template group_seo_content_manager 1 1 1 1
8 access_otk_seo_content_version_user otk.seo.content.version.user model_otk_seo_content_version group_seo_content_user 1 0 0 0
9 access_otk_seo_content_version_manager otk.seo.content.version.manager model_otk_seo_content_version group_seo_content_manager 1 1 1 1
10 access_otk_seo_content_generate_wizard_user otk.seo.content.generate.wizard.user model_otk_seo_content_generate_wizard group_seo_content_user 1 1 1 1
11 access_otk_seo_brand_voice_user otk.seo.brand.voice.user model_otk_seo_brand_voice group_seo_content_user 1 0 0 0
12 access_otk_seo_brand_voice_manager otk.seo.brand.voice.manager model_otk_seo_brand_voice group_seo_content_manager 1 1 1 1
13 access_otk_seo_content_batch_user otk.seo.content.batch.user model_otk_seo_content_batch group_seo_content_user 1 1 1 0
14 access_otk_seo_content_batch_manager otk.seo.content.batch.manager model_otk_seo_content_batch group_seo_content_manager 1 1 1 1
15 access_otk_seo_content_batch_item_user otk.seo.content.batch.item.user model_otk_seo_content_batch_item group_seo_content_user 1 1 1 0
16 access_otk_seo_content_batch_item_manager otk.seo.content.batch.item.manager model_otk_seo_content_batch_item group_seo_content_manager 1 1 1 1
17 access_otk_seo_reference_user otk.seo.reference.user model_otk_seo_reference group_seo_content_user 1 0 0 0
18 access_otk_seo_reference_manager otk.seo.reference.manager model_otk_seo_reference group_seo_content_manager 1 1 1 1
19 access_otk_seo_reference_tag_user otk.seo.reference.tag.user model_otk_seo_reference_tag group_seo_content_user 1 0 0 0
20 access_otk_seo_reference_tag_manager otk.seo.reference.tag.manager model_otk_seo_reference_tag group_seo_content_manager 1 1 1 1
21 access_otk_seo_content_idea_user otk.seo.content.idea.user model_otk_seo_content_idea group_seo_content_user 1 1 1 0
22 access_otk_seo_content_idea_manager otk.seo.content.idea.manager model_otk_seo_content_idea group_seo_content_manager 1 1 1 1
@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<!-- Privilege Definition -->
<record model="res.groups.privilege" id="res_groups_privilege_seo_content">
<field name="name">SEO Content</field>
<field name="sequence">10</field>
<field name="category_id" ref="otoolkit_seo_content.module_category_otoolkit_seo"/>
</record>
<!-- Security Groups -->
<record id="group_seo_content_user" model="res.groups">
<field name="name">User</field>
<field name="sequence">10</field>
<field name="comment">Can create and manage their own SEO content</field>
<field name="privilege_id" ref="res_groups_privilege_seo_content"/>
</record>
<record id="group_seo_content_manager" model="res.groups">
<field name="name">Administrator</field>
<field name="sequence">20</field>
<field name="comment">Can manage all SEO content and configure templates</field>
<field name="privilege_id" ref="res_groups_privilege_seo_content"/>
<field name="implied_ids" eval="[(4, ref('group_seo_content_user'))]"/>
</record>
</data>
<data noupdate="1">
<!-- Record Rules -->
<!-- SEO Content: Users can see their own content -->
<record model="ir.rule" id="seo_content_user_rule">
<field name="name">SEO Content: User own records</field>
<field name="model_id" search="[('model','=','otk.seo.content')]" model="ir.model"/>
<field name="domain_force">[('create_uid', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_user'))]"/>
<field name="perm_unlink" eval="False"/>
</record>
<!-- SEO Content: Managers can see all content -->
<record model="ir.rule" id="seo_content_manager_rule">
<field name="name">SEO Content: Manager all records</field>
<field name="model_id" search="[('model','=','otk.seo.content')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_manager'))]"/>
</record>
<!-- SEO Content Image: Users follow parent content access -->
<record model="ir.rule" id="seo_content_image_user_rule">
<field name="name">SEO Content Image: User own records</field>
<field name="model_id" search="[('model','=','otk.seo.content.image')]" model="ir.model"/>
<field name="domain_force">[('content_id.create_uid', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_user'))]"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="seo_content_image_manager_rule">
<field name="name">SEO Content Image: Manager all records</field>
<field name="model_id" search="[('model','=','otk.seo.content.image')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_manager'))]"/>
</record>
<!-- SEO Content Batch: Users can see their own batches -->
<record model="ir.rule" id="seo_content_batch_user_rule">
<field name="name">SEO Content Batch: User own records</field>
<field name="model_id" search="[('model','=','otk.seo.content.batch')]" model="ir.model"/>
<field name="domain_force">[('create_uid', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_user'))]"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="seo_content_batch_manager_rule">
<field name="name">SEO Content Batch: Manager all records</field>
<field name="model_id" search="[('model','=','otk.seo.content.batch')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_manager'))]"/>
</record>
<!-- SEO Content Batch Items: Follow parent batch access -->
<record model="ir.rule" id="seo_content_batch_item_user_rule">
<field name="name">SEO Content Batch Item: User own records</field>
<field name="model_id" search="[('model','=','otk.seo.content.batch.item')]" model="ir.model"/>
<field name="domain_force">[('batch_id.create_uid', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_user'))]"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="seo_content_batch_item_manager_rule">
<field name="name">SEO Content Batch Item: Manager all records</field>
<field name="model_id" search="[('model','=','otk.seo.content.batch.item')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_manager'))]"/>
</record>
<!-- SEO Content Versions: Follow parent content access -->
<record model="ir.rule" id="seo_content_version_user_rule">
<field name="name">SEO Content Version: User own records</field>
<field name="model_id" search="[('model','=','otk.seo.content.version')]" model="ir.model"/>
<field name="domain_force">[('content_id.create_uid', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_user'))]"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="seo_content_version_manager_rule">
<field name="name">SEO Content Version: Manager all records</field>
<field name="model_id" search="[('model','=','otk.seo.content.version')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_manager'))]"/>
</record>
<!-- SEO Reference Library: All users can read -->
<record model="ir.rule" id="seo_reference_user_rule">
<field name="name">SEO Reference: User read all</field>
<field name="model_id" search="[('model','=','otk.seo.reference')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_user'))]"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="seo_reference_manager_rule">
<field name="name">SEO Reference: Manager full access</field>
<field name="model_id" search="[('model','=','otk.seo.reference')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_manager'))]"/>
</record>
<!-- SEO Reference Tags: All users can read -->
<record model="ir.rule" id="seo_reference_tag_user_rule">
<field name="name">SEO Reference Tag: User read all</field>
<field name="model_id" search="[('model','=','otk.seo.reference.tag')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_user'))]"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="seo_reference_tag_manager_rule">
<field name="name">SEO Reference Tag: Manager full access</field>
<field name="model_id" search="[('model','=','otk.seo.reference.tag')]" model="ir.model"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_seo_content_manager'))]"/>
</record>
</data>
</odoo>