In Odoo v9, every request calls `res.users.check()`, which stores one authentication attempt per request, which is false.
Besides, it easily leads to hitting ip-api.com rate limits, so now that API is only asked when seeing in form view (simply by setting the computed field as not stored).
Also, form view was hidden, so it's now visible.
If you test this addon after installing `partner_event`, you get this error in all tests:
ERROR: test_validate_pass_reset_error (odoo.addons.password_security.tests.test_res_users.TestResUsers)
` It should throw PassError on reset inside min threshold
Traceback (most recent call last):
` File "/opt/odoo/auto/addons/password_security/tests/test_res_users.py", line 143, in test_validate_pass_reset_error
` rec_id = self._new_record()
` File "/opt/odoo/auto/addons/password_security/tests/test_res_users.py", line 46, in _new_record
` partner_id = self.env['res.partner'].create(self.partner_vals)
` File "/opt/odoo/auto/addons/mail_tracking_mailgun/models/res_partner.py", line 154, in create
` return super(ResPartner, self).create(vals)
` File "/opt/odoo/auto/addons/partner_firstname/models/res_partner.py", line 54, in create
` return super(ResPartner, self.with_context(context)).create(vals)
` File "/opt/odoo/custom/src/odoo/odoo/addons/base/res/res_partner.py", line 532, in create
` partner = super(Partner, self).create(vals)
` File "/opt/odoo/auto/addons/mail/models/mail_thread.py", line 228, in create
` thread = super(MailThread, self).create(values)
` File "/opt/odoo/custom/src/odoo/odoo/models.py", line 3847, in create
` record = self.browse(self._create(old_vals))
` File "/opt/odoo/custom/src/odoo/odoo/models.py", line 4006, in _create
` self.recompute()
` File "/opt/odoo/custom/src/odoo/odoo/models.py", line 5336, in recompute
` vals = rec._convert_to_write({n: rec[n] for n in ns})
` File "/opt/odoo/custom/src/odoo/odoo/models.py", line 5336, in <dictcomp>
` vals = rec._convert_to_write({n: rec[n] for n in ns})
` File "/opt/odoo/custom/src/odoo/odoo/models.py", line 5232, in __getitem__
` return self._fields[key].__get__(self, type(self))
` File "/opt/odoo/custom/src/odoo/odoo/fields.py", line 918, in __get__
` value = record._cache[self]
` File "/opt/odoo/custom/src/odoo/odoo/models.py", line 5584, in __getitem__
` return value.get() if isinstance(value, SpecialValue) else value
` File "/opt/odoo/custom/src/odoo/odoo/fields.py", line 48, in get
` raise self.exception
` AccessError: (u'Sorry, you are not allowed to access this document. Only users with the following access level are currently allowed to do that:\n- Events/User\n\n(Document model: event.registration)', None)
Since creating users or partners in tests has a very high probability to collide with other addons, this test is being moved to post mode.
Also, to avoid the above permissions issue, the partner is actually created through the admin user, which actually has permissions to read everything. Then, it is `.sudo()`ed later, to perform the module tests correctly. The tests do not get affected because what is being tested was not [intended to be] the partner creation itself, but the password policy enforcement.
Include HACK for https://github.com/odoo/odoo/pull/24833, which explains the false positive problem we were having here: an addon being importable doesn't mean it is installed.
The goal was to force developers to write validation logic.
Now it's becoming useless with keychain.backend
And it adds boilerplate code.
In this commit, we set a permissive default validation logic.
It will reduce code in consumers module and still allow fine grained validation.
* [FIX][mass_editing] v9 Fixing error when removing value for fields being translatable, as their translations were not removed.
* Fixing travis errors
* Adding contribution
Without this patch, when upgrading after you have stored the deprecated features parameter, the cursor became broken and no more migrations could happen. You got this error:
Traceback (most recent call last):
File "/usr/local/bin/odoo", line 6, in <module>
exec(compile(open(__file__).read(), __file__, 'exec'))
File "/opt/odoo/custom/src/odoo/odoo.py", line 160, in <module>
main()
File "/opt/odoo/custom/src/odoo/odoo.py", line 157, in main
openerp.cli.main()
File "/opt/odoo/custom/src/odoo/openerp/cli/command.py", line 64, in main
o.run(args)
File "/opt/odoo/custom/src/odoo/openerp/cli/shell.py", line 65, in run
self.shell(openerp.tools.config['db_name'])
File "/opt/odoo/custom/src/odoo/openerp/cli/shell.py", line 52, in shell
registry = openerp.modules.registry.RegistryManager.get(dbname)
File "/opt/odoo/custom/src/odoo/openerp/modules/registry.py", line 355, in get
update_module)
File "/opt/odoo/custom/src/odoo/openerp/modules/registry.py", line 386, in new
openerp.modules.load_modules(registry._db, force_demo, status, update_module)
File "/opt/odoo/custom/src/odoo/openerp/modules/loading.py", line 335, in load_modules
force, status, report, loaded_modules, update_module)
File "/opt/odoo/custom/src/odoo/openerp/modules/loading.py", line 239, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/opt/odoo/custom/src/odoo/openerp/modules/loading.py", line 136, in load_module_graph
registry.setup_models(cr, partial=True)
File "/opt/odoo/custom/src/odoo/openerp/modules/registry.py", line 186, in setup_models
cr.execute('select model, transient from ir_model where state=%s', ('manual',))
File "/opt/odoo/custom/src/odoo/openerp/sql_db.py", line 154, in wrapper
return f(self, *args, **kwargs)
File "/opt/odoo/custom/src/odoo/openerp/sql_db.py", line 233, in execute
res = self._obj.execute(query, params)
psycopg2.InternalError: current transaction is aborted, commands ignored until end of transaction block
Now you can safely migrate, be that parameter pre-created or not.