Cédric Krier pushed to branch branch/default at Tryton / Tryton
Commits:
7af047d8 by Cédric Krier at 2022-12-22T15:12:25+01:00
Use Gio.AppInfo.launch_default_for_uri instead of calling xdg-open
Also we try first this method instead of using the python webbrowser module.
Closes #11942
- - - - -
1 changed file:
- tryton/tryton/common/common.py
Changes:
=====================================
tryton/tryton/common/common.py
=====================================
@@ -45,7 +45,7 @@
import zipfile
from threading import Lock
-from gi.repository import Gdk, GdkPixbuf, GLib, GObject, Gtk
+from gi.repository import Gdk, GdkPixbuf, Gio, GLib, GObject, Gtk
from tryton import __version__
from tryton.exceptions import TrytonError, TrytonServerError
@@ -542,10 +542,8 @@
file_open(zfilename, type=ztype, print_p=True)
return
- if os.name == 'nt':
- operation = 'open'
- if print_p:
- operation = 'print'
+ if hasattr(os, 'startfile'):
+ operation = 'print' if print_p else 'open'
try:
os.startfile(os.path.normpath(filename), operation)
except WindowsError:
@@ -570,4 +568,5 @@
except OSError:
save()
else:
+ uri = GLib.filename_to_uri(filename)
try:
@@ -573,6 +572,6 @@
try:
- subprocess.Popen(['xdg-open', filename])
- except OSError:
+ Gio.AppInfo.launch_default_for_uri(uri)
+ except GLib.Error:
save()
@@ -576,6 +575,13 @@
save()
+def webbrowser_open(url):
+ try:
+ Gio.AppInfo.launch_default_for_uri(url)
+ except GLib.Error:
+ webbrowser.open(url)
+
+
def url_open(uri):
try:
return urllib.request.urlopen(uri)
@@ -636,7 +642,7 @@
url += "&body=" + urllib.parse.quote(body, "")
if attachment:
url += "&attachment=" + urllib.parse.quote(attachment, "")
- webbrowser.open(url, new=1)
+ webbrowser_open(url, new=1)
class UniqueDialog(object):
@@ -878,7 +884,7 @@
CONFIG['bug.url'], _("Report Bug"))
button_roundup.get_child().set_halign(Gtk.Align.START)
button_roundup.connect('activate-link',
- lambda widget: webbrowser.open(CONFIG['bug.url'], new=2))
+ lambda widget: webbrowser_open(CONFIG['bug.url'], new=2))
dialog.vbox.pack_start(
button_roundup, expand=False, fill=False, padding=0)
@@ -899,7 +905,7 @@
def check_version(box, version=__version__):
def info_bar_response(info_bar, response, box, url):
if response == Gtk.ResponseType.ACCEPT:
- webbrowser.open(url)
+ webbrowser_open(url)
box.remove(info_bar)
class HeadRequest(urllib.request.Request):
@@ -951,7 +957,7 @@
version = 'latest'
else:
version = '.'.join(version)
- webbrowser.open(CONFIG['doc.url'] % {
+ webbrowser_open(CONFIG['doc.url'] % {
'lang': CONFIG['client.lang'],
'version': version,
})
@@ -1045,7 +1051,7 @@
query['renew'] = user_id
url_parts[4] = urlencode(query)
url = urlunparse(url_parts)
- webbrowser.open(url)
+ webbrowser_open(url)
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
View it on Heptapod:
https://foss.heptapod.net/tryton/tryton/-/commit/7af047d859c49cfe7854a711996245a428591e41
--
View it on Heptapod:
https://foss.heptapod.net/tryton/tryton/-/commit/7af047d859c49cfe7854a711996245a428591e41
You're receiving this email because of your account on foss.heptapod.net.