itpp-labs/sync-addons

sync: delete link if odoo record doesn't exist anymore

Opened this issue · 1 comments

links = self.search(domain)

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)