def get_levels(policy): ''' Returns all karma info ''' try: result = LEVEL_PROVIDER.get_levels(policy) return serialize_response(200, 'OK', 'Correct', result) except PolicyNotExistsException: return serialize_response(404, 'NOT FOUND', f'Policy {policy} could not be found')
def get_level(policy, user_points): ''' Returns karma info for the points passed''' try: result = LEVEL_PROVIDER.get_level(policy, user_points) return serialize_response(200, 'OK', 'Correct', result) except PolicyNotExistsException: return serialize_response(404, 'NOT FOUND', f'Policy {policy} could not be found')
def get_observation_info(observation_id): ''' Returns the information for the id passed ''' try: observation = VALIDATION_PROVIDER.get_observation_data(observation_id) except ObservationNotFoundException: return serialize_response(404, 'NOT FOUND', f'Observation {observation_id} not found') return serialize_response(200, 'OK', f'Observation Fetched Correctly', observation.serialize())
def post_vote(): ''' Updates the info for the observation passed ''' request_data = request.get_json() if not request_data: return serialize_response(400, 'BAD REQUEST', 'Empty request') result = VALIDATION_PROVIDER.post_vote(request_data) if not result: return serialize_response(400, 'BAD REQUEST', 'Repeated vote for user') return serialize_response(200, 'OK', 'Vote added', result.serialize())
def delete_policy(policy_id): ''' Returns all karma info ''' try: LEVEL_PROVIDER.delete_policy(policy_id) return serialize_response(200, 'DELETED', f'Deleted policy {policy_id}') except PolicyNotExistsException: return serialize_response(404, 'NOT FOUND', f'Policy {policy_id} could not be found')
def create_policy(policy_id): ''' Returns all karma info ''' formula, max_level, errors = __check_request_data(request.get_json()) if errors: return serialize_response(400, 'BAD REQUEST', errors) try: LEVEL_PROVIDER.create_policy(policy_id, formula, max_level) return serialize_response(201, 'CREATED', 'Policy Created Successfully') except InvalidFormulaException as exception: return serialize_response(400, 'BAD REQUEST', 'Malformed Formula', json.loads(str(exception))['errors']) except PolicyExistsException: return serialize_response(400, 'BAD REQUEST', f'Policy {policy_id} Already Exists')
def __shutdown(): ''' Shutdown the server ''' func = request.environ.get('werkzeug.server.shutdown') if func is None: raise RuntimeError('Not running with the Werkzeug Server') func() return serialize_response(200, 'OK', 'Server Shutting Down')
def update_policy(policy_id): ''' Returns all karma info ''' formula, max_level, errors = __check_request_data(request.get_json(), update=True) if errors: return serialize_response(400, 'BAD REQUEST', errors) try: LEVEL_PROVIDER.update_policy(policy_id, formula=formula, max_level=max_level) return serialize_response(200, 'UPDATED', f'Updated policy {policy_id}') except PolicyNotExistsException: return serialize_response(404, 'NOT FOUND', f'Policy {policy_id} could not be found') except InvalidFormulaException as exception: return serialize_response(400, 'BAD REQUEST', 'Malformed Formula', json.loads(str(exception))['errors'])
def __exception(exception): return make_response( serialize_response(500, 'Internal Error', str(exception)), 405)
def __not_allowed(error): ''' Not Allowed Handler ''' return make_response( serialize_response(405, 'Method not allowed', error.description), 405)
def __not_found(error): ''' Not Found Handler ''' return make_response( serialize_response(404, 'Not Found', error.description), 404)
def __bad_request(error): ''' Bad Request Handler ''' return make_response( serialize_response(400, 'Bad Request', error.description), 400)