From 9c2f68e02818fba7bdb25beb29f1c661b88e808c Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Wed, 15 Jul 2015 14:14:16 +0200 Subject: [PATCH 01/12] [ADD] base_suspend_security --- base_suspend_security/README.rst | 56 ++++++++++++++++++ base_suspend_security/__init__.py | 20 +++++++ base_suspend_security/__openerp__.py | 38 ++++++++++++ .../base_suspend_security.py | 35 +++++++++++ base_suspend_security/models/__init__.py | 22 +++++++ .../models/ir_model_access.py | 34 +++++++++++ base_suspend_security/models/ir_rule.py | 38 ++++++++++++ base_suspend_security/models/res_users.py | 36 +++++++++++ .../static/description/icon.png | Bin 0 -> 9455 bytes base_suspend_security/tests/__init__.py | 20 +++++++ .../tests/test_base_suspend_security.py | 51 ++++++++++++++++ 11 files changed, 350 insertions(+) create mode 100644 base_suspend_security/README.rst create mode 100644 base_suspend_security/__init__.py create mode 100644 base_suspend_security/__openerp__.py create mode 100644 base_suspend_security/base_suspend_security.py create mode 100644 base_suspend_security/models/__init__.py create mode 100644 base_suspend_security/models/ir_model_access.py create mode 100644 base_suspend_security/models/ir_rule.py create mode 100644 base_suspend_security/models/res_users.py create mode 100644 base_suspend_security/static/description/icon.png create mode 100644 base_suspend_security/tests/__init__.py create mode 100644 base_suspend_security/tests/test_base_suspend_security.py diff --git a/base_suspend_security/README.rst b/base_suspend_security/README.rst new file mode 100644 index 00000000..886d7110 --- /dev/null +++ b/base_suspend_security/README.rst @@ -0,0 +1,56 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 +Suspend security +===================== + +This module was written to allow you to call code with some `uid` while being sure no security checks (`ir.model.access` and `ir.rule`) are done. In this way, it's the same as `sudo()`, but the crucial difference is that the code still runs with the original user id. This can be important for inherited code that calls workflow functions, subscribes the current user to some object, etc. + +Usually, you'll be in in the situation to want something like this if you inherit from a module you can't or don't want to change, and call `super()`. + +Usage +===== + +To use this module, you need to: + +* depend on this module +* call `yourmodel.suspend_security().function_to_run()`, just the same as you would use `sudo()` + +For further information, please visit: + +* https://www.odoo.com/forum/help-1 + +Known issues / Roadmap +====================== + +* the magic works by wrapping uid in a marker class, so if some code unwraps this in the calling tree, security checks will be reenabled + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback +`here `_. + +Credits +======= + +Contributors +------------ + +* Holger Brunn + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/base_suspend_security/__init__.py b/base_suspend_security/__init__.py new file mode 100644 index 00000000..cdb7d736 --- /dev/null +++ b/base_suspend_security/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import models diff --git a/base_suspend_security/__openerp__.py b/base_suspend_security/__openerp__.py new file mode 100644 index 00000000..637249e7 --- /dev/null +++ b/base_suspend_security/__openerp__.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{ + "name": "Suspend security", + "version": "1.0", + "author": "Therp BV", + "license": "AGPL-3", + "category": "Hidden/Dependency", + "summary": "Suspend security checks for a call", + "depends": [ + 'base', + ], + "test": [ + ], + "auto_install": False, + "installable": True, + "application": False, + "external_dependencies": { + 'python': [], + }, +} diff --git a/base_suspend_security/base_suspend_security.py b/base_suspend_security/base_suspend_security.py new file mode 100644 index 00000000..991d8be8 --- /dev/null +++ b/base_suspend_security/base_suspend_security.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + + +class BaseSuspendSecurityUid(int): + def __int__(self): + return self + + def __eq__(self, other): + if isinstance(other, (int, long)): + return False + return super(BaseSuspendSecurityUid, self).__int__() == other + + def __iter__(self): + yield super(BaseSuspendSecurityUid, self).__int__() + + +SUSPEND_METHOD = 'suspend_security' diff --git a/base_suspend_security/models/__init__.py b/base_suspend_security/models/__init__.py new file mode 100644 index 00000000..86454485 --- /dev/null +++ b/base_suspend_security/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import ir_rule +from . import ir_model_access +from . import res_users diff --git a/base_suspend_security/models/ir_model_access.py b/base_suspend_security/models/ir_model_access.py new file mode 100644 index 00000000..2f9ad850 --- /dev/null +++ b/base_suspend_security/models/ir_model_access.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models, tools +from ..base_suspend_security import BaseSuspendSecurityUid + + +class IrModelAccess(models.Model): + _inherit = 'ir.model.access' + + @tools.ormcache_context(accepted_keys=('lang')) + def check(self, cr, uid, model, mode='read', raise_exception=True, + context=None): + if isinstance(uid, BaseSuspendSecurityUid): + return True + return super(IrModelAccess, self).check( + cr, uid, model, mode=mode, raise_exception=raise_exception, + context=context) diff --git a/base_suspend_security/models/ir_rule.py b/base_suspend_security/models/ir_rule.py new file mode 100644 index 00000000..86c0ff2d --- /dev/null +++ b/base_suspend_security/models/ir_rule.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models, api +from ..base_suspend_security import BaseSuspendSecurityUid, SUSPEND_METHOD + + +class IrRule(models.Model): + _inherit = 'ir.rule' + + @api.model + def domain_get(self, model_name, mode='read'): + if isinstance(self.env.uid, BaseSuspendSecurityUid): + return [], [], ['"%s"' % self.pool[model_name]._table] + return super(IrRule, self).domain_get(model_name, mode=mode) + + def _register_hook(self, cr): + if not hasattr(models.BaseModel, SUSPEND_METHOD): + setattr(models.BaseModel, SUSPEND_METHOD, + lambda self: self.sudo( + user=BaseSuspendSecurityUid(self.env.uid))) + return super(IrRule, self)._register_hook(cr) diff --git a/base_suspend_security/models/res_users.py b/base_suspend_security/models/res_users.py new file mode 100644 index 00000000..03852cab --- /dev/null +++ b/base_suspend_security/models/res_users.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models +from ..base_suspend_security import BaseSuspendSecurityUid + + +class ResUsers(models.Model): + _inherit = 'res.users' + + @classmethod + def _browse(cls, env, ids): + """be sure we browse ints, ids laread is normalized""" + return super(ResUsers, cls)._browse( + env, + [ + i if not isinstance(i, BaseSuspendSecurityUid) + else super(BaseSuspendSecurityUid, i).__int__() + for i in ids + ]) diff --git a/base_suspend_security/static/description/icon.png b/base_suspend_security/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/base_suspend_security/tests/__init__.py b/base_suspend_security/tests/__init__.py new file mode 100644 index 00000000..6ab88d09 --- /dev/null +++ b/base_suspend_security/tests/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import test_base_suspend_security diff --git a/base_suspend_security/tests/test_base_suspend_security.py b/base_suspend_security/tests/test_base_suspend_security.py new file mode 100644 index 00000000..7621c052 --- /dev/null +++ b/base_suspend_security/tests/test_base_suspend_security.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import exceptions +from openerp.tests.common import TransactionCase + + +class TestBaseSuspendSecurity(TransactionCase): + def test_base_suspend_security(self): + # tests are called before register_hook + self.env['ir.rule']._register_hook() + user_id = self.env.ref('base.user_demo').id + other_company = self.env['res.company'].create({ + 'name': 'other company', + # without this, a partner is created and mail's constraint on + # notify_email kicks in + 'partner_id': self.env.ref('base.partner_demo').id, + }) + # be sure what we try is forbidden + with self.assertRaises(exceptions.AccessError): + self.env.ref('base.user_root').sudo(user_id).name = 'test' + with self.assertRaises(exceptions.AccessError): + other_company.sudo(user_id).name = 'test' + # this tests ir.model.access + self.env.ref('base.user_root').sudo(user_id).suspend_security().write({ + 'name': 'test'}) + self.assertEqual(self.env.ref('base.user_root').name, 'test') + self.assertEqual(self.env.ref('base.user_root').write_uid.id, user_id) + # this tests ir.rule + other_company.sudo(user_id).suspend_security().write({'name': 'test'}) + self.assertEqual(other_company.name, 'test') + self.assertEqual(other_company.write_uid.id, user_id) + # this tests if _normalize_args conversion works + self.env['res.users'].browse( + self.env['res.users'].suspend_security().env.uid) From 65740baa749ebfe23aaeb0902541aea24086d20b Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Mon, 20 Jul 2015 14:08:08 +0200 Subject: [PATCH 02/12] [FIX] flake8 --- base_suspend_security/models/res_users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_suspend_security/models/res_users.py b/base_suspend_security/models/res_users.py index 03852cab..be402570 100644 --- a/base_suspend_security/models/res_users.py +++ b/base_suspend_security/models/res_users.py @@ -23,7 +23,7 @@ from ..base_suspend_security import BaseSuspendSecurityUid class ResUsers(models.Model): _inherit = 'res.users' - + @classmethod def _browse(cls, env, ids): """be sure we browse ints, ids laread is normalized""" From a8f8646160b9b5b58d971c0a0509c0732a7f9376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Fri, 9 Oct 2015 10:03:09 +0200 Subject: [PATCH 03/12] [UPD] prefix versions with 8.0 --- base_suspend_security/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_suspend_security/__openerp__.py b/base_suspend_security/__openerp__.py index 637249e7..2c32e1a1 100644 --- a/base_suspend_security/__openerp__.py +++ b/base_suspend_security/__openerp__.py @@ -19,7 +19,7 @@ ############################################################################## { "name": "Suspend security", - "version": "1.0", + "version": "8.0.1.0.0", "author": "Therp BV", "license": "AGPL-3", "category": "Hidden/Dependency", From e91239e0236b6320a1d80cf74bac1d695f4c5201 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 14 Oct 2015 02:53:59 +0200 Subject: [PATCH 04/12] [MIG] Make modules uninstallable --- base_suspend_security/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_suspend_security/__openerp__.py b/base_suspend_security/__openerp__.py index 2c32e1a1..906d9019 100644 --- a/base_suspend_security/__openerp__.py +++ b/base_suspend_security/__openerp__.py @@ -30,7 +30,7 @@ "test": [ ], "auto_install": False, - "installable": True, + 'installable': False, "application": False, "external_dependencies": { 'python': [], From cba388082e21f4b6a0e78bc9ef891ddd1e0c4d89 Mon Sep 17 00:00:00 2001 From: "Adrien Peiffer (ACSONE)" Date: Wed, 13 Jan 2016 14:21:46 +0100 Subject: [PATCH 05/12] [PORT] Port base_suspend_security to 9.0 --- base_suspend_security/__openerp__.py | 2 +- base_suspend_security/models/ir_model_access.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/base_suspend_security/__openerp__.py b/base_suspend_security/__openerp__.py index 906d9019..adabd3c7 100644 --- a/base_suspend_security/__openerp__.py +++ b/base_suspend_security/__openerp__.py @@ -30,7 +30,7 @@ "test": [ ], "auto_install": False, - 'installable': False, + 'installable': True, "application": False, "external_dependencies": { 'python': [], diff --git a/base_suspend_security/models/ir_model_access.py b/base_suspend_security/models/ir_model_access.py index 2f9ad850..9a0afa3d 100644 --- a/base_suspend_security/models/ir_model_access.py +++ b/base_suspend_security/models/ir_model_access.py @@ -24,7 +24,8 @@ from ..base_suspend_security import BaseSuspendSecurityUid class IrModelAccess(models.Model): _inherit = 'ir.model.access' - @tools.ormcache_context(accepted_keys=('lang')) + @tools.ormcache_context('uid', 'model', 'mode', 'raise_exception', + keys=('lang',)) def check(self, cr, uid, model, mode='read', raise_exception=True, context=None): if isinstance(uid, BaseSuspendSecurityUid): From b73947dfa1bc99b030b3b85c5741e407d2c78a9c Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Fri, 29 Jan 2016 17:40:19 +0100 Subject: [PATCH 06/12] [FIX] Bump version to 9.0.1.0.0 --- base_suspend_security/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_suspend_security/__openerp__.py b/base_suspend_security/__openerp__.py index adabd3c7..59e8ee81 100644 --- a/base_suspend_security/__openerp__.py +++ b/base_suspend_security/__openerp__.py @@ -19,7 +19,7 @@ ############################################################################## { "name": "Suspend security", - "version": "8.0.1.0.0", + "version": "9.0.1.0.0", "author": "Therp BV", "license": "AGPL-3", "category": "Hidden/Dependency", From 5df0ceae13691cb7b78c7dba57577d7acba9f0fc Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 6 Oct 2016 16:08:19 +0200 Subject: [PATCH 07/12] [MIG] Make modules uninstallable --- base_suspend_security/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_suspend_security/__openerp__.py b/base_suspend_security/__openerp__.py index 59e8ee81..3fa4218f 100644 --- a/base_suspend_security/__openerp__.py +++ b/base_suspend_security/__openerp__.py @@ -30,7 +30,7 @@ "test": [ ], "auto_install": False, - 'installable': True, + 'installable': False, "application": False, "external_dependencies": { 'python': [], From a34ecbfb0e482c309a4d4b2b05e7a83e17847833 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 6 Oct 2016 16:08:27 +0200 Subject: [PATCH 08/12] [MIG] Rename manifest files --- base_suspend_security/{__openerp__.py => __manifest__.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename base_suspend_security/{__openerp__.py => __manifest__.py} (100%) diff --git a/base_suspend_security/__openerp__.py b/base_suspend_security/__manifest__.py similarity index 100% rename from base_suspend_security/__openerp__.py rename to base_suspend_security/__manifest__.py From c36c7e4f0e27f50d7a5df42732d5ac6023e1e082 Mon Sep 17 00:00:00 2001 From: "Adrien Peiffer (ACSONE)" Date: Fri, 28 Oct 2016 10:00:45 +0200 Subject: [PATCH 09/12] [MIG] base_suspend_security to 10.0 (#586) --- base_suspend_security/README.rst | 4 ++-- base_suspend_security/__manifest__.py | 12 ++---------- base_suspend_security/base_suspend_security.py | 3 --- base_suspend_security/models/__init__.py | 1 + base_suspend_security/models/base.py | 15 +++++++++++++++ base_suspend_security/models/ir_model_access.py | 13 ++++++------- base_suspend_security/models/ir_rule.py | 11 ++--------- base_suspend_security/models/res_users.py | 7 +++---- .../tests/test_base_suspend_security.py | 6 ++---- 9 files changed, 33 insertions(+), 39 deletions(-) create mode 100644 base_suspend_security/models/base.py diff --git a/base_suspend_security/README.rst b/base_suspend_security/README.rst index 886d7110..3bc2cc8f 100644 --- a/base_suspend_security/README.rst +++ b/base_suspend_security/README.rst @@ -29,8 +29,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback. Credits ======= @@ -39,6 +38,7 @@ Contributors ------------ * Holger Brunn +* Laurent Mignon Maintainer ---------- diff --git a/base_suspend_security/__manifest__.py b/base_suspend_security/__manifest__.py index 3fa4218f..2d3d0446 100644 --- a/base_suspend_security/__manifest__.py +++ b/base_suspend_security/__manifest__.py @@ -19,20 +19,12 @@ ############################################################################## { "name": "Suspend security", - "version": "9.0.1.0.0", - "author": "Therp BV", + "version": "10.0.1.0.0", + "author": "Therp BV, Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Hidden/Dependency", "summary": "Suspend security checks for a call", "depends": [ 'base', ], - "test": [ - ], - "auto_install": False, - 'installable': False, - "application": False, - "external_dependencies": { - 'python': [], - }, } diff --git a/base_suspend_security/base_suspend_security.py b/base_suspend_security/base_suspend_security.py index 991d8be8..dc7cdc46 100644 --- a/base_suspend_security/base_suspend_security.py +++ b/base_suspend_security/base_suspend_security.py @@ -30,6 +30,3 @@ class BaseSuspendSecurityUid(int): def __iter__(self): yield super(BaseSuspendSecurityUid, self).__int__() - - -SUSPEND_METHOD = 'suspend_security' diff --git a/base_suspend_security/models/__init__.py b/base_suspend_security/models/__init__.py index 86454485..029724b8 100644 --- a/base_suspend_security/models/__init__.py +++ b/base_suspend_security/models/__init__.py @@ -20,3 +20,4 @@ from . import ir_rule from . import ir_model_access from . import res_users +from . import base diff --git a/base_suspend_security/models/base.py b/base_suspend_security/models/base.py new file mode 100644 index 00000000..53b462b9 --- /dev/null +++ b/base_suspend_security/models/base.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models +from ..base_suspend_security import BaseSuspendSecurityUid + + +class Base(models.AbstractModel): + + _inherit = 'base' + + @api.model + def suspend_security(self): + return self.sudo(user=BaseSuspendSecurityUid(self.env.uid)) diff --git a/base_suspend_security/models/ir_model_access.py b/base_suspend_security/models/ir_model_access.py index 9a0afa3d..f67d8632 100644 --- a/base_suspend_security/models/ir_model_access.py +++ b/base_suspend_security/models/ir_model_access.py @@ -17,19 +17,18 @@ # along with this program. If not, see . # ############################################################################## -from openerp import models, tools +from odoo import models, api, tools from ..base_suspend_security import BaseSuspendSecurityUid class IrModelAccess(models.Model): _inherit = 'ir.model.access' - @tools.ormcache_context('uid', 'model', 'mode', 'raise_exception', + @api.model + @tools.ormcache_context('self._uid', 'model', 'mode', 'raise_exception', keys=('lang',)) - def check(self, cr, uid, model, mode='read', raise_exception=True, - context=None): - if isinstance(uid, BaseSuspendSecurityUid): + def check(self, model, mode='read', raise_exception=True): + if isinstance(self.env.uid, BaseSuspendSecurityUid): return True return super(IrModelAccess, self).check( - cr, uid, model, mode=mode, raise_exception=raise_exception, - context=context) + model, mode=mode, raise_exception=raise_exception) diff --git a/base_suspend_security/models/ir_rule.py b/base_suspend_security/models/ir_rule.py index 86c0ff2d..21a121ec 100644 --- a/base_suspend_security/models/ir_rule.py +++ b/base_suspend_security/models/ir_rule.py @@ -17,8 +17,8 @@ # along with this program. If not, see . # ############################################################################## -from openerp import models, api -from ..base_suspend_security import BaseSuspendSecurityUid, SUSPEND_METHOD +from odoo import models, api +from ..base_suspend_security import BaseSuspendSecurityUid class IrRule(models.Model): @@ -29,10 +29,3 @@ class IrRule(models.Model): if isinstance(self.env.uid, BaseSuspendSecurityUid): return [], [], ['"%s"' % self.pool[model_name]._table] return super(IrRule, self).domain_get(model_name, mode=mode) - - def _register_hook(self, cr): - if not hasattr(models.BaseModel, SUSPEND_METHOD): - setattr(models.BaseModel, SUSPEND_METHOD, - lambda self: self.sudo( - user=BaseSuspendSecurityUid(self.env.uid))) - return super(IrRule, self)._register_hook(cr) diff --git a/base_suspend_security/models/res_users.py b/base_suspend_security/models/res_users.py index be402570..a5e3b242 100644 --- a/base_suspend_security/models/res_users.py +++ b/base_suspend_security/models/res_users.py @@ -17,7 +17,7 @@ # along with this program. If not, see . # ############################################################################## -from openerp import models +from odoo import models from ..base_suspend_security import BaseSuspendSecurityUid @@ -25,12 +25,11 @@ class ResUsers(models.Model): _inherit = 'res.users' @classmethod - def _browse(cls, env, ids): + def _browse(cls, ids, env, prefetch=None): """be sure we browse ints, ids laread is normalized""" return super(ResUsers, cls)._browse( - env, [ i if not isinstance(i, BaseSuspendSecurityUid) else super(BaseSuspendSecurityUid, i).__int__() for i in ids - ]) + ], env, prefetch=prefetch) diff --git a/base_suspend_security/tests/test_base_suspend_security.py b/base_suspend_security/tests/test_base_suspend_security.py index 7621c052..8e1bb5a6 100644 --- a/base_suspend_security/tests/test_base_suspend_security.py +++ b/base_suspend_security/tests/test_base_suspend_security.py @@ -17,14 +17,12 @@ # along with this program. If not, see . # ############################################################################## -from openerp import exceptions -from openerp.tests.common import TransactionCase +from odoo import exceptions +from odoo.tests.common import TransactionCase class TestBaseSuspendSecurity(TransactionCase): def test_base_suspend_security(self): - # tests are called before register_hook - self.env['ir.rule']._register_hook() user_id = self.env.ref('base.user_demo').id other_company = self.env['res.company'].create({ 'name': 'other company', From 8efb54f2dc9079a723e5c9f856f893e2595f8a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?= Date: Sat, 2 Jun 2018 09:30:30 +0200 Subject: [PATCH 10/12] [FIX] rst syntax errors --- base_suspend_security/README.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/base_suspend_security/README.rst b/base_suspend_security/README.rst index 3bc2cc8f..8307d1ec 100644 --- a/base_suspend_security/README.rst +++ b/base_suspend_security/README.rst @@ -1,7 +1,8 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg :alt: License: AGPL-3 + Suspend security -===================== +================ This module was written to allow you to call code with some `uid` while being sure no security checks (`ir.model.access` and `ir.rule`) are done. In this way, it's the same as `sudo()`, but the crucial difference is that the code still runs with the original user id. This can be important for inherited code that calls workflow functions, subscribes the current user to some object, etc. From 6b929e28417020468797f9b365d51490502a2f26 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Mon, 5 Oct 2015 05:30:46 -0400 Subject: [PATCH 11/12] OCA Transbot updated translations from Transifex --- base_suspend_security/i18n/ar.po | 39 +++ base_suspend_security/i18n/ca.po | 39 +++ base_suspend_security/i18n/da.po | 39 +++ base_suspend_security/i18n/de.po | 39 +++ base_suspend_security/i18n/el_GR.po | 39 +++ base_suspend_security/i18n/en.po | 33 ++ base_suspend_security/i18n/es.po | 40 +++ base_suspend_security/i18n/es_ES.po | 39 +++ base_suspend_security/i18n/es_MX.po | 524 ++++++++++++++++++++++++++++ base_suspend_security/i18n/fi.po | 39 +++ base_suspend_security/i18n/fr.po | 39 +++ base_suspend_security/i18n/fr_CA.po | 524 ++++++++++++++++++++++++++++ base_suspend_security/i18n/fr_CH.po | 39 +++ base_suspend_security/i18n/fr_FR.po | 39 +++ base_suspend_security/i18n/hr.po | 40 +++ base_suspend_security/i18n/hr_HR.po | 33 ++ base_suspend_security/i18n/it.po | 40 +++ base_suspend_security/i18n/nl.po | 39 +++ base_suspend_security/i18n/nl_NL.po | 39 +++ base_suspend_security/i18n/pt.po | 39 +++ base_suspend_security/i18n/pt_BR.po | 39 +++ base_suspend_security/i18n/pt_PT.po | 524 ++++++++++++++++++++++++++++ base_suspend_security/i18n/ro.po | 39 +++ base_suspend_security/i18n/sl.po | 39 +++ base_suspend_security/i18n/tr.po | 39 +++ base_suspend_security/i18n/tr_TR.po | 39 +++ base_suspend_security/i18n/zh_CN.po | 34 ++ 27 files changed, 2494 insertions(+) create mode 100644 base_suspend_security/i18n/ar.po create mode 100644 base_suspend_security/i18n/ca.po create mode 100644 base_suspend_security/i18n/da.po create mode 100644 base_suspend_security/i18n/de.po create mode 100644 base_suspend_security/i18n/el_GR.po create mode 100644 base_suspend_security/i18n/en.po create mode 100644 base_suspend_security/i18n/es.po create mode 100644 base_suspend_security/i18n/es_ES.po create mode 100644 base_suspend_security/i18n/es_MX.po create mode 100644 base_suspend_security/i18n/fi.po create mode 100644 base_suspend_security/i18n/fr.po create mode 100644 base_suspend_security/i18n/fr_CA.po create mode 100644 base_suspend_security/i18n/fr_CH.po create mode 100644 base_suspend_security/i18n/fr_FR.po create mode 100644 base_suspend_security/i18n/hr.po create mode 100644 base_suspend_security/i18n/hr_HR.po create mode 100644 base_suspend_security/i18n/it.po create mode 100644 base_suspend_security/i18n/nl.po create mode 100644 base_suspend_security/i18n/nl_NL.po create mode 100644 base_suspend_security/i18n/pt.po create mode 100644 base_suspend_security/i18n/pt_BR.po create mode 100644 base_suspend_security/i18n/pt_PT.po create mode 100644 base_suspend_security/i18n/ro.po create mode 100644 base_suspend_security/i18n/sl.po create mode 100644 base_suspend_security/i18n/tr.po create mode 100644 base_suspend_security/i18n/tr_TR.po create mode 100644 base_suspend_security/i18n/zh_CN.po diff --git a/base_suspend_security/i18n/ar.po b/base_suspend_security/i18n/ar.po new file mode 100644 index 00000000..ccb09cba --- /dev/null +++ b/base_suspend_security/i18n/ar.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "المستخدمون" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/ca.po b/base_suspend_security/i18n/ca.po new file mode 100644 index 00000000..e5a706e5 --- /dev/null +++ b/base_suspend_security/i18n/ca.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2017-08-01 02:43+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Usuaris" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/da.po b/base_suspend_security/i18n/da.po new file mode 100644 index 00000000..b7087e08 --- /dev/null +++ b/base_suspend_security/i18n/da.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Danish (https://www.transifex.com/oca/teams/23907/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Brugere" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/de.po b/base_suspend_security/i18n/de.po new file mode 100644 index 00000000..f8e166e4 --- /dev/null +++ b/base_suspend_security/i18n/de.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Benutzer" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "base" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "ir.model.access" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "ir.rule" diff --git a/base_suspend_security/i18n/el_GR.po b/base_suspend_security/i18n/el_GR.po new file mode 100644 index 00000000..da2c1400 --- /dev/null +++ b/base_suspend_security/i18n/el_GR.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/el_GR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: el_GR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Χρήστες" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/en.po b/base_suspend_security/i18n/en.po new file mode 100644 index 00000000..8d3dea74 --- /dev/null +++ b/base_suspend_security/i18n/en.po @@ -0,0 +1,33 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (9.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-27 01:37+0000\n" +"PO-Revision-Date: 2016-02-26 11:19+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: English (http://www.transifex.com/oca/OCA-server-tools-9-0/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Users" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "ir.model.access" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "ir.rule" diff --git a/base_suspend_security/i18n/es.po b/base_suspend_security/i18n/es.po new file mode 100644 index 00000000..56214571 --- /dev/null +++ b/base_suspend_security/i18n/es.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +# Fernando Lara , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-22 00:54+0000\n" +"PO-Revision-Date: 2017-02-22 00:54+0000\n" +"Last-Translator: Fernando Lara , 2017\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Usuarios" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "base de datos" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "ir.modelo.acceso" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "ir.regla" diff --git a/base_suspend_security/i18n/es_ES.po b/base_suspend_security/i18n/es_ES.po new file mode 100644 index 00000000..a7fd9bb8 --- /dev/null +++ b/base_suspend_security/i18n/es_ES.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-22 00:54+0000\n" +"PO-Revision-Date: 2017-02-22 00:54+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/es_ES/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_ES\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Usuarios" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/es_MX.po b/base_suspend_security/i18n/es_MX.po new file mode 100644 index 00000000..303db9b5 --- /dev/null +++ b/base_suspend_security/i18n/es_MX.po @@ -0,0 +1,524 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 02:01+0000\n" +"PO-Revision-Date: 2016-12-23 02:01+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/es_MX/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_groups +msgid "Access Groups" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_category +msgid "Application" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_bank +msgid "Bank" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_change_password_wizard +msgid "Change Password Wizard" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_change_password_user +msgid "Change Password Wizard User" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_company +msgid "Companies" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_todo +msgid "Configuration Wizards" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country +msgid "Country" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country_group +msgid "Country Group" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country_state +msgid "Country state" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_currency +msgid "Currency" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_currency_rate +msgid "Currency Rate" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_external_dbsource +msgid "External Database Sources" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_fields +msgid "Fields" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_filters +msgid "Filters" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_font +msgid "Fonts available" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_http +msgid "HTTP routing" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_install +msgid "Install Language" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_import +msgid "Language Import" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_lang +msgid "Languages" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model +msgid "Models" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_module +msgid "Module" +msgstr "Módulo" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper +msgid "Module Prototyper" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_upgrade +msgid "Module Upgrade" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_module_dependency +msgid "Module dependency" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner +msgid "Partner" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_category +msgid "Partner Tags" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_server_object_lines +msgid "Server Action value mapping" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_update +msgid "Update Module" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model__unknown +msgid "_unknown" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_export +msgid "base.language.export" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_configuration +msgid "base.module.configuration" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_update_translations +msgid "base.update.translations" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_multi_image_image +msgid "base_multi_image.image" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_multi_image_owner +msgid "base_multi_image.owner" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_url +msgid "ir.actions.act_url" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window +msgid "ir.actions.act_window" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window_view +msgid "ir.actions.act_window.view" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window_close +msgid "ir.actions.act_window_close" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_actions +msgid "ir.actions.actions" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_client +msgid "ir.actions.client" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_report_xml +msgid "ir.actions.report.xml" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_server +msgid "ir.actions.server" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_autovacuum +msgid "ir.autovacuum" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_config_parameter +msgid "ir.config_parameter" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_cron +msgid "ir.cron" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_exports +msgid "ir.exports" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_exports_line +msgid "ir.exports.line" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_fields_converter +msgid "ir.fields.converter" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_logging +msgid "ir.logging" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_mail_server +msgid "ir.mail_server" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_constraint +msgid "ir.model.constraint" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_data +msgid "ir.model.data" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_relation +msgid "ir.model.relation" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_needaction_mixin +msgid "ir.needaction_mixin" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_property +msgid "ir.property" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb +msgid "ir.qweb" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field +msgid "ir.qweb.field" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_contact +msgid "ir.qweb.field.contact" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_date +msgid "ir.qweb.field.date" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_datetime +msgid "ir.qweb.field.datetime" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_duration +msgid "ir.qweb.field.duration" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_float +msgid "ir.qweb.field.float" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_html +msgid "ir.qweb.field.html" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_image +msgid "ir.qweb.field.image" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_integer +msgid "ir.qweb.field.integer" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_many2one +msgid "ir.qweb.field.many2one" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_monetary +msgid "ir.qweb.field.monetary" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_qweb +msgid "ir.qweb.field.qweb" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_relative +msgid "ir.qweb.field.relative" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_selection +msgid "ir.qweb.field.selection" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_text +msgid "ir.qweb.field.text" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_sequence +msgid "ir.sequence" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_sequence_date_range +msgid "ir.sequence.date_range" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_translation +msgid "ir.translation" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_menu +msgid "ir.ui.menu" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_view +msgid "ir.ui.view" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_view_custom +msgid "ir.ui.view.custom" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_values +msgid "ir.values" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper_api_version +msgid "module_prototyper.api_version" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper_module_export +msgid "module_prototyper.module.export" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_report_base_report_irmodulereference +msgid "report.base.report_irmodulereference" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config +msgid "res.config" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config_installer +msgid "res.config.installer" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config_settings +msgid "res.config.settings" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_title +msgid "res.partner.title" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_request_link +msgid "res.request.link" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users_log +msgid "res.users.log" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_wizard_ir_model_menu_create +msgid "wizard.ir.model.menu.create" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow +msgid "workflow" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_activity +msgid "workflow.activity" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_instance +msgid "workflow.instance" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_transition +msgid "workflow.transition" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_triggers +msgid "workflow.triggers" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_workitem +msgid "workflow.workitem" +msgstr "" diff --git a/base_suspend_security/i18n/fi.po b/base_suspend_security/i18n/fi.po new file mode 100644 index 00000000..67e2f24f --- /dev/null +++ b/base_suspend_security/i18n/fi.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Käyttäjät" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/fr.po b/base_suspend_security/i18n/fr.po new file mode 100644 index 00000000..579053eb --- /dev/null +++ b/base_suspend_security/i18n/fr.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Utilisateurs" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/fr_CA.po b/base_suspend_security/i18n/fr_CA.po new file mode 100644 index 00000000..ba1fd403 --- /dev/null +++ b/base_suspend_security/i18n/fr_CA.po @@ -0,0 +1,524 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 02:01+0000\n" +"PO-Revision-Date: 2016-12-23 02:01+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (Canada) (https://www.transifex.com/oca/teams/23907/fr_CA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr_CA\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_groups +msgid "Access Groups" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_category +msgid "Application" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_bank +msgid "Bank" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_change_password_wizard +msgid "Change Password Wizard" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_change_password_user +msgid "Change Password Wizard User" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_company +msgid "Companies" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_todo +msgid "Configuration Wizards" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country +msgid "Country" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country_group +msgid "Country Group" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country_state +msgid "Country state" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_currency +msgid "Currency" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_currency_rate +msgid "Currency Rate" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_external_dbsource +msgid "External Database Sources" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_fields +msgid "Fields" +msgstr "Champs" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_filters +msgid "Filters" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_font +msgid "Fonts available" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_http +msgid "HTTP routing" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_install +msgid "Install Language" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_import +msgid "Language Import" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_lang +msgid "Languages" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model +msgid "Models" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_module +msgid "Module" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper +msgid "Module Prototyper" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_upgrade +msgid "Module Upgrade" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_module_dependency +msgid "Module dependency" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner +msgid "Partner" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_category +msgid "Partner Tags" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_server_object_lines +msgid "Server Action value mapping" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_update +msgid "Update Module" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model__unknown +msgid "_unknown" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_export +msgid "base.language.export" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_configuration +msgid "base.module.configuration" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_update_translations +msgid "base.update.translations" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_multi_image_image +msgid "base_multi_image.image" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_multi_image_owner +msgid "base_multi_image.owner" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_url +msgid "ir.actions.act_url" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window +msgid "ir.actions.act_window" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window_view +msgid "ir.actions.act_window.view" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window_close +msgid "ir.actions.act_window_close" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_actions +msgid "ir.actions.actions" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_client +msgid "ir.actions.client" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_report_xml +msgid "ir.actions.report.xml" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_server +msgid "ir.actions.server" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_autovacuum +msgid "ir.autovacuum" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_config_parameter +msgid "ir.config_parameter" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_cron +msgid "ir.cron" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_exports +msgid "ir.exports" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_exports_line +msgid "ir.exports.line" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_fields_converter +msgid "ir.fields.converter" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_logging +msgid "ir.logging" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_mail_server +msgid "ir.mail_server" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_constraint +msgid "ir.model.constraint" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_data +msgid "ir.model.data" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_relation +msgid "ir.model.relation" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_needaction_mixin +msgid "ir.needaction_mixin" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_property +msgid "ir.property" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb +msgid "ir.qweb" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field +msgid "ir.qweb.field" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_contact +msgid "ir.qweb.field.contact" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_date +msgid "ir.qweb.field.date" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_datetime +msgid "ir.qweb.field.datetime" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_duration +msgid "ir.qweb.field.duration" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_float +msgid "ir.qweb.field.float" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_html +msgid "ir.qweb.field.html" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_image +msgid "ir.qweb.field.image" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_integer +msgid "ir.qweb.field.integer" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_many2one +msgid "ir.qweb.field.many2one" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_monetary +msgid "ir.qweb.field.monetary" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_qweb +msgid "ir.qweb.field.qweb" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_relative +msgid "ir.qweb.field.relative" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_selection +msgid "ir.qweb.field.selection" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_text +msgid "ir.qweb.field.text" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_sequence +msgid "ir.sequence" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_sequence_date_range +msgid "ir.sequence.date_range" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_translation +msgid "ir.translation" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_menu +msgid "ir.ui.menu" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_view +msgid "ir.ui.view" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_view_custom +msgid "ir.ui.view.custom" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_values +msgid "ir.values" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper_api_version +msgid "module_prototyper.api_version" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper_module_export +msgid "module_prototyper.module.export" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_report_base_report_irmodulereference +msgid "report.base.report_irmodulereference" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config +msgid "res.config" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config_installer +msgid "res.config.installer" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config_settings +msgid "res.config.settings" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_title +msgid "res.partner.title" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_request_link +msgid "res.request.link" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users_log +msgid "res.users.log" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_wizard_ir_model_menu_create +msgid "wizard.ir.model.menu.create" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow +msgid "workflow" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_activity +msgid "workflow.activity" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_instance +msgid "workflow.instance" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_transition +msgid "workflow.transition" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_triggers +msgid "workflow.triggers" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_workitem +msgid "workflow.workitem" +msgstr "" diff --git a/base_suspend_security/i18n/fr_CH.po b/base_suspend_security/i18n/fr_CH.po new file mode 100644 index 00000000..a1c08c45 --- /dev/null +++ b/base_suspend_security/i18n/fr_CH.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/teams/23907/fr_CH/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr_CH\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Utilisateurs" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/fr_FR.po b/base_suspend_security/i18n/fr_FR.po new file mode 100644 index 00000000..6907d9d7 --- /dev/null +++ b/base_suspend_security/i18n/fr_FR.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# Aurel , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-08 03:37+0000\n" +"PO-Revision-Date: 2017-02-08 03:37+0000\n" +"Last-Translator: Aurel , 2017\n" +"Language-Team: French (France) (https://www.transifex.com/oca/teams/23907/fr_FR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr_FR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Utilsateurs" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/hr.po b/base_suspend_security/i18n/hr.po new file mode 100644 index 00000000..943633ee --- /dev/null +++ b/base_suspend_security/i18n/hr.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-01 10:38+0000\n" +"PO-Revision-Date: 2017-05-01 10:38+0000\n" +"Last-Translator: Bole , 2017\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Korisnici" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "base" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "ir.model.access" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "ir.rule" diff --git a/base_suspend_security/i18n/hr_HR.po b/base_suspend_security/i18n/hr_HR.po new file mode 100644 index 00000000..b372893e --- /dev/null +++ b/base_suspend_security/i18n/hr_HR.po @@ -0,0 +1,33 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (9.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-06-09 12:31+0000\n" +"PO-Revision-Date: 2016-02-26 11:19+0000\n" +"Last-Translator: <>\n" +"Language-Team: Croatian (Croatia) (http://www.transifex.com/oca/OCA-server-tools-9-0/language/hr_HR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr_HR\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Korisnici" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/it.po b/base_suspend_security/i18n/it.po new file mode 100644 index 00000000..2711e3df --- /dev/null +++ b/base_suspend_security/i18n/it.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +# Paolo Valier , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-06 02:25+0000\n" +"PO-Revision-Date: 2018-01-06 02:25+0000\n" +"Last-Translator: Paolo Valier , 2018\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Utenti" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "ir.model.access" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "ir.rule" diff --git a/base_suspend_security/i18n/nl.po b/base_suspend_security/i18n/nl.po new file mode 100644 index 00000000..c31cf63d --- /dev/null +++ b/base_suspend_security/i18n/nl.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Gebruikers" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/nl_NL.po b/base_suspend_security/i18n/nl_NL.po new file mode 100644 index 00000000..d1af96bf --- /dev/null +++ b/base_suspend_security/i18n/nl_NL.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:17+0000\n" +"PO-Revision-Date: 2017-12-16 02:17+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/teams/23907/nl_NL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Gebruikers" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "ir.model.access" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/pt.po b/base_suspend_security/i18n/pt.po new file mode 100644 index 00000000..4abbce62 --- /dev/null +++ b/base_suspend_security/i18n/pt.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# Pedro Castro Silva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2017-08-01 02:43+0000\n" +"Last-Translator: Pedro Castro Silva , 2017\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Utilizadores" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/pt_BR.po b/base_suspend_security/i18n/pt_BR.po new file mode 100644 index 00000000..93498303 --- /dev/null +++ b/base_suspend_security/i18n/pt_BR.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Usuários" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/pt_PT.po b/base_suspend_security/i18n/pt_PT.po new file mode 100644 index 00000000..a2111bde --- /dev/null +++ b/base_suspend_security/i18n/pt_PT.po @@ -0,0 +1,524 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 02:01+0000\n" +"PO-Revision-Date: 2016-12-23 02:01+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/teams/23907/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_groups +msgid "Access Groups" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_category +msgid "Application" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_bank +msgid "Bank" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_change_password_wizard +msgid "Change Password Wizard" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_change_password_user +msgid "Change Password Wizard User" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_company +msgid "Companies" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_todo +msgid "Configuration Wizards" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country +msgid "Country" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country_group +msgid "Country Group" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_country_state +msgid "Country state" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_currency +msgid "Currency" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_currency_rate +msgid "Currency Rate" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_external_dbsource +msgid "External Database Sources" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_fields +msgid "Fields" +msgstr "Campos" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_filters +msgid "Filters" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_font +msgid "Fonts available" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_http +msgid "HTTP routing" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_install +msgid "Install Language" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_import +msgid "Language Import" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_lang +msgid "Languages" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model +msgid "Models" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_module +msgid "Module" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper +msgid "Module Prototyper" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_upgrade +msgid "Module Upgrade" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_module_module_dependency +msgid "Module dependency" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner +msgid "Partner" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_category +msgid "Partner Tags" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_server_object_lines +msgid "Server Action value mapping" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_update +msgid "Update Module" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model__unknown +msgid "_unknown" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_language_export +msgid "base.language.export" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_module_configuration +msgid "base.module.configuration" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_update_translations +msgid "base.update.translations" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_multi_image_image +msgid "base_multi_image.image" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base_multi_image_owner +msgid "base_multi_image.owner" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_url +msgid "ir.actions.act_url" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window +msgid "ir.actions.act_window" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window_view +msgid "ir.actions.act_window.view" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_act_window_close +msgid "ir.actions.act_window_close" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_actions +msgid "ir.actions.actions" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_client +msgid "ir.actions.client" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_report_xml +msgid "ir.actions.report.xml" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_actions_server +msgid "ir.actions.server" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_autovacuum +msgid "ir.autovacuum" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_config_parameter +msgid "ir.config_parameter" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_cron +msgid "ir.cron" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_exports +msgid "ir.exports" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_exports_line +msgid "ir.exports.line" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_fields_converter +msgid "ir.fields.converter" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_logging +msgid "ir.logging" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_mail_server +msgid "ir.mail_server" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_constraint +msgid "ir.model.constraint" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_data +msgid "ir.model.data" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_relation +msgid "ir.model.relation" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_needaction_mixin +msgid "ir.needaction_mixin" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_property +msgid "ir.property" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb +msgid "ir.qweb" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field +msgid "ir.qweb.field" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_contact +msgid "ir.qweb.field.contact" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_date +msgid "ir.qweb.field.date" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_datetime +msgid "ir.qweb.field.datetime" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_duration +msgid "ir.qweb.field.duration" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_float +msgid "ir.qweb.field.float" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_html +msgid "ir.qweb.field.html" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_image +msgid "ir.qweb.field.image" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_integer +msgid "ir.qweb.field.integer" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_many2one +msgid "ir.qweb.field.many2one" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_monetary +msgid "ir.qweb.field.monetary" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_qweb +msgid "ir.qweb.field.qweb" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_relative +msgid "ir.qweb.field.relative" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_selection +msgid "ir.qweb.field.selection" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_qweb_field_text +msgid "ir.qweb.field.text" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_sequence +msgid "ir.sequence" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_sequence_date_range +msgid "ir.sequence.date_range" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_translation +msgid "ir.translation" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_menu +msgid "ir.ui.menu" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_view +msgid "ir.ui.view" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_ui_view_custom +msgid "ir.ui.view.custom" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_values +msgid "ir.values" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper_api_version +msgid "module_prototyper.api_version" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_module_prototyper_module_export +msgid "module_prototyper.module.export" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_report_base_report_irmodulereference +msgid "report.base.report_irmodulereference" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config +msgid "res.config" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config_installer +msgid "res.config.installer" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_config_settings +msgid "res.config.settings" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_partner_title +msgid "res.partner.title" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_request_link +msgid "res.request.link" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users_log +msgid "res.users.log" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_wizard_ir_model_menu_create +msgid "wizard.ir.model.menu.create" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow +msgid "workflow" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_activity +msgid "workflow.activity" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_instance +msgid "workflow.instance" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_transition +msgid "workflow.transition" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_triggers +msgid "workflow.triggers" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_workflow_workitem +msgid "workflow.workitem" +msgstr "" diff --git a/base_suspend_security/i18n/ro.po b/base_suspend_security/i18n/ro.po new file mode 100644 index 00000000..e13ad605 --- /dev/null +++ b/base_suspend_security/i18n/ro.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# Daniel Schweiger , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-22 01:12+0000\n" +"PO-Revision-Date: 2017-06-22 01:12+0000\n" +"Last-Translator: Daniel Schweiger , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Utilizatori" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/sl.po b/base_suspend_security/i18n/sl.po new file mode 100644 index 00000000..958a37cb --- /dev/null +++ b/base_suspend_security/i18n/sl.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Uporabniki" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "ir.model.access" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "ir.rule" diff --git a/base_suspend_security/i18n/tr.po b/base_suspend_security/i18n/tr.po new file mode 100644 index 00000000..f945bf94 --- /dev/null +++ b/base_suspend_security/i18n/tr.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Kullanıcılar" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/tr_TR.po b/base_suspend_security/i18n/tr_TR.po new file mode 100644 index 00000000..6fdd5858 --- /dev/null +++ b/base_suspend_security/i18n/tr_TR.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-22 00:54+0000\n" +"PO-Revision-Date: 2017-02-22 00:54+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/tr_TR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr_TR\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "Kullanıcılar" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_base +msgid "base" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/base_suspend_security/i18n/zh_CN.po b/base_suspend_security/i18n/zh_CN.po new file mode 100644 index 00000000..003b015a --- /dev/null +++ b/base_suspend_security/i18n/zh_CN.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_suspend_security +# +# Translators: +# Jeffery Chenn , 2016 +msgid "" +msgstr "" +"Project-Id-Version: server-tools (9.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-31 11:58+0000\n" +"PO-Revision-Date: 2016-09-04 06:07+0000\n" +"Last-Translator: Jeffery Chenn \n" +"Language-Team: Chinese (China) (http://www.transifex.com/oca/OCA-server-tools-9-0/language/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_res_users +msgid "Users" +msgstr "用户" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_model_access +msgid "ir.model.access" +msgstr "" + +#. module: base_suspend_security +#: model:ir.model,name:base_suspend_security.model_ir_rule +msgid "ir.rule" +msgstr "" From fc4d1cb2f871a7dc4442e0ec6c675a51423b1fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Garbely?= Date: Fri, 8 Jun 2018 10:41:48 +0200 Subject: [PATCH 12/12] [MIG] base_suspend_security: Migration to 11.0 --- base_suspend_security/README.rst | 3 ++- base_suspend_security/__init__.py | 1 - base_suspend_security/__manifest__.py | 5 ++--- base_suspend_security/base_suspend_security.py | 7 +++++-- base_suspend_security/models/__init__.py | 7 +++---- base_suspend_security/models/base.py | 2 +- base_suspend_security/models/ir_model_access.py | 4 ++-- base_suspend_security/models/ir_rule.py | 4 ++-- base_suspend_security/models/res_users.py | 2 +- base_suspend_security/tests/__init__.py | 1 - base_suspend_security/tests/test_base_suspend_security.py | 1 - 11 files changed, 18 insertions(+), 19 deletions(-) diff --git a/base_suspend_security/README.rst b/base_suspend_security/README.rst index 8307d1ec..60297e63 100644 --- a/base_suspend_security/README.rst +++ b/base_suspend_security/README.rst @@ -28,7 +28,7 @@ Known issues / Roadmap Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed feedback. @@ -40,6 +40,7 @@ Contributors * Holger Brunn * Laurent Mignon +* Frédéric Garbely Maintainer ---------- diff --git a/base_suspend_security/__init__.py b/base_suspend_security/__init__.py index cdb7d736..c450fc83 100644 --- a/base_suspend_security/__init__.py +++ b/base_suspend_security/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV . diff --git a/base_suspend_security/__manifest__.py b/base_suspend_security/__manifest__.py index 2d3d0446..07a1bf58 100644 --- a/base_suspend_security/__manifest__.py +++ b/base_suspend_security/__manifest__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV . @@ -19,8 +18,8 @@ ############################################################################## { "name": "Suspend security", - "version": "10.0.1.0.0", - "author": "Therp BV, Odoo Community Association (OCA)", + "version": "11.0.1.0.0", + "author": "Therp BV, brain-tec AG, Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Hidden/Dependency", "summary": "Suspend security checks for a call", diff --git a/base_suspend_security/base_suspend_security.py b/base_suspend_security/base_suspend_security.py index dc7cdc46..caba4756 100644 --- a/base_suspend_security/base_suspend_security.py +++ b/base_suspend_security/base_suspend_security.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV . @@ -17,6 +16,7 @@ # along with this program. If not, see . # ############################################################################## +from odoo.tools import pycompat class BaseSuspendSecurityUid(int): @@ -24,9 +24,12 @@ class BaseSuspendSecurityUid(int): return self def __eq__(self, other): - if isinstance(other, (int, long)): + if isinstance(other, pycompat.integer_types): return False return super(BaseSuspendSecurityUid, self).__int__() == other + def __hash__(self): + return super(BaseSuspendSecurityUid, self).__hash__() + def __iter__(self): yield super(BaseSuspendSecurityUid, self).__int__() diff --git a/base_suspend_security/models/__init__.py b/base_suspend_security/models/__init__.py index 029724b8..861ec124 100644 --- a/base_suspend_security/models/__init__.py +++ b/base_suspend_security/models/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV . @@ -17,7 +16,7 @@ # along with this program. If not, see . # ############################################################################## -from . import ir_rule -from . import ir_model_access -from . import res_users from . import base +from . import ir_model_access +from . import ir_rule +from . import res_users diff --git a/base_suspend_security/models/base.py b/base_suspend_security/models/base.py index 53b462b9..ed705c6e 100644 --- a/base_suspend_security/models/base.py +++ b/base_suspend_security/models/base.py @@ -1,8 +1,8 @@ -# -*- coding: utf-8 -*- # Copyright 2016 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, models + from ..base_suspend_security import BaseSuspendSecurityUid diff --git a/base_suspend_security/models/ir_model_access.py b/base_suspend_security/models/ir_model_access.py index f67d8632..f90d3dd4 100644 --- a/base_suspend_security/models/ir_model_access.py +++ b/base_suspend_security/models/ir_model_access.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV (). @@ -17,7 +16,8 @@ # along with this program. If not, see . # ############################################################################## -from odoo import models, api, tools +from odoo import api, models, tools + from ..base_suspend_security import BaseSuspendSecurityUid diff --git a/base_suspend_security/models/ir_rule.py b/base_suspend_security/models/ir_rule.py index 21a121ec..111430f3 100644 --- a/base_suspend_security/models/ir_rule.py +++ b/base_suspend_security/models/ir_rule.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV (). @@ -17,7 +16,8 @@ # along with this program. If not, see . # ############################################################################## -from odoo import models, api +from odoo import api, models + from ..base_suspend_security import BaseSuspendSecurityUid diff --git a/base_suspend_security/models/res_users.py b/base_suspend_security/models/res_users.py index a5e3b242..e7b16e90 100644 --- a/base_suspend_security/models/res_users.py +++ b/base_suspend_security/models/res_users.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV (). @@ -18,6 +17,7 @@ # ############################################################################## from odoo import models + from ..base_suspend_security import BaseSuspendSecurityUid diff --git a/base_suspend_security/tests/__init__.py b/base_suspend_security/tests/__init__.py index 6ab88d09..af8225bd 100644 --- a/base_suspend_security/tests/__init__.py +++ b/base_suspend_security/tests/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV . diff --git a/base_suspend_security/tests/test_base_suspend_security.py b/base_suspend_security/tests/test_base_suspend_security.py index 8e1bb5a6..82d15b9a 100644 --- a/base_suspend_security/tests/test_base_suspend_security.py +++ b/base_suspend_security/tests/test_base_suspend_security.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- ############################################################################## # # This module copyright (C) 2015 Therp BV ().