summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/controller.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_api/controllers/controller.py')
-rw-r--r--indoteknik_api/controllers/controller.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py
new file mode 100644
index 00000000..fb5f1fce
--- /dev/null
+++ b/indoteknik_api/controllers/controller.py
@@ -0,0 +1,48 @@
+import datetime
+import base64
+import json
+
+from odoo import http
+from odoo.http import request
+from pytz import timezone
+
+
+class Controller(http.Controller):
+ def authenticate(self, kw):
+ db = kw.get('db')
+ username = kw.get('username')
+ password = kw.get('password')
+ request.session.authenticate(db, username, password)
+
+ def time_to_str(self, object, format):
+ time = ''
+ if isinstance(object, datetime.datetime):
+ 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})
+
+ response = json.dumps(response)
+ return request.make_response(response, [('Content-Type', 'application/json')])
+
+ def search_with_api_params(self, model: str, kw, domain=[]):
+ """ To search data by default API Params if exist """
+ limit = kw.get('limit', 0)
+ offset = kw.get('offset', 0)
+ order = kw.get('order', '')
+
+ 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')])