def update_connector(request): connector = json.loads(request.POST.get('connector', '{}')) saved_as = False if connector.get('id'): instance = Connector.objects.get(id=connector['id']) instance.name = connector['nice_name'] instance.description = connector['description'] instance.settings = json.dumps(connector['settings']) # TODO: if `sqlalchemy` interface, delete key in ENGINES instance.save() else: saved_as = True instance = Connector.objects.create(name=connector['nice_name'], description='', dialect=connector['dialect'], interface=connector['interface'], settings=json.dumps( connector['settings'])) connector['id'] = instance.id connector['name'] = instance.id update_app_permissions() return JsonResponse({'connector': connector, 'saved_as': saved_as})
def tearDownClass(cls): HuePermission.objects.all().delete() for reset in cls._class_resets: reset() update_app_permissions()
def test_config_validator(self, has_connectors): with patch( 'desktop.lib.connectors.models.CONNECTORS.get') as CONNECTORS: CONNECTORS.return_value = { 'hive-1': Mock( NICE_NAME=Mock(get=Mock(return_value='Hive')), DIALECT=Mock(get=Mock(return_value='hive')), INTERFACE=Mock(get=Mock(return_value='hiveserver2')), SETTINGS=Mock(get=Mock(return_value=[{ "name": "server_host", "value": "gethue" }, { "name": "server_port", "value": "10000" }])), ) } update_app_permissions() connectors = _get_installed_connectors(user=self.user) assert_true(connectors, connectors) warnings = config_validator(user=self.user) assert_true(warnings, warnings) assert_equal('hive-1', warnings[0][0]) assert_true( 'Testing the connector connection failed' in warnings[0][1], warnings)
def test_get_connectors_for_user(self): with patch( 'desktop.lib.connectors.models.CONNECTORS.get') as CONNECTORS: CONNECTORS.return_value = { 'mysql-1': Mock( NICE_NAME=Mock(get=Mock(return_value='MySql')), DIALECT=Mock(get=Mock(return_value='mysql')), INTERFACE=Mock(get=Mock(return_value='sqlalchemy')), SETTINGS=Mock(get=Mock( return_value=[{ "name": "url", "value": "mysql://*****:*****@hue:3306/hue" }])), ) } update_app_permissions() connectors = _get_installed_connectors(user=self.user) assert_true(connectors, connectors) connectors = _get_installed_connectors(user=self.alone_user) assert_false(connectors, connectors)
def new_connector(request, dialect): instance = _get_connector_by_type(dialect) instance['nice_name'] = dialect.title() instance['id'] = None update_app_permissions() return JsonResponse({'connector': instance})
def install_connector_examples(request): try: _create_connector_examples() except Exception as e: raise PopupException(_('Error installing connector examples: %s') % e) update_app_permissions() return JsonResponse({'status': 0})
def delete_connector(request): connector = json.loads(request.POST.get('connector', '{}')) try: Connector.objects.get(id=connector['id']).delete() except Exception as e: raise PopupException(_('Error deleting connector %s: %s') % (connector['name'], e)) update_app_permissions() return JsonResponse({})
def delete_connector(request): connector = json.loads(request.POST.get('connector'), '{}') size_before = len(models.CONNECTOR_INSTANCES) models.CONNECTOR_INSTANCES = [_connector for _connector in models.CONNECTOR_INSTANCES if _connector['name'] != connector['name']] size_after = len(models.CONNECTOR_INSTANCES) if size_before == size_after + 1: update_app_permissions() return JsonResponse({}) else: raise PopupException(_('No connector with the name %(name)s found.') % connector)
def install_connector_examples(request): message = [] try: added, skipped = _create_connector_examples() if added: message.append('Added connectors: ' + ', '.join(added)) if skipped: message.append('Already installed connectors: ' + ', '.join(skipped)) except Exception as e: raise PopupException(_('Error installing connector examples: %s') % e) update_app_permissions() return JsonResponse({'status': 0, 'message': '. '.join(message)})
def update_connector(request): connector = json.loads(request.POST.get('connector', '{}')) saved_as = False if connector.get('id'): instance = _get_connector_by_id(connector['id']) instance.update(connector) else: saved_as = True instance = connector instance['id'] = models.CONNECTOR_IDS instance['nice_name'] = instance['nice_name'] instance['name'] = '%s-%s' % (instance['dialect'], models.CONNECTOR_IDS) models.CONNECTOR_IDS += 1 models.CONNECTOR_INSTANCES.append(instance) update_app_permissions() return JsonResponse({'connector': instance, 'saved_as': saved_as})
def tearDownClass(cls): for reset in cls._class_resets: reset() update_app_permissions()