from .. import controller from odoo import http from odoo.http import request class Partner(controller.Controller): _name = 'res.partner' prefix = '/api/v1/' @http.route(prefix + 'partner//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//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') params = self.get_request_params(kw, { 'parent_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].create([ params['value'] ]) return self.response({ 'id': partner.id, })