From 866a0b9ea34d6222b4c4936d3de32addaa2c8e30 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 12 Jan 2023 17:10:48 +0700 Subject: create request validation and api create partner --- indoteknik_api/controllers/controller.py | 56 +++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 12 deletions(-) (limited to 'indoteknik_api/controllers/controller.py') diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py index 73c8829d..6cc26cbc 100644 --- a/indoteknik_api/controllers/controller.py +++ b/indoteknik_api/controllers/controller.py @@ -34,19 +34,51 @@ class Controller(http.Controller): request.session.authenticate(config.get('db_name'), 'it@fixcomart.co.id', 'Fixcomart378') return True return False - - def validate_request(self, rules: dict, kw: dict): - validation = { - 'status': True, - 'reason': [] + + def get_request_params(self, kw, queries): + result = { + 'valid': True, + 'reason': [], + 'value': {}, + 'query': {} } - 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 + for key in queries: + rules = queries[key] + is_number = len([r for r in rules if r == 'number']) > 0 + + has_alias = [r for r in rules if r.startswith('alias:')] + alias = key + if len(has_alias) > 0: + alias = has_alias[0].replace('alias:', '') + + has_default = [r for r in rules if r.startswith('default:')] + default = None + if len(has_default) > 0: + default = has_default[0].replace('default:', '') + + value = kw.get(key, '') + if value in ['null', 'undefined']: + value = '' + for rule in rules: + if rule == 'required' and not value: + result['reason'].append(key + ' is ' + rule) + elif rule == 'number' and value and not value.isdigit(): + result['reason'].append(key + ' must be ' + rule) + + if not value and default: + value = default + if is_number and value.isdigit(): + value = int(value) + if not value: + value = None + result['value'][alias] = value + result['query'][key] = value + + if len(result['reason']) > 0: + result['valid'] = False + if not result['valid']: + del result['value'] + return result def time_to_str(self, object, format): time = '' -- cgit v1.2.3