diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2023-01-13 08:31:31 +0000 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2023-01-13 08:31:31 +0000 |
| commit | b734cf901978f1fda1afd45dd654659b7f7a2971 (patch) | |
| tree | e861456b84e4eef886c03c4016b7a8742b5ab35e /indoteknik_api/controllers/api_v1 | |
| parent | 6fe453ed5da6cfda56f4af454dbedc00b97f0f9e (diff) | |
| parent | ac80b37ffeaefc9efeec732c167ba272bc1a984b (diff) | |
Merged in feature/rest-api (pull request #21)
edit and get partner address
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/partner.py | 64 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/user.py | 2 |
2 files changed, 56 insertions, 10 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 043a82b8..09b3caa0 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -4,16 +4,63 @@ from odoo.http import request class Partner(controller.Controller): + _name = 'res.partner' prefix = '/api/v1/' - @http.route(prefix + 'partner', auth='public', methods=['POST', 'OPTIONS'], csrf=False) - def create_partner(self, **kw): + @http.route(prefix + 'partner/<id>/address', auth='public', methods=['GET', 'OPTIONS']) + def get_partner_address_by_id(self, **kw): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + + params = self.get_request_params(kw, { + 'id': ['required', 'number'] + }) + + if not params['valid']: + return self.response(code=400, description=params) + + partner = request.env[self._name].search([('id', '=', params['value']['id'])]) + partner = request.env['res.users'].api_address_response(partner) + return self.response(partner) + + @http.route(prefix + 'partner/<id>/address', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) + def write_partner_address_by_id(self, **kw): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + + params = self.get_request_params(kw, { + 'id': ['required', 'number'], + 'type': ['default:other'], + 'name': ['required'], + 'email': ['required'], + 'mobile': ['required'], + 'street': ['required'], + 'city_id': ['required', 'number', 'alias:kota_id'], + 'district_id': ['number', 'alias:kecamatan_id'], + 'sub_district_id': ['number', 'alias:kelurahan_id'], + 'zip': ['required'], + }) + + if not params['valid']: + return self.response(code=400, description=params) + + partner = request.env[self._name].search([('id', '=', params['value']['id'])], limit=1) + if not partner: + return self.response(code=404, description='User not found') + + partner.write(params['value']) + + return self.response({ + 'id': partner.id + }) + + @http.route(prefix + 'partner/address', auth='public', methods=['POST', 'OPTIONS'], csrf=False) + def create_partner_address(self, **kw): if not self.authenticate(): return self.response(code=401, description='Unauthorized') - validate_request = self.get_request_params(kw, { - 'user_id': ['required', 'number'], - 'partner_id': ['required', 'number', 'alias:parent_id'], + params = self.get_request_params(kw, { + 'parent_id': ['required', 'number'], 'type': ['default:other'], 'name': ['required'], 'email': ['required'], @@ -25,11 +72,10 @@ class Partner(controller.Controller): 'zip': ['required'], }) - if not validate_request['valid']: - return self.response(code=400, description=validate_request) + if not params['valid']: + return self.response(code=400, description=params) - del validate_request['value']['user_id'] - partner = request.env['res.partner'].create([ validate_request['value'] ]) + partner = request.env[self._name].create([ params['value'] ]) return self.response({ 'id': partner.id, diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index ae04e0ff..17bc931e 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -133,7 +133,7 @@ class User(controller.Controller): return self.response(code=404, description='User not found') partner_ids = [user.partner_id.id] + [x.id for x in user.child_ids] - partners = request.env['res.partner'].search([('id', 'in', partner_ids)], order='create_date DESC') + partners = request.env['res.partner'].search([('id', 'in', partner_ids)], order='write_date DESC') address = [request.env['res.users'].api_address_response(x) for x in partners] return self.response(address) |
