def create_tables_from_child_queries(user, connection, query, child_queries): for i, child_query in enumerate(child_queries): _child_query = _load_query(user, child_query['query_id']) params = child_query.get('params', {}) if not params: params = get_default_params(_child_query) _rendered_child_query = pystache.render(_child_query.query_text, params) logger.debug('ResultsWithParams child query[{}]: {}'.format( i, _rendered_child_query)) results, error = _child_query.data_source.query_runner.run_query( _rendered_child_query, user) if error: raise ChildQueryExecutionError( 'Failed loading results for query id {}.'.format( i, _child_query.id)) results = json.loads(results) table_name = child_query['table'] create_table(connection, table_name, results) query = query.replace(child_query['token'], table_name, 1) return query
def test_returns_query_when_user_has_view_only_access(self): ds = self.factory.create_data_source( group=self.factory.org.default_group, view_only=True) query = self.factory.create_query(data_source=ds) user = self.factory.create_user() loaded = _load_query(user, query.id) self.assertEqual(query, loaded)
def test_returns_query(self): query = self.factory.create_query() user = self.factory.create_user() loaded = _load_query(user, query.id) self.assertEquals(query, loaded)
def test_raises_exception_for_query_with_different_groups(self): ds = self.factory.create_data_source(group=self.factory.create_group()) query = self.factory.create_query(data_source=ds) user = self.factory.create_user() self.assertRaises(PermissionError, lambda: _load_query(user, query.id))
def test_raises_exception_for_query_from_different_account(self): query = self.factory.create_query() user = self.factory.create_user(org=self.factory.create_org()) self.assertRaises(PermissionError, lambda: _load_query(user, query.id))
def test_returns_query(self): query = self.factory.create_query() user = self.factory.create_user() loaded = _load_query(user, query.id) self.assertEqual(query, loaded)