summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2023-01-13 08:31:31 +0000
committerIT Fixcomart <it@fixcomart.co.id>2023-01-13 08:31:31 +0000
commitb734cf901978f1fda1afd45dd654659b7f7a2971 (patch)
treee861456b84e4eef886c03c4016b7a8742b5ab35e /indoteknik_api/controllers/api_v1
parent6fe453ed5da6cfda56f4af454dbedc00b97f0f9e (diff)
parentac80b37ffeaefc9efeec732c167ba272bc1a984b (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.py64
-rw-r--r--indoteknik_api/controllers/api_v1/user.py2
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)