summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1/partner.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_api/controllers/api_v1/partner.py')
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index e61c98c1..a6e14a19 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -7,6 +7,42 @@ class Partner(controller.Controller):
_name = 'res.partner'
prefix = '/api/v1/'
+ def get_partner_child_ids(self, partner_id):
+ partner = request.env[self._name].search([('id', '=', partner_id)], limit=1)
+ if not partner.parent_id:
+ partner_child_ids = [x['id'] for x in partner.child_ids] + [partner.id]
+ if partner.parent_id:
+ partner_child_ids = [x['id'] for x in partner.parent_id.child_ids]
+ return partner_child_ids
+
+ @http.route(prefix + 'partner/<id>/list/site', auth='public', methods=['GET', 'OPTIONS'])
+ @controller.Controller.must_authorized()
+ def get_list_partner_by_id(self, **kw):
+ params = self.get_request_params(kw, {
+ 'id': ['required', 'number']
+ })
+
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ partner_id = params['value']['id']
+
+ partner_child_ids = self.get_partner_child_ids(partner_id)
+
+ partners = request.env['res.partner'].search([('id', 'in', partner_child_ids)])
+
+ site_names = set()
+ for partner in partners:
+ if partner.site_id:
+ site_names.add(partner.site_id.name)
+
+ data = {
+ 'sites': list(site_names)
+ }
+
+ return self.response(data)
+
+
@http.route(prefix + 'partner/<id>/address', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
def get_partner_address_by_id(self, **kw):