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.py56
1 files changed, 44 insertions, 12 deletions
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 = ''