1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import datetime
import base64
from odoo import http
from odoo.http import request
import json
from pytz import timezone
class ApiController(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=[]):
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
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')])
|