Ejemplo n.º 1
0
def cache_chart_thumbnail(
    url: str,
    digest: str,
    force: bool = False,
    window_size: Optional[WindowSize] = None,
    thumb_size: Optional[WindowSize] = None,
) -> None:
    with app.app_context():  # type: ignore
        if not thumbnail_cache:
            logger.warning("No cache set, refusing to compute")
            return None
        logger.info("Caching chart: %s", url)
        screenshot = ChartScreenshot(url, digest)
        with session_scope(nullpool=True) as session:
            user = security_manager.get_user_by_username(
                current_app.config["THUMBNAIL_SELENIUM_USER"], session=session
            )
        screenshot.compute_and_cache(
            user=user,
            cache=thumbnail_cache,
            force=force,
            window_size=window_size,
            thumb_size=thumb_size,
        )
        return None
Ejemplo n.º 2
0
 def test_screenshot_selenium_load_wait(self, mock_webdriver,
                                        mock_webdriver_wait):
     app.config["SCREENSHOT_LOAD_WAIT"] = 15
     webdriver = WebDriverProxy("firefox")
     user = security_manager.get_user_by_username(
         app.config["THUMBNAIL_SELENIUM_USER"])
     url = get_url_path("Superset.slice", slice_id=1, standalone="true")
     webdriver.get_screenshot(url, "chart-container", user=user)
     assert mock_webdriver_wait.call_args_list[1] == call(ANY, 15)
Ejemplo n.º 3
0
 def test_screenshot_selenium_headstart(self, mock_sleep, mock_webdriver,
                                        mock_webdriver_wait):
     webdriver = WebDriverProxy("firefox")
     user = security_manager.get_user_by_username(
         app.config["THUMBNAIL_SELENIUM_USER"])
     url = get_url_path("Superset.slice", slice_id=1, standalone="true")
     app.config["SCREENSHOT_SELENIUM_HEADSTART"] = 5
     webdriver.get_screenshot(url, "chart-container", user=user)
     assert mock_sleep.call_args_list[0] == call(5)
def _get_slice_screenshot(slice_id: int, session: Session) -> ScreenshotData:
    slice_obj = session.query(Slice).get(slice_id)

    chart_url = get_url_path("Superset.slice", slice_id=slice_obj.id, standalone="true")
    screenshot = ChartScreenshot(chart_url, slice_obj.digest)
    image_url = _get_url_path(
        "Superset.slice", user_friendly=True, slice_id=slice_obj.id,
    )

    user = security_manager.get_user_by_username(
        current_app.config["THUMBNAIL_SELENIUM_USER"], session=session
    )
    image_data = screenshot.compute_and_cache(
        user=user, cache=thumbnail_cache, force=True,
    )

    session.commit()
    return ScreenshotData(image_url, image_data)
Ejemplo n.º 5
0
def cache_dashboard_thumbnail(url: str,
                              digest: str,
                              force: bool = False,
                              thumb_size: Optional[WindowSize] = None) -> None:
    if not thumbnail_cache:
        logging.warning("No cache set, refusing to compute")
        return
    logger.info("Caching dashboard: %s", url)
    screenshot = DashboardScreenshot(url, digest)
    with session_scope(nullpool=True) as session:
        user = security_manager.get_user_by_username(
            current_app.config["THUMBNAIL_SELENIUM_USER"], session=session)
        screenshot.compute_and_cache(
            user=user,
            cache=thumbnail_cache,
            force=force,
            thumb_size=thumb_size,
        )