[MERGE] various: Replace the reified user's groups view by computed fields

This commit has several purposes:
- Group public/portal/employees access rights into a single selection field
- Rename the 'Employee' access right into 'Internal User'
- Remove the groups reified view on the user form and replace it by real
  computed fields: Selection fields for the application groups, and
  Boolean fields for the isolated groups.

For more information about the specification please check the related commits

Task ID: 32258
This commit is contained in:
Yannick Tivisse
2018-04-26 16:07:12 +02:00
143 changed files with 1311 additions and 404 deletions
+1
View File
@@ -65,6 +65,7 @@ Core mechanisms for the accounting modules. To display the menuitems, install th
'views/account_dashboard_setup_bar.xml',
'wizard/account_report_tax_view.xml',
'views/report_tax.xml',
'views/res_users_views.xml',
'data/service_cron_reverse.xml',
],
'demo': [
+1
View File
@@ -14,3 +14,4 @@ from . import company
from . import res_config_settings
from . import account_cash_rounding
from . import reconciliation_widget
from . import res_users
+21
View File
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_warning_account = fields.Boolean(
'A warning can be set on a partner (Account)', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='account.group_warning_account')
has_group_cash_rounding = fields.Boolean(
'Allow the cash rounding management', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='account.group_cash_rounding')
group_account_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_accounting_and_finance'),
string='Accounting & Finance', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_accounting_and_finance')
@@ -10,7 +10,6 @@
<record id="group_account_user" model="res.groups">
<field name="name">Show Full Accounting Features</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_account_manager" model="res.groups">
@@ -29,12 +28,10 @@
<record id="group_warning_account" model="res.groups">
<field name="name">A warning can be set on a partner (Account)</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_cash_rounding" model="res.groups">
<field name="name">Allow the cash rounding management</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</data>
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.account.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">40</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_account_user'/>
</group>
<group name="technical" position="inside">
<label for="has_group_warning_account" colspan="3"/>
<div>
<field name='has_group_warning_account' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_cash_rounding" colspan="3"/>
<div>
<field name='has_group_cash_rounding' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -19,6 +19,7 @@ that have no counterpart in the general financial accounts.
'security/analytic_security.xml',
'security/ir.model.access.csv',
'views/analytic_account_views.xml',
'views/res_users_views.xml',
],
'demo': [
'data/analytic_demo.xml',
+1
View File
@@ -2,3 +2,4 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import analytic_account
from . import res_users
+16
View File
@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_analytic_accounting = fields.Boolean(
'Analytic Accounting', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='analytic.group_analytic_accounting')
has_group_analytic_tags = fields.Boolean(
'Analytic Accounting Tags', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='analytic.group_analytic_tags')
@@ -34,12 +34,10 @@
<record id="group_analytic_accounting" model="res.groups">
<field name="name">Analytic Accounting</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_analytic_tags" model="res.groups">
<field name="name">Analytic Accounting Tags</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</data>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.analytic.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<group name="technical" position="inside">
<label for="has_group_analytic_accounting" colspan="3"/>
<div>
<field name='has_group_analytic_accounting' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_analytic_tags" colspan="3"/>
<div>
<field name='has_group_analytic_tags' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_users_form_view" model="ir.ui.view">
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
+1
View File
@@ -43,6 +43,7 @@
'report/crm_activity_report_views.xml',
'report/crm_opportunity_report_views.xml',
'views/crm_team_views.xml',
'views/res_users_views.xml',
],
'demo': [
'data/crm_demo.xml',
+4 -1
View File
@@ -5,8 +5,11 @@ from odoo import fields, models
class Users(models.Model):
_inherit = 'res.users'
target_sales_won = fields.Integer('Won in Opportunities Target')
target_sales_done = fields.Integer('Activities Done Target')
has_group_use_lead = fields.Boolean(
'Show Lead Menu', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='crm.group_use_lead')
-1
View File
@@ -5,7 +5,6 @@
<record id="group_use_lead" model="res.groups">
<field name="name">Show Lead Menu</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record model="res.users" id="base.user_root">
+16
View File
@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.crm.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<group name="technical" position="inside">
<label for="has_group_use_lead" colspan="3"/>
<div>
<field name='has_group_use_lead' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+2
View File
@@ -30,6 +30,8 @@ Key Features
'views/res_config_settings_views.xml',
'views/event_templates.xml',
'views/res_partner_views.xml',
'views/res_users_views.xml',
],
'demo': [
'data/event_demo.xml',
+1
View File
@@ -5,3 +5,4 @@ from . import event
from . import event_mail
from . import res_config_settings
from . import res_partner
from . import res_users
+2 -1
View File
@@ -3,10 +3,11 @@
from odoo import api, fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
event_count = fields.Integer("Events", compute='_compute_event_count', help="Number of events the partner has participated.")
event_count = fields.Integer("Events Count", compute='_compute_event_count', help="Number of events the partner has participated.")
def _compute_event_count(self):
for partner in self:
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_event_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_event_management'),
string='Events', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_event_management')
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.event.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">105</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_event_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -36,6 +36,7 @@ Main Features
'views/fleet_vehicle_cost_views.xml',
'views/fleet_board_view.xml',
'views/mail_activity_views.xml',
'views/res_users_views.xml',
'data/fleet_cars_data.xml',
'data/fleet_data.xml',
'data/mail_data.xml',
+1
View File
@@ -4,3 +4,4 @@
from . import fleet_vehicle
from . import fleet_vehicle_cost
from . import fleet_vehicle_model
from . import res_users
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_fleet_user = fields.Selection(
selection=lambda self: self._get_group_selection('fleet.module_fleet_category'),
string='Fleet', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='fleet.module_fleet_category')
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.fleet.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">100</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_fleet_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -27,6 +27,7 @@
'views/hr_views.xml',
'views/hr_templates.xml',
'views/res_config_settings_views.xml',
'views/res_users_views.xml',
'data/hr_data.xml',
],
'demo': [
+6
View File
@@ -11,6 +11,12 @@ class User(models.Model):
employee_ids = fields.One2many('hr.employee', 'user_id', string='Related employees')
group_hr_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_human_resources'),
string="Human Resources", compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_human_resources',
help='Officer: The user will be able to approve document created by employees.\nManager: The user will have an access to the human resources configuration as well as statistic reports.')
@api.multi
def write(self, vals):
""" When renaming admin user, we want its new name propagated to its related employees """
-1
View File
@@ -4,7 +4,6 @@
<record id="group_hr_user" model="res.groups">
<field name="name">Officer</field>
<field name="category_id" ref="base.module_category_human_resources"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
<field name="comment">The user will be able to approve document created by employees.</field>
</record>
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.hr.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">50</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name="group_hr_user"/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -26,6 +26,7 @@ actions(Check in/Check out) performed by them.
'views/hr_department_view.xml',
'views/hr_employee_view.xml',
'views/res_config_settings_views.xml',
'views/res_users_views.xml',
],
'demo': [
'data/hr_attendance_demo.xml'
+1
View File
@@ -3,3 +3,4 @@
from . import res_config_settings
from . import hr_attendance
from . import hr_employee
from . import res_users
+23
View File
@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_hr_attendance = fields.Boolean(
'Manual Attendance', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='hr_attendance.group_hr_attendance',
help='The user will gain access to the human resources attendance menu, enabling him to manage his own attendance.')
has_group_hr_attendance_use_pin = fields.Boolean(
'Enable PIN use', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='hr_attendance.group_hr_attendance_use_pin',
help='The user will have to enter his PIN to check in and out manually at the company screen.')
group_hr_attendance_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_hr_attendance'),
string='Attendance', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_hr_attendance')
@@ -34,7 +34,6 @@
<record id="group_hr_attendance_use_pin" model="res.groups">
<field name="name">Enable PIN use</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="comment">The user will have to enter his PIN to check in and out manually at the company screen.</field>
</record>
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.hr_attendance.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">80</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_hr_attendance_user'/>
</group>
<group name="technical" position="inside">
<label for="has_group_hr_attendance" colspan="3"/>
<div>
<field name='has_group_hr_attendance' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_hr_attendance_use_pin" colspan="3"/>
<div>
<field name='has_group_hr_attendance_use_pin' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -43,6 +43,7 @@ This module also uses analytic accounting and is compatible with the invoice on
'views/assets.xml',
'views/res_config_settings_views.xml',
'views/account_journal_dashboard.xml',
'views/res_users_views.xml',
],
'demo': ['data/hr_expense_demo.xml'],
'installable': True,
+1
View File
@@ -7,3 +7,4 @@ from . import hr_expense
from . import product_template
from . import res_config_settings
from . import account_journal_dashboard
from . import res_users
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_hr_expense_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_hr_expense'),
string='Expenses', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_hr_expense')
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.hr_expense.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">65</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_hr_expense_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -39,6 +39,7 @@ A synchronization with an internal agenda (Meetings of the CRM module) is also p
'views/hr_leave_allocation_views.xml',
'views/hr_views.xml',
'views/mail_activity_views.xml',
'views/res_users_views.xml',
'wizard/hr_holidays_summary_department_views.xml',
'wizard/hr_holidays_summary_employees_views.xml',
+1
View File
@@ -6,3 +6,4 @@ from . import hr
from . import hr_leave
from . import hr_leave_allocation
from . import hr_leave_type
from . import res_users
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_hr_holidays_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_hr_holidays'),
string='Leaves', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_hr_holidays')
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.hr_holidays.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">55</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_hr_holidays_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -29,6 +29,7 @@
'views/report_contributionregister_templates.xml',
'views/report_payslip_templates.xml',
'views/report_payslipdetails_templates.xml',
'views/res_users_views.xml',
],
'demo': ['data/hr_payroll_demo.xml'],
}
+1
View File
@@ -6,3 +6,4 @@ from . import hr_employee
from . import res_config_settings
from . import hr_salary_rule
from . import hr_payslip
from . import res_users
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_hr_payroll_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_hr_payroll'),
string='Payroll', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_hr_payroll')
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.hr_payroll.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">95</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_hr_payroll_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -27,6 +27,7 @@
'views/hr_department_views.xml',
'views/hr_job_views.xml',
'views/mail_activity_views.xml',
'views/res_users_views.xml',
],
'demo': [
'data/hr_recruitment_demo.xml',
+1
View File
@@ -4,3 +4,4 @@ from . import hr_employee
from . import hr_job
from . import res_config_settings
from . import calendar
from . import res_users
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_hr_recruitment_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_hr_recruitment'),
string='Recruitment', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_hr_recruitment')
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.hr_recruitment.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">60</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_hr_recruitment_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -31,6 +31,7 @@ up a management by affair.
'report/hr_timesheet_report_view.xml',
'report/report_timesheet_templates.xml',
'views/hr_views.xml',
'views/res_users_views.xml',
'data/hr_timesheet_data.xml',
],
'demo': [
+1
View File
@@ -6,3 +6,4 @@ from . import hr
from . import hr_timesheet
from . import res_config_settings
from . import project
from . import res_users
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_hr_timesheet_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_hr_timesheet'),
string='Timesheets', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_hr_timesheet')
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.hr_timesheet.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">70</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_hr_timesheet_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -25,6 +25,7 @@ Help your customers with this chat, and analyse their feedback.
"views/mail_channel_views.xml",
"views/im_livechat_channel_views.xml",
"views/im_livechat_channel_templates.xml",
"views/res_users_views.xml",
"report/im_livechat_report_channel_views.xml",
"report/im_livechat_report_operator_views.xml"
],
+1
View File
@@ -3,3 +3,4 @@ from . import im_livechat_channel
from . import ir_autovacuum
from . import mail_channel
from . import rating
from . import res_users
+14
View File
@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_im_livechat_user = fields.Selection(
selection=lambda self: self._get_group_selection('im_livechat.module_category_im_livechat'),
string='Live Support', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='im_livechat.module_category_im_livechat',
help='User: The user will be able to join support channels.\nManager: The user will be able to delete support channels.')
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.im_livechat.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">125</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_im_livechat_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -17,6 +17,7 @@ Based on invoices.
'security/l10n_be_intrastat_security.xml',
'security/ir.model.access.csv',
'views/l10n_be_intrastat_view.xml',
'views/res_users_views.xml',
'wizard/l10n_be_intrastat_declaration_view.xml',
],
}
@@ -2,3 +2,4 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import l10n_be_intrastat
from . import res_users
@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_intrastat_extended = fields.Boolean(
'Intrastat extended', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='l10n_be_intrastat.intrastat_extended')
@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.l10n_be_intrastat.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<group name="technical" position="inside">
<label for="has_group_intrastat_extended" colspan="3"/>
<div>
<field name='has_group_intrastat_extended' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -29,6 +29,7 @@ If you want to save your employees' time and avoid them to always have coins in
'views/lunch_templates.xml',
'wizard/lucky_order_view.xml',
'views/lunch_views.xml',
'views/res_users_views.xml',
'data/lunch_data.xml',
],
'demo': ['data/lunch_demo.xml'],
+1
View File
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from . import lunch
from . import res_users
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_lunch_user = fields.Selection(
selection=lambda self: self._get_group_selection('lunch.module_lunch_category'),
string='Lunch', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='lunch.module_lunch_category')
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.lunch.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">90</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_lunch_user'/>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -17,6 +17,7 @@
'views/maintenance_views.xml',
'views/maintenance_templates.xml',
'views/mail_activity_views.xml',
'views/res_users_views.xml',
'data/maintenance_cron.xml',
],
'demo': ['data/maintenance_demo.xml'],
+1
View File
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from . import maintenance
from . import res_users
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_equipment_manager = fields.Boolean(
'Equipment Manager', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='maintenance.group_equipment_manager',
help='The user will be able to manage equipments.')
@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.maintenance.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<group name="technical" position="inside">
<label for="has_group_equipment_manager" colspan="3"/>
<div>
<field name='has_group_equipment_manager' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -34,6 +34,7 @@
'views/themes_templates.xml',
'views/snippets_themes.xml',
'views/snippets_themes_options.xml',
'views/res_users_views.xml',
],
'demo': [
'data/mass_mailing_demo.xml',
+1
View File
@@ -9,3 +9,4 @@ from . import res_config_settings
from . import mass_mailing_report
from . import link_tracker
from . import ir_model_fields
from . import res_users
+17
View File
@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
group_mass_mailing_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_mass_mailing'),
string='Mass Mailing', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_mass_mailing')
has_group_mass_mailing_campaign = fields.Boolean(
'Manage Mass Mailing Campaigns', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='mass_mailing.group_mass_mailing_campaign')
@@ -10,7 +10,6 @@
<!-- Group to manage campaigns -->
<record id="group_mass_mailing_campaign" model="res.groups">
<field name="name">Manage Mass Mailing Campaigns</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<data noupdate="1">
@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.mass_mailing.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">110</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_mass_mailing_user'/>
</group>
<group name="technical" position="inside">
<label for="has_group_mass_mailing_campaign" colspan="3"/>
<div>
<field name='has_group_mass_mailing_campaign' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -36,6 +36,7 @@
'views/res_config_settings_views.xml',
'views/mrp_templates.xml',
'views/stock_scrap_views.xml',
'views/res_users_views.xml',
'report/mrp_report_views_main.xml',
'report/mrp_report_bom_structure.xml',
'report/mrp_production_templates.xml',
+1
View File
@@ -19,3 +19,4 @@ from . import stock_picking
from . import stock_production_lot
from . import stock_scrap
from . import stock_warehouse
from . import res_users
+17
View File
@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_mrp_routings = fields.Boolean(
'Manage Work Order Operations', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='mrp.group_mrp_routings')
group_mrp_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_manufacturing'),
string='Manufacturing', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_manufacturing')
-1
View File
@@ -17,7 +17,6 @@
<record id="group_mrp_routings" model="res.groups">
<field name="name">Manage Work Order Operations</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</data>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.mrp.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">25</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_mrp_user'/>
</group>
<group name="technical" position="inside">
<label for="has_group_mrp_routings" colspan="3"/>
<div>
<field name='has_group_mrp_routings' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1 -1
View File
@@ -34,7 +34,7 @@
'views/pos_order_report_view.xml',
'views/account_statement_view.xml',
'views/account_statement_report.xml',
'views/res_users_view.xml',
'views/res_users_views.xml',
'views/res_partner_view.xml',
'views/report_statement.xml',
'views/report_userlabel.xml',
+5
View File
@@ -9,6 +9,11 @@ class ResUsers(models.Model):
pos_security_pin = fields.Char(string='Security PIN', size=32, help='A Security PIN used to protect sensible functionality in the Point of Sale')
group_point_of_sale_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_point_of_sale'),
string='Point of Sale', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_point_of_sale')
@api.constrains('pos_security_pin')
def _check_pin(self):
if self.pos_security_pin and not self.pos_security_pin.isdigit():
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="res_users_form_view" model="ir.ui.view">
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.view</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form" />
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">130</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_point_of_sale_user'/>
</group>
<notebook position="inside">
<page string="Point of Sale">
<group>
+1
View File
@@ -38,6 +38,7 @@ Print product labels with barcode.
'views/product_pricelist_views.xml',
'views/res_partner_views.xml',
'views/product_template_import_templates.xml',
'views/res_users_views.xml',
'report/product_reports.xml',
'report/product_pricelist_templates.xml',
'report/product_product_templates.xml',
+1
View File
@@ -15,3 +15,4 @@ from . import product_attribute
from . import product_pricelist
from . import res_company
from . import res_partner
from . import res_users
+28
View File
@@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_sale_pricelist = fields.Boolean(
'Sales Pricelists', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='product.group_sale_pricelist')
has_group_pricelist_item = fields.Boolean(
'Manage Pricelist Items', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='product.group_pricelist_item')
has_group_product_pricelist = fields.Boolean(
'Pricelists On Product', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='product.group_product_pricelist')
has_group_stock_packaging = fields.Boolean(
'Manage Product Packaging', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='product.group_stock_packaging')
has_group_product_variant = fields.Boolean(
'Manage Product Variants', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='product.group_product_variant')
@@ -4,27 +4,22 @@
<record id="group_sale_pricelist" model="res.groups">
<field name="name">Sales Pricelists</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_pricelist_item" model="res.groups">
<field name="name">Manage Pricelist Items</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_product_pricelist" model="res.groups">
<field name="name">Pricelists On Product</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_stock_packaging" model="res.groups">
<field name="name">Manage Product Packaging</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_product_variant" model="res.groups">
<field name="name">Manage Product Variants</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</data>
+32
View File
@@ -0,0 +1,32 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.product.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<group name="technical" position="inside">
<label for="has_group_sale_pricelist" colspan="3"/>
<div>
<field name='has_group_sale_pricelist' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_pricelist_item" colspan="3"/>
<div>
<field name='has_group_pricelist_item' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_product_pricelist" colspan="3"/>
<div>
<field name='has_group_product_pricelist' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_stock_packaging" colspan="3"/>
<div>
<field name='has_group_stock_packaging' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_product_variant" colspan="3"/>
<div>
<field name='has_group_product_variant' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -32,6 +32,7 @@
'views/project_assets.xml',
'views/project_portal_templates.xml',
'views/project_rating_templates.xml',
'views/res_users_views.xml',
'data/project_mail_template_data.xml',
],
'qweb': ['static/src/xml/project.xml'],
+1
View File
@@ -5,3 +5,4 @@ from . import project
from . import res_config_settings
from . import res_company
from . import res_partner
from . import res_users
+21
View File
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_subtask_project = fields.Boolean(
'Use Subtasks', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='project.group_subtask_project')
has_group_project_rating = fields.Boolean(
'Use Rating on Project', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='project.group_project_rating')
group_project_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_project_management'),
string='Project', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_project_management')
@@ -16,12 +16,10 @@
<record id="group_subtask_project" model="res.groups">
<field name="name">Use Subtasks</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_project_rating" model="res.groups">
<field name="name">Use Rating on Project</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<data noupdate="1">
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.project.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">5</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_project_user'/>
</group>
<group name="technical" position="inside">
<label for="has_group_subtask_project" colspan="3"/>
<div>
<field name='has_group_subtask_project' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_project_rating" colspan="3"/>
<div>
<field name='has_group_project_rating' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
+1
View File
@@ -24,6 +24,7 @@
'report/purchase_report_views.xml',
'data/mail_template_data.xml',
'views/portal_templates.xml',
'views/res_users_views.xml',
'report/purchase_order_templates.xml',
'report/purchase_quotation_templates.xml',
],
+1
View File
@@ -8,3 +8,4 @@ from . import res_company
from . import res_config_settings
from . import res_partner
from . import stock
from . import res_users
+22
View File
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_manage_vendor_price = fields.Boolean(
'Manage Vendor Price', compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='purchase.group_manage_vendor_price')
has_group_warning_purchase = fields.Boolean(
'A warning can be set on a product or a customer (Purchase)',
compute='_compute_groups_id', inverse='_inverse_groups_id',
group_xml_id='purchase.group_warning_purchase')
group_purchase_user = fields.Selection(
selection=lambda self: self._get_group_selection('base.module_category_purchase_management'),
string='Purchases', compute='_compute_groups_id', inverse='_inverse_groups_id',
category_xml_id='base.module_category_purchase_management')
@@ -17,12 +17,10 @@
<record id="group_manage_vendor_price" model="res.groups">
<field name="name">Manage Vendor Price</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_warning_purchase" model="res.groups">
<field name="name">A warning can be set on a product or a customer (Purchase)</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</data>
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.form.purchase.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="priority">45</field>
<field name="arch" type="xml">
<group name="applications" position="inside">
<field name='group_purchase_user'/>
</group>
<group name="technical" position="inside">
<label for="has_group_manage_vendor_price" colspan="3"/>
<div>
<field name='has_group_manage_vendor_price' colspan="1" class="oe_inline"/>
</div>
<label for="has_group_warning_purchase" colspan="3"/>
<div>
<field name='has_group_warning_purchase' colspan="1" class="oe_inline"/>
</div>
</group>
</field>
</record>
</odoo>
@@ -23,11 +23,11 @@ class TestPurchaseRequisition(common.TransactionCase):
# Create a user as 'Purchase Requisition Manager'
self.res_users_purchase_requisition_manager = self.ResUser.create({'company_id': self.res_company_id, 'name': 'Purchase requisition Manager', 'login': 'prm', 'email': 'requisition_manager@yourcompany.com'})
# Added groups for Purchase Requisition Manager.
self.res_users_purchase_requisition_manager.group_id = self.ref('purchase.group_purchase_manager')
self.res_users_purchase_requisition_manager.groups_id = [(4, self.ref('purchase.group_purchase_manager'), False)]
# Create a user as 'Purchase Requisition User'
self.res_users_purchase_requisition_user = self.ResUser.create({'company_id': self.res_company_id, 'name': 'Purchase requisition User', 'login': 'pru', 'email': 'requisition_user@yourcompany.com'})
# Added groups for Purchase Requisition User.
self.res_users_purchase_requisition_user.group_id = self.ref('purchase.group_purchase_user')
self.res_users_purchase_requisition_user.groups_id = [(4, self.ref('purchase.group_purchase_user'), False)]
# In order to test process of the purchase requisition ,create requisition
self.requisition1 = self.env['purchase.requisition'].create({'line_ids': [(0, 0, {'product_id': self.product_09_id, 'product_qty': 10.0, 'product_uom_id': self.product_09_uom_id})]})
+1
View File
@@ -31,6 +31,7 @@ This module contains all the common features of Sales Management and eCommerce.
'views/sale_portal_templates.xml',
'views/sale_layout_category_view.xml',
'views/res_config_settings_views.xml',
'views/res_users_views.xml',
],
'demo': [
'data/sale_demo.xml',
+1
View File
@@ -13,3 +13,4 @@ from . import res_config_settings
from . import sale_layout
from . import sales_team
from . import ir_model_fields
from . import res_users

Some files were not shown because too many files have changed in this diff Show More