-
Notifications
You must be signed in to change notification settings - Fork 1
/
connector.py
80 lines (70 loc) · 2.88 KB
/
connector.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# -*- coding: utf-8 -*-
# Copyright 2015-2016 LasLabs Inc.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
from odoo.addons.connector.connector import ConnectorEnvironment
from odoo.addons.connector.checkpoint import checkpoint
def get_environment(session, model_name, backend_id=None):
""" Create an environment to work with. """
if not backend_id:
backend_record = session.env[model_name]._default_backend_id()
else:
backend_record = session.env['carepoint.backend'].browse(backend_id)
env = ConnectorEnvironment(backend_record, session, model_name)
return env
# @TODO: Multiple lang support. Seems not needed.
# lang = backend_record.default_lang_id
# lang_code = lang.code if lang else 'en_US'
# if lang_code == session.context.get('lang'):
# return env
# else:
# with env.session.change_context(lang=lang_code):
# return env
class CarepointBinding(models.AbstractModel):
""" Abstract Model for the Bindigs.
All the models used as bindings between Carepoint and Odoo
(``carepoint.res.partner``, ``carepoint.product.product``, ...) should
``_inherit`` it.
"""
_name = 'carepoint.binding'
_inherit = 'external.binding'
_description = 'Carepoint Binding (abstract)'
# odoo_id = odoo-side id must be declared in concrete model
backend_id = fields.Many2one(
comodel_name='carepoint.backend',
string='Carepoint Backend',
required=True,
readonly=True,
ondelete='restrict',
default=lambda s: s._default_backend_id(),
)
# fields.Char because 0 is a valid Carepoint ID
carepoint_id = fields.Char(string='ID on Carepoint')
created_at = fields.Date('Created At (on Carepoint)')
updated_at = fields.Date('Updated At (on Carepoint)')
_sql_constraints = [
('carepoint_uniq', 'unique(backend_id, carepoint_id)',
'A binding already exists with the same Carepoint ID.'),
]
@api.model
def _default_backend_id(self):
return self.env['carepoint.backend'].search([
('is_default', '=', True),
('active', '=', True),
],
limit=1,
)
def add_checkpoint(session, model_name, record_id, backend_id):
""" Add a row in the model ``connector.checkpoint`` for a record,
meaning it has to be reviewed by a user.
:param session: current session
:type session: :class:`odoo.addons.connector.session.ConnectorSession`
:param model_name: name of the model of the record to be reviewed
:type model_name: str
:param record_id: ID of the record to be reviewed
:type record_id: int
:param backend_id: ID of the Carepoint Backend
:type backend_id: int
"""
return checkpoint.add_checkpoint(session, model_name, record_id,
'carepoint.backend', backend_id)