diff --git a/openeo_plugin/gui/browser/OpenEOStacAssetItem.py b/openeo_plugin/gui/browser/OpenEOStacAssetItem.py index 3dc6b323..a4c5d6e2 100644 --- a/openeo_plugin/gui/browser/OpenEOStacAssetItem.py +++ b/openeo_plugin/gui/browser/OpenEOStacAssetItem.py @@ -15,7 +15,7 @@ from qgis.core import QgsCoordinateTransformContext from qgis.core import QgsApplication -from .util import getSeparator +from .util import getSeparator, downloadFolder from ...utils.filetypes import MEDIATYPES, EXTENSIONS from ..directory_dialog import DirectoryDialog from ...utils.downloadTask import DownloadAssetTask @@ -203,8 +203,7 @@ def resolveUrl(self): return href def download(self): - path = self.downloadFolder() - self.queueDownloadTask(path) + self.queueDownloadTask(downloadFolder()) def downloadAsset(self, dir=None): href = self.resolveUrl() @@ -214,7 +213,7 @@ def downloadAsset(self, dir=None): "Asset is missing 'href' and cannot be downloaded." ) - dir = Path(dir) if dir else self.downloadFolder() + dir = Path(dir) if dir else downloadFolder() local = self.asset.get("file:local_path") if local: @@ -243,11 +242,8 @@ def downloadAsset(self, dir=None): return path - def downloadFolder(self): - return Path.home() / "Downloads" - def downloadTo(self): - downloadPath = self.downloadFolder() + downloadPath = downloadFolder() # prepare file dialog dlg = DirectoryDialog() diff --git a/openeo_plugin/gui/browser/util.py b/openeo_plugin/gui/browser/util.py index 811f1c48..08cc59b2 100644 --- a/openeo_plugin/gui/browser/util.py +++ b/openeo_plugin/gui/browser/util.py @@ -1,5 +1,6 @@ import datetime import json +import os import tempfile import webbrowser from pathlib import Path @@ -29,14 +30,28 @@ def getSeparator(parent): def showLogs(logs, title): - showInBrowser( - "logFileView", - { - "logs": logs, - "title": title, - "logTimestamp": str(datetime.datetime.now()), - }, - ) + try: + showInBrowser( + "logFileView", + { + "logs": logs, + "title": title, + "logTimestamp": str(datetime.datetime.now()), + }, + ) + except Exception as e: + print(e) + + +def getTempDir(): + if "FLATPAK_SANDBOX_DIR" in os.environ: + flatpak_id = os.environ.get("FLATPAK_ID") + uid = os.getuid() + # The usual path pattern where Flatpak stores persistent data + path = f"/run/user/{uid}/.flatpak/{flatpak_id}/tmp" + return path + else: + return tempfile.gettempdir() def showInBrowser(file, vars): @@ -49,9 +64,17 @@ def showInBrowser(file, vars): value = json.dumps(value) logHTML = logHTML.replace(f"", value) - fh, path = tempfile.mkstemp(suffix=".html") - url = "file://" + path - with open(path, "w") as fp: - fp.write(logHTML) + fh, path = tempfile.mkstemp(suffix=".html", text=True) + with open(path, "w") as tmpfile: + tmpfile.write(logHTML) + + rel_to_tmp = os.path.relpath(path, "/tmp") + path = os.path.join(getTempDir(), rel_to_tmp) + path = Path(path).as_uri() + webbrowser.open_new(path) + - webbrowser.open_new(url) +def downloadFolder(): + p = Path.home() / "Downloads" + p.mkdir(parents=True, exist_ok=True) + return p