diff options
Diffstat (limited to 'indoteknik_api/controllers/controller.py')
| -rw-r--r-- | indoteknik_api/controllers/controller.py | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py index fb5f1fce..c02f6b60 100644 --- a/indoteknik_api/controllers/controller.py +++ b/indoteknik_api/controllers/controller.py @@ -1,3 +1,4 @@ +from array import array import datetime import base64 import json @@ -8,11 +9,29 @@ 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 authenticate(self): + try: + wsgienv = request.httprequest.environ + db = wsgienv['HTTP_DB'] + username = wsgienv['HTTP_USERNAME'] + password = wsgienv['HTTP_PASSWORD'] + request.session.authenticate(db, username, password) + return True + except: + return False + + def validate_request(self, rules: dict, kw: dict): + validation = { + 'status': True, + 'reason': [] + } + for key in rules: + values = rules[key] + for value in values: + if value == 'required' and not kw.get(key): + validation['status'] = False + validation['reason'].append(key + ' is ' + value) + return validation def time_to_str(self, object, format): time = '' @@ -33,13 +52,13 @@ class Controller(http.Controller): response = json.dumps(response) return request.make_response(response, [('Content-Type', 'application/json')]) - def search_with_api_params(self, model: str, kw, domain=[]): + def search_filter(self, model: str, kw: dict, query: array = []): """ 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) + return request.env[model].search(query, 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): |
