Skip to content

[9.0][FIX][IMP][base_multi_image] New related field and uninstall hook - #485

Merged
pedrobaeza merged 6 commits into
OCA:9.0from
Tecnativa:9.0-base_multi_image-owner_linked
Jul 29, 2016
Merged

[9.0][FIX][IMP][base_multi_image] New related field and uninstall hook#485
pedrobaeza merged 6 commits into
OCA:9.0from
Tecnativa:9.0-base_multi_image-owner_linked

Conversation

@yajo

@yajo yajo commented Jul 20, 2016

Copy link
Copy Markdown
Member

This is both IMP and FIX.

FIX:

  • Adding an uninstall hook to remove dangling images when a submodule is uninstalled. This will require submodules to add it.

IMP:

  • Modernize a couple of calls.
  • Add new owner_ref_id reference field that allows an admin to go to the image's owner just with 1 click, and more important, allows to set ir.rules for images based on the owner.
  • Modify the post init hook to save this information too.

@Tecnativa @carlosdauden

@yajo

yajo commented Jul 21, 2016

Copy link
Copy Markdown
Member Author

I added a new fix in f71b17e, to pass a test in OCA/partner-contact#287. This was raising an error like this when setting an image to an owner:

2016-07-21 09:08:58,591 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: ERROR: test_set_image (openerp.addons.partner_multi_image.tests.test_res_partner.ResPartnerCase)
2016-07-21 09:08:58,591 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: ` Image is OK.
2016-07-21 09:08:58,592 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: Traceback (most recent call last):
2016-07-21 09:08:58,592 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/opt/odoo/extra-addons/partner-contact/partner_multi_image/tests/test_res_partner.py", line 26, in test_set_image
2016-07-21 09:08:58,592 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     self.partner.image = image.read().encode("base64")
2016-07-21 09:08:58,592 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/fields.py", line 865, in __set__
2016-07-21 09:08:58,593 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     record.write({self.name: self.convert_to_write(value)})
2016-07-21 09:08:58,593 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,593 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,593 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/addons/base/res/res_partner.py", line 510, in write
2016-07-21 09:08:58,594 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     result = super(res_partner, self).write(vals)
2016-07-21 09:08:58,594 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,594 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,594 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/models.py", line 3848, in write
2016-07-21 09:08:58,595 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     self._fields[key].determine_inverse(self)
2016-07-21 09:08:58,595 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/fields.py", line 954, in determine_inverse
2016-07-21 09:08:58,595 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     self.inverse(records)
2016-07-21 09:08:58,595 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/fields.py", line 595, in _inverse_related
2016-07-21 09:08:58,595 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     other[field.name] = record_value[record]
2016-07-21 09:08:58,595 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/models.py", line 5761, in __setitem__
2016-07-21 09:08:58,595 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return self._fields[key].__set__(self, value)
2016-07-21 09:08:58,596 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/fields.py", line 865, in __set__
2016-07-21 09:08:58,596 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     record.write({self.name: self.convert_to_write(value)})
2016-07-21 09:08:58,596 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,596 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,596 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/addons/base/res/res_partner.py", line 510, in write
2016-07-21 09:08:58,596 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     result = super(res_partner, self).write(vals)
2016-07-21 09:08:58,596 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,597 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,597 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/models.py", line 3848, in write
2016-07-21 09:08:58,597 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     self._fields[key].determine_inverse(self)
2016-07-21 09:08:58,597 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/fields.py", line 952, in determine_inverse
2016-07-21 09:08:58,597 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     getattr(records, self.inverse)()
2016-07-21 09:08:58,597 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,597 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,598 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/opt/odoo/extra-addons/server-tools/base_multi_image/models/owner.py", line 81, in _set_multi_image_main
2016-07-21 09:08:58,598 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     self._set_multi_image(self.image_main)
2016-07-21 09:08:58,598 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,598 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,598 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/opt/odoo/extra-addons/server-tools/base_multi_image/models/owner.py", line 74, in _set_multi_image
2016-07-21 09:08:58,598 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     s.image_ids = s.image_ids.create(values)
2016-07-21 09:08:58,598 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/fields.py", line 865, in __set__
2016-07-21 09:08:58,599 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     record.write({self.name: self.convert_to_write(value)})
2016-07-21 09:08:58,599 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,599 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,599 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/addons/base/res/res_partner.py", line 510, in write
2016-07-21 09:08:58,599 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     result = super(res_partner, self).write(vals)
2016-07-21 09:08:58,599 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,599 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,600 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/models.py", line 3837, in write
2016-07-21 09:08:58,600 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     self._write(old_vals)
2016-07-21 09:08:58,600 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 248, in wrapper
2016-07-21 09:08:58,600 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     return new_api(self, *args, **kwargs)
2016-07-21 09:08:58,600 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/api.py", line 574, in new_api
2016-07-21 09:08:58,600 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     result = method(self._model, cr, uid, self.ids, *args, **old_kwargs)
2016-07-21 09:08:58,601 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/models.py", line 3995, in _write
2016-07-21 09:08:58,601 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     result += self._columns[field].set(cr, self, id, field, vals[field], user, context=rel_context) or []
2016-07-21 09:08:58,601 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/osv/fields.py", line 854, in set
2016-07-21 09:08:58,601 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     if inverse_field.ondelete == "cascade":
2016-07-21 09:08:58,601 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `   File "/usr/lib/python2.7/site-packages/openerp/fields.py", line 360, in __getattr__
2016-07-21 09:08:58,601 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: `     raise AttributeError(name)
2016-07-21 09:08:58,602 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: ` AttributeError: ondelete
2016-07-21 09:08:58,602 20 INFO demo openerp.addons.partner_multi_image.tests.test_res_partner: Ran 1 test in 0.414s
2016-07-21 09:08:58,602 20 ERROR demo openerp.addons.partner_multi_image.tests.test_res_partner: FAILED
2016-07-21 09:08:58,602 20 INFO demo openerp.addons.partner_multi_image.tests.test_res_partner:  (errors=1)
2016-07-21 09:08:58,603 20 ERROR demo openerp.modules.module: Module partner_multi_image: 0 failures, 1 errors

Comment thread base_multi_image/README.rst Outdated
:meth:`~.hooks.uninstall_hook_for_submodules`, like the
``product_multi_image`` module does::

from openerp.addons.base_multi_image.hooks import \

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put here the code to protect the import like it was done in the module.

@rafaelbn

Copy link
Copy Markdown
Member

👍

@rafaelbn

Copy link
Copy Markdown
Member

@pedrobaeza could you take a look here please

@pedrobaeza

Copy link
Copy Markdown
Member

There's one comment from me not honored. @yajo, please change it.

@pedrobaeza

Copy link
Copy Markdown
Member

Fixed README by myself, so merging.

👍

@pedrobaeza
pedrobaeza merged commit dc60fff into OCA:9.0 Jul 29, 2016
@pedrobaeza
pedrobaeza deleted the 9.0-base_multi_image-owner_linked branch July 29, 2016 18:21
SiesslPhillip pushed a commit to grueneerde/OCA-server-tools that referenced this pull request Nov 20, 2024
Syncing from upstream OCA/server-tools (12.0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants