diff options
Diffstat (limited to 'indoteknik_custom/controllers/api_controller.py')
| -rw-r--r-- | indoteknik_custom/controllers/api_controller.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/indoteknik_custom/controllers/api_controller.py b/indoteknik_custom/controllers/api_controller.py index cb5fae60..faf8b640 100644 --- a/indoteknik_custom/controllers/api_controller.py +++ b/indoteknik_custom/controllers/api_controller.py @@ -1,4 +1,5 @@ import datetime +import base64 from odoo import http from odoo.http import request @@ -19,14 +20,32 @@ class ApiController(http.Controller): time = object.astimezone(timezone('Asia/Jakarta')).strftime(format) return time + def response(self, data=[], code=200, description='OK'): + response = { + 'status': { + 'code': code, + 'description': description + } + } + if code == 200: + response.update({'result': data}) - def search_with_api_params(self, model: str, kw, default_domain=[]): + response = json.dumps(response) + return request.make_response(response, [('Content-Type', 'application/json')]) + + def search_with_api_params(self, model: str, kw, domain=[]): limit = kw.get('limit', 0) offset = kw.get('offset', 0) order = kw.get('order', '') - domain = kw.get('domain', []) - if domain: - domain = json.loads(domain) - domain += default_domain + # domain = kw.get('domain', []) + # if domain: + # domain = json.loads(domain) + # domain += default_domain return request.env[model].search(domain, limit=int(limit), offset=int(offset), order=order) + + @http.route('/api/image/<model>/<field>/<id>', auth='public', methods=['GET']) + def get_image(self, model, field, id): + model = request.env[model].sudo().search([('id', '=', id)], limit=1) + image = model[field] if model[field] else '' + return request.make_response(base64.b64decode(image), [('Content-Type', 'image/jpg')]) |
