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']) @controller.Controller.must_authorized() def get_partner_address_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 = 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) @controller.Controller.must_authorized() def write_partner_address_by_id(self, **kw): 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', 'exclude_if_null'], '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) @controller.Controller.must_authorized() def create_partner_address(self, **kw): 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', 'exclude_if_null'], '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, }) @http.route(prefix + 'partner/', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) @controller.Controller.must_authorized() def write_partner_by_id(self, **kw): params = self.get_request_params(kw, { 'id': ['required', 'number'], 'name': [], 'company_type_id': ['number'], 'industry_id': ['number'], 'tax_name': ['alias:nama_wajib_pajak'], 'npwp': [], }) 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/industry', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_partner_industry(self): partner_industry = request.env['res.partner.industry'].search([]) data = [] for industry in partner_industry: data.append({ 'id': industry.id, 'name': industry.name }) return self.response(data) @http.route(prefix + 'partner/company_type', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_partner_company_type(self): partner_company_type = request.env['res.partner.company_type'].search([]) data = [] for company_type in partner_company_type: data.append({ 'id': company_type.id, 'name': company_type.name }) return self.response(data)