summaryrefslogtreecommitdiff
path: root/ishtar_common/libreoffice.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-01 14:05:36 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-01 14:07:17 +0200
commit9090f6f58c9dddd7a01fc70c9e03e9481d151a48 (patch)
tree62910b375e5bc21f2324639ce8b85c6e6c355ae0 /ishtar_common/libreoffice.py
parent8fa835b955c362b0c9fa00b66fdf39315f311315 (diff)
downloadIshtar-9090f6f58c9dddd7a01fc70c9e03e9481d151a48.tar.bz2
Ishtar-9090f6f58c9dddd7a01fc70c9e03e9481d151a48.zip
🐛 admin libreoffice export: instead of crash display error when libreoffice service is down or broken
Diffstat (limited to 'ishtar_common/libreoffice.py')
-rw-r--r--ishtar_common/libreoffice.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/ishtar_common/libreoffice.py b/ishtar_common/libreoffice.py
index 97437bd9a..2007bf895 100644
--- a/ishtar_common/libreoffice.py
+++ b/ishtar_common/libreoffice.py
@@ -9,6 +9,7 @@ from com.sun.star.beans import PropertyValue
from com.sun.star.connection import NoConnectException
from com.sun.star.sheet.ValidationType import LIST
from com.sun.star.table import BorderLineStyle
+from com.sun.star.uno import RuntimeException
# nosec: filename used is generated and sanitized
import subprocess # nosec
@@ -52,16 +53,15 @@ class UnoClient:
def connect(self):
local_context = uno.getComponentContext()
-
- resolver = local_context.ServiceManager.createInstanceWithContext(
- "com.sun.star.bridge.UnoUrlResolver", local_context)
- connection = get_connection()
+ connection_str = f"uno:socket,host={settings.LIBREOFFICE_HOST},port={settings.LIBREOFFICE_PORT};urp;StarOffice.ComponentContext"
try:
- self.service_manager = resolver.resolve(
- "uno:{};StarOffice.ServiceManager".format(connection))
- except NoConnectException:
+ self.context = local_context.ServiceManager.createInstanceWithContext(
+ "com.sun.star.bridge.UnoUrlResolver", local_context
+ ).resolve(connection_str)
+ except (NoConnectException, RuntimeException) as e:
self.service_manager = None
- # self.service_manager = self.service_manager.ServiceManager
+ return
+ self.service_manager = self.context.ServiceManager
def create_context(self):
if self.remote_context and self.desktop: