sync-addons
sync-addons copied to clipboard
sync: delete link if odoo record doesn't exist anymore
https://github.com/itpp-labs/sync-addons/blob/8fe04646fa8d6b05a5f8b56db977331065438423/sync/models/sync_link.py#L153
Could be replaced with:
links = self.search(domain)
odoo_links = links.filtered(lambda r: r.system1 == ODOO)
odoo_links_to_delete = odoo_links - odoo_links.exists()
if odoo_links_to_delete:
self._log("Delete obsolete links: {}".format([(link.odoo, link.relation, link.system2, link.ref2, link.date) for link in odoo_links_to_delete))
odoo_links = odoo_links - odoo_links_to_delete
It seems to me that this error refers to this issue:
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/api.py", line 790, in get
return field_cache[record._ids[0]]
KeyError: 323
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/fields.py", line 970, in __get__
value = env.cache.get(record, self)
File "/opt/odoo/odoo/odoo/api.py", line 793, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'res.partner(323,).email_formatted'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/api.py", line 790, in get
return field_cache[record._ids[0]]
KeyError: 323
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/fields.py", line 970, in __get__
value = env.cache.get(record, self)
File "/opt/odoo/odoo/odoo/api.py", line 793, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'res.partner(323,).email'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/fields.py", line 1019, in __get__
self.compute_value(recs)
File "/opt/odoo/odoo/odoo/fields.py", line 1175, in compute_value
records._compute_field_value(self)
File "/opt/odoo/odoo/addons/mail/models/mail_thread.py", line 410, in _compute_field_value
return super()._compute_field_value(field)
File "/opt/odoo/odoo/odoo/models.py", line 4064, in _compute_field_value
getattr(self, field.compute)()
File "/opt/odoo/odoo/odoo/addons/base/models/res_partner.py", line 374, in _compute_email_formatted
if partner.email:
File "/opt/odoo/odoo/odoo/fields.py", line 1002, in __get__
_("(Record: %s, User: %s)") % (record, env.uid),
odoo.exceptions.MissingError: Record does not exist or has been deleted.
(Record: res.partner(323,), User: 4)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/api.py", line 790, in get
return field_cache[record._ids[0]]
KeyError: 323
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/fields.py", line 970, in __get__
value = env.cache.get(record, self)
File "/opt/odoo/odoo/odoo/api.py", line 793, in get
raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'res.partner(323,).email'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/custom_addons/sync/models/sync_task.py", line 135, in run
result = self._eval(code, function, args, kwargs, eval_context)
File "/opt/odoo/custom_addons/sync/models/sync_task.py", line 165, in _eval
code, eval_context, mode="exec", nocopy=True
File "/opt/odoo/odoo/odoo/tools/safe_eval.py", line 330, in safe_eval
return unsafe_eval(c, globals_dict, locals_dict)
File "", line 64, in <module>
File "", line 60, in handle_webhook
File "/opt/odoo/odoo/addons/mail/models/mail_channel.py", line 416, in message_post
message = super(Channel, self.with_context(mail_create_nosubscribe=True)).message_post(message_type=message_type, moderation_status=moderation_status, **kwargs)
File "/opt/odoo/odoo/addons/rating/models/mail_thread.py", line 14, in message_post
message = super(MailThread, self).message_post(**kwargs)
File "/opt/odoo/odoo/addons/mail/models/mail_thread.py", line 1828, in message_post
author_id, email_from = self._message_compute_author(author_id, email_from, raise_exception=True)
File "/opt/odoo/odoo/addons/mail/models/mail_thread.py", line 2076, in _message_compute_author
email_from = author.email_formatted
File "/opt/odoo/odoo/odoo/fields.py", line 1021, in __get__
self.compute_value(record)
File "/opt/odoo/odoo/odoo/fields.py", line 1175, in compute_value
records._compute_field_value(self)
File "/opt/odoo/odoo/addons/mail/models/mail_thread.py", line 410, in _compute_field_value
return super()._compute_field_value(field)
File "/opt/odoo/odoo/odoo/models.py", line 4064, in _compute_field_value
getattr(self, field.compute)()
File "/opt/odoo/odoo/odoo/addons/base/models/res_partner.py", line 374, in _compute_email_formatted
if partner.email:
File "/opt/odoo/odoo/odoo/fields.py", line 1002, in __get__
_("(Record: %s, User: %s)") % (record, env.uid),
odoo.exceptions.MissingError: Record does not exist or has been deleted.
(Record: res.partner(323,), User: 4)