From 8522119a300b2a735dded617d84ee501c0af2691 Mon Sep 17 00:00:00 2001 From: Remi <remi@le-filament.com> Date: Tue, 10 Dec 2019 11:12:48 +0100 Subject: [PATCH] Ajout droits --- __manifest__.py | 4 ++- models/__init__.py | 1 - models/hr_employee.py | 11 ------ models/product.py | 17 ++++++--- security/ir.model.access.csv | 5 +++ security/security_rules.xml | 69 ++++++++++++++++++++++++++++++++++++ views/product.xml | 6 ++++ 7 files changed, 96 insertions(+), 17 deletions(-) delete mode 100644 models/hr_employee.py create mode 100644 security/ir.model.access.csv create mode 100644 security/security_rules.xml diff --git a/__manifest__.py b/__manifest__.py index 2f41aa1..c4d6410 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -10,9 +10,11 @@ 'hr_expense', 'l10n_fr', 'hr_timesheet', - 'cgscop_timesheet', + 'cgscop_timesheet' ], "data": [ + "security/ir.model.access.csv", + "security/security_rules.xml", "views/hr_expense.xml", "views/hr_timesheet.xml", "views/product.xml", diff --git a/models/__init__.py b/models/__init__.py index 680d3de..79646f6 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,7 +1,6 @@ # © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import hr_employee from . import hr_expense from . import hr_timesheet from . import product diff --git a/models/hr_employee.py b/models/hr_employee.py deleted file mode 100644 index 519b877..0000000 --- a/models/hr_employee.py +++ /dev/null @@ -1,11 +0,0 @@ -# © 2019 Le Filament (<http://www.le-filament.com>) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from odoo import models, fields - - -class CGScopEmployee(models.Model): - _inherit = 'hr.employee' - - address_id = fields.Many2one( - default=lambda self: self.user.company_id) diff --git a/models/product.py b/models/product.py index 2b01150..22c4c09 100644 --- a/models/product.py +++ b/models/product.py @@ -8,11 +8,14 @@ from odoo.exceptions import ValidationError class CGScopProductTemplate(models.Model): _inherit = 'product.template' + def _default_ur(self): + return self.env['res.company']._ur_default_get() + expense_gap = fields.Float("Plafond de dépense") - expense_formula = fields.Selection([ - ('free', 'Libre'), - ('fixed_rate', 'Forfait'), - ('fixed_price', 'Prix fixe')], + expense_formula = fields.Selection( + [('free', 'Libre'), + ('fixed_rate', 'Forfait'), + ('fixed_price', 'Prix fixe')], string="Type de calcul", default="free", help=""" @@ -23,6 +26,12 @@ class CGScopProductTemplate(models.Model): - Prix fixe : le prix est fixe, mais l'utilisateur peut modifier la quantité (pour les km par exemple) """) + ur_id = fields.Many2one( + 'union.regionale', + string='Union Régionale', + index=True, + on_delete='restrict', + default=_default_ur) class CGScopProductProduct(models.Model): diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv new file mode 100644 index 0000000..b77aa2a --- /dev/null +++ b/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_ur_product_product,access_ur_product_product,product.model_product_product,cgscop_partner.group_ur_list_modif,1,1,1,1 +access_cg_product_product,access_cg_product_product,product.model_product_product,cgscop_partner.group_cg_administrator,1,1,1,1 +access_ur_product_template,access_ur_product_template,product.model_product_template,cgscop_partner.group_ur_list_modif,1,1,1,1 +access_cg_product_template,access_cg_product_template,product.model_product_template,cgscop_partner.group_cg_administrator,1,1,1,1 diff --git a/security/security_rules.xml b/security/security_rules.xml new file mode 100644 index 0000000..781c879 --- /dev/null +++ b/security/security_rules.xml @@ -0,0 +1,69 @@ +<?xml version="1.0"?> +<!-- Copyright 2019 Le Filament + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> + +<odoo> + <data noupdate="0"> + <record id="product_product_rule_all" model="ir.rule"> + <field name="name">product rule for all</field> + <field name="model_id" ref="product.model_product_product"/> + <field name="domain_force">['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field> + <field name="groups" eval="[(6, 0, [ref('base.group_user')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="False"/> + <field name="perm_create" eval="False"/> + <field name="perm_unlink" eval="False"/> + </record> + <record id="product_product_rule_ur" model="ir.rule"> + <field name="name">product rule per ur</field> + <field name="model_id" ref="product.model_product_product"/> + <field name="domain_force">['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field> + <field name="groups" eval="[(6, 0, [ref('cgscop_partner.group_ur_list_modif')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="True"/> + <field name="perm_create" eval="True"/> + <field name="perm_unlink" eval="True"/> + </record> + <record id="product_product_rule_admin" model="ir.rule"> + <field name="name">product rule administrator</field> + <field name="model_id" ref="product.model_product_product"/> + <field name="domain_force">[(1,'=',1)]</field> + <field name="groups" eval="[(6, 0, [ref('cgscop_partner.group_cg_administrator')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="True"/> + <field name="perm_create" eval="True"/> + <field name="perm_unlink" eval="True"/> + </record> + + <record id="product_template_rule_all" model="ir.rule"> + <field name="name">product template rule for all</field> + <field name="model_id" ref="product.model_product_template"/> + <field name="domain_force">['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field> + <field name="groups" eval="[(6, 0, [ref('base.group_user')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="False"/> + <field name="perm_create" eval="False"/> + <field name="perm_unlink" eval="False"/> + </record> + <record id="product_template_rule_ur" model="ir.rule"> + <field name="name">product template rule per ur</field> + <field name="model_id" ref="product.model_product_template"/> + <field name="domain_force">['|',('ur_id','=',False),('ur_id','=',user.company_id.ur_id.id)]</field> + <field name="groups" eval="[(6, 0, [ref('cgscop_partner.group_ur_list_modif')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="True"/> + <field name="perm_create" eval="True"/> + <field name="perm_unlink" eval="True"/> + </record> + <record id="product_template_rule_admin" model="ir.rule"> + <field name="name">product template rule administrator</field> + <field name="model_id" ref="product.model_product_template"/> + <field name="domain_force">[(1,'=',1)]</field> + <field name="groups" eval="[(6, 0, [ref('cgscop_partner.group_cg_administrator')])]"/> + <field name="perm_read" eval="True"/> + <field name="perm_write" eval="True"/> + <field name="perm_create" eval="True"/> + <field name="perm_unlink" eval="True"/> + </record> + </data> +</odoo> diff --git a/views/product.xml b/views/product.xml index 2d318ba..7dd59d1 100644 --- a/views/product.xml +++ b/views/product.xml @@ -50,6 +50,7 @@ </field> <field name="uom_po_id" position="after"> <field name="expense_gap" /> + <field name="ur_id" options="{'no_open': True, 'no_create': True}"/> </field> </field> </record> @@ -63,11 +64,16 @@ <field name="arch" type="xml"> <field name="company_id" position="before"> <field name="expense_gap" attrs="{'invisible':[('can_be_expensed','=','True')]}"/> + <field name="ur_id" options="{'no_open': True, 'no_create': True}"/> </field> </field> </record> + <!-- ajout des droits sur le menu Articles de Frais --> + <record model="ir.ui.menu" id="hr_expense.menu_hr_product"> + <field name="groups_id" eval="[(6,0, [ref('hr_expense.group_hr_expense_manager'), ref('cgscop_partner.group_cg_administrator'), ref('cgscop_partner.group_ur_list_modif')])]"/> + </record> </data> </odoo> -- GitLab