summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1/partner.py
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-01-12 17:10:48 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-01-12 17:10:48 +0700
commit866a0b9ea34d6222b4c4936d3de32addaa2c8e30 (patch)
treea1bebb7e90f37d71842aeb5225232a2418a73f45 /indoteknik_api/controllers/api_v1/partner.py
parentfcff03f98816bc0c8501206de3e4dfac979622b1 (diff)
create request validation and api create partner
Diffstat (limited to 'indoteknik_api/controllers/api_v1/partner.py')
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
new file mode 100644
index 00000000..2d7d04e8
--- /dev/null
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -0,0 +1,41 @@
+from .. import controller
+from odoo import http
+from odoo.http import request
+
+
+class Partner(controller.Controller):
+ prefix = '/api/v1/'
+
+ @http.route(prefix + 'partner', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
+ def create_partner(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'],
+ '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'],
+ })
+
+ is_verified = self.verify_user_token(validate_request['query']['user_id'])
+ if not is_verified:
+ return self.response(code=401, description='Unauthorized')
+
+ if not validate_request['valid']:
+ return self.response(code=400, description=validate_request)
+
+ del validate_request['value']['user_id']
+ partner = request.env['res.partner'].create([ validate_request['value'] ])
+
+ return self.response({
+ 'id': partner.id,
+ })
+