diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-05-21 13:39:32 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-05-21 13:39:32 +0700 |
| commit | f6c324302fb2a6490c9c95836887e2c58d684e86 (patch) | |
| tree | 32594b8a0816000f01f770ca262c8bb28b529631 /indoteknik_api/controllers/api_v1 | |
| parent | d6e65f2bf0dd1a0f284ed01a6609b83390c2f2a1 (diff) | |
api list site
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/partner.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index e61c98c1..1e7220cc 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -7,6 +7,49 @@ class Partner(controller.Controller): _name = 'res.partner' prefix = '/api/v1/' + def get_partner_child_ids(self, partner_id): + def _get_all_child_ids(partner): + child_ids = [partner.id] + for child in partner.child_ids: + child_ids += _get_all_child_ids(child) + return child_ids + + partner = request.env[self._name].search([('id', '=', partner_id)], limit=1) + partner_child_ids = _get_all_child_ids(partner) + + if partner.parent_id: + partner_child_ids += _get_all_child_ids(partner.parent_id) + + return list(set(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): |
