# HG changeset patch # User Dennis Fink # Date 2019-12-29 15:23:22 # Node ID 016c8123ebd89e3bbbce7c0f61c47da132e76045 # Parent 2a0de444c063de2c6f76024e11679d4262b4747e Fix sensors diff --git a/spaceapi/sensors.py b/spaceapi/sensors.py --- a/spaceapi/sensors.py +++ b/spaceapi/sensors.py @@ -8,35 +8,42 @@ import jsonschema from flask import Blueprint, jsonify, request, abort, current_app from .auth import httpauth -from .utils import first, fuzzy_list_find, pass_active_status +from .utils import first, fuzzy_list_find, ActiveStatus, ActiveStatusv14 -sensors_views = Blueprint('sensors', __name__) +sensors_views = Blueprint("sensors", __name__) ALLOWED_SENSORS_KEYS = json.load( - open(resource_filename('spaceapi', 'schema/sensors.json'), - encoding='utf-8') + open(resource_filename("spaceapi", "schema/sensors.json"), encoding="utf-8") ) -RADIATON_SUBKEYS = frozenset(('alpha', 'beta', 'gamma', 'beta_gamma')) +RADIATON_SUBKEYS = frozenset(("alpha", "beta", "gamma", "beta_gamma")) -get_identification_key = partial(first, keys=frozenset(('name', 'location'))) +get_identification_key = partial(first, keys=frozenset(("name", "location"))) def set_value(data, key): active = ActiveStatus() + active_v14 = ActiveStatusv14() try: subkey = get_identification_key(data) except ValueError: + current_app.logger.error("Subkey Error") return abort(400) try: - index = fuzzy_list_find(active['sensors'][key], - subkey, data[subkey]) - active['sensors'][key][index].update(data) + index = fuzzy_list_find(active["sensors"][key], subkey, data[subkey]) + active["sensors"][key][index].update(data) except ValueError: - active['sensors'][key].append(data) + active["sensors"][key].append(data) + + try: + + index_v14 = fuzzy_list_find(active_v14["sensors"][key], subkey, data[subkey]) + active_v14["sensors"][key][index].update(data) + except ValueError: + active_v14["sensors"][key].append(data) return jsonify(active) @@ -59,39 +66,40 @@ def set_radiation_value(data): try: index = fuzzy_list_find( - active['sensors']['radiation'][first_subkey], + active["sensors"]["radiation"][first_subkey], second_subkey, - data[first_subkey][second_subkey]) - active['sensors']['radiation'][first_subkey][index].update( - data) + data[first_subkey][second_subkey], + ) + active["sensors"]["radiation"][first_subkey][index].update(data) except ValueError: - active['sensors']['radiaton'][first_subkey].append(data) + active["sensors"]["radiaton"][first_subkey].append(data) return jsonify(active) -@sensors_views.route('/set/', methods=['POST']) +@sensors_views.route("/set/", methods=["POST"]) @httpauth.login_required -@pass_active_status -def set_sensors(active, key): +def set_sensors(key): - if key in ALLOWED_SENSORS_KEYS and key in active['sensors']: - data = request.data.decode('utf-8') + active = ActiveStatus() + + if key in ALLOWED_SENSORS_KEYS and key in active["sensors"]: + data = request.json try: - data = json.loads(data) - try: jsonschema.validate(data, ALLOWED_SENSORS_KEYS[key]) except jsonschema.ValidationError: - current_app.logger.info('Validation Error') + current_app.logger.error("Validation Error") return abort(400) - if key != 'radiation': + if key != "radiation": return set_value(data, key) else: return set_radiation_value(data) except ValueError: + current_app.logger.error("Value Error") return abort(400) else: + current_app.logger.error("Sensor not allowed") return abort(400)