def handler_settings_get_all(): """Handle the GET all settings requests. :return: JSON string with the formed response. """ response_dict = { 'response_type': 'settings', 'response_state': 'full_response', 'success': True, 'settings_type': 'all', 'settings': [{ 'settings_type': 'compiler', 'selected': actions.get_compiler_path() }, { 'settings_type': 'sketch', 'selected': actions.get_sketch_path() }, { 'settings_type': 'board', 'options': [{'value': board, 'display_text': board} for board in actions.get_arduino_boards()], 'selected': actions.get_arduino_board_selected() }, { 'settings_type': 'serial', 'options': [{'value': k, 'display_text': v} for k, v in iteritems(actions.get_serial_ports())], 'selected': actions.get_serial_port_selected() }, { 'settings_type': 'ide', 'options': [{'value': k, 'display_text': v} for k, v in iteritems(actions.get_load_ide_options())], 'selected': actions.get_load_ide_selected() }] } set_header_no_cache() return response_dict
def test_get_arduino_boards(self, mock_settings): mock_settings.return_value = 'random string to test board return' received_boards = actions.get_arduino_boards() self.assertTrue(mock_settings.called) self.assertEqual(received_boards, 'random string to test board return')
def handler_settings_get_individual(name): """Handle the GET setting requests. Error codes: 60 - Unexpected setting type requested. :param name: Setting value to retrieve. :return: JSON string with the formed response. """ success = True response_dict = { 'response_type': 'settings', 'response_state': 'full_response', 'settings_type': name } if name == 'compiler': response_dict.update({'selected': actions.get_compiler_path()}) elif name == 'sketch': response_dict.update({'selected': actions.get_sketch_path()}) elif name == 'board': response_dict.update({ 'options': [{ 'value': board, 'display_text': board } for board in actions.get_arduino_boards()], 'selected': actions.get_arduino_board_selected() }) elif name == 'serial': response_dict.update({ 'options': [{ 'value': k, 'display_text': v } for k, v in iteritems(actions.get_serial_ports())], 'selected': actions.get_serial_port_selected() }) elif name == 'ide': response_dict.update({ 'options': [{ 'value': k, 'display_text': v } for k, v in iteritems(actions.get_load_ide_options())], 'selected': actions.get_load_ide_selected() }) else: success = False response_dict.update({ 'settings_type': 'invalid', 'errors': [{ 'id': 61, 'description': 'Unexpected setting type requested.' }] }) response_dict.update({'success': success}) set_header_no_cache() return response_dict
def handle_settings(parameters): def _get_value(parameters2): """ Searches for a 'value' parameter in the dictionary. """ value2 = None for key2 in parameters2: if str(key2) == 'value': value2 = str(parameters2[key2]) return value2 message_back = None for key in parameters: # Compiler if str(key) == 'compiler': if str(parameters[key]) == "['get']": message_back = actions.get_compiler_path() elif str(parameters[key]) == "['set']": message_back = actions.set_compiler_path() # Sketch elif str(key) == 'sketch': if str(parameters[key]) == "['get']": message_back = actions.get_sketch_path() elif str(parameters[key]) == "['set']": message_back = actions.set_sketch_path() # Arduino Board elif str(key) == 'board': if str(parameters[key]) == "['get']": message_back = actions.get_arduino_boards() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_arduino_board(value) # Serial port elif str(key) == 'serial': if str(parameters[key]) == "['get']": message_back = actions.get_serial_ports() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_serial_port(value) # Launch Only Options elif str(key) == 'ide': if str(parameters[key]) == "['get']": message_back = actions.get_load_ide_only() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_load_ide_only(value) # The Value parameter is only used in some cases elif str(key) == 'value': pass # Parameter not recognised else: print('The "' + str(key) + '" = ' + str(parameters[key]) + ' parameter is not recognised!') return message_back
def handle_settings(parameters): def _get_value(parameters2): """ Searches for a 'value' parameter in the dictionary. """ value2 = None for key2 in parameters2: if str(key2) == 'value': value2 = str(parameters2[key2]) return value2 message_back = None for key in parameters: # Compiler if str(key) == 'compiler': if str(parameters[key]) == "['get']": message_back = actions.get_compiler_path() elif str(parameters[key]) == "['set']": message_back = actions.set_compiler_path() # Sketch elif str(key) == 'sketch': if str(parameters[key]) == "['get']": message_back = actions.get_sketch_path() elif str(parameters[key]) == "['set']": message_back = actions.set_sketch_path() # Arduino Board elif str(key) == 'board': if str(parameters[key]) == "['get']": message_back = actions.get_arduino_boards() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_arduino_board(value) # Serial port elif str(key) == 'serial': if str(parameters[key]) == "['get']": message_back = actions.get_serial_ports() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_serial_port(value) # Launch Only Options elif str(key) == 'ide': if str(parameters[key]) == "['get']": message_back = actions.get_load_ide_only() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_load_ide_only(value) # The Value parameter is only used in some cases elif str(key) == 'value': pass # Parameter not recognised else: print('The "' + str(key) + '" = ' + str(parameters[key]) + ' parameter is not recognised!') return message_back
def handler_settings_update_individual(name): """Handle the POST setting requests. Error codes: 63 - Unexpected setting type to update. 64 - Unable to parse sent JSON. 65 - JSON received does not have 'new_value' key. 66 - Invalid value. 67 - New value could not be set. :param name: Setting value to retrieve. :return: JSON string with the formed response. """ response_dict = {'response_type': 'settings', 'response_state': 'full_response', 'settings_type': name} try: new_value = request.json['new_value'] except (TypeError, ValueError): response_dict.update({ 'success': False, 'errors': [{ 'id': 64, 'description': 'Unable to parse sent JSON.' }] }) except KeyError: response_dict.update({ 'success': False, 'errors': [{ 'id': 65, 'description': 'JSON received does not have \'new_value\' key.' }] }) else: if not new_value: response_dict.update({ 'success': False, 'errors': [{ 'id': 66, 'description': 'Invalid value.' }] }) else: options = None set_value = None if name == 'compiler': set_value = actions.set_compiler_path(new_value) elif name == 'sketch': set_value = actions.set_sketch_path(new_value) elif name == 'board': set_value = actions.set_arduino_board(new_value) options = [{'value': board, 'display_text': board} for board in actions.get_arduino_boards()] elif name == 'serial': set_value = actions.set_serial_port(new_value) options = [{'value': k, 'display_text': v} for k, v in iteritems(actions.get_serial_ports())] elif name == 'ide': set_value = actions.set_load_ide_only(new_value) options = [{'value': k, 'display_text': v} for k, v in iteritems(actions.get_load_ide_options())] else: response_dict.update({'success': False, 'settings_type': 'invalid'}) response_dict.setdefault('errors', []).append({ 'id': 63, 'description': 'Unexpected setting type to update.' }) # Check if sent value was set, might have been expanded in Settings if set_value in new_value: response_dict.update({ 'success': True, 'selected': set_value }) if options: response_dict.update({'options': options}) else: response_dict.update({'success': False}) response_dict.setdefault('errors', []).append({ 'id': 67, 'description': 'New value could not be set.' }) set_header_no_cache() return response_dict