diff options
| 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 |
| commit | 9090f6f58c9dddd7a01fc70c9e03e9481d151a48 (patch) | |
| tree | 62910b375e5bc21f2324639ce8b85c6e6c355ae0 /ishtar_common/libreoffice.py | |
| parent | 8fa835b955c362b0c9fa00b66fdf39315f311315 (diff) | |
| download | Ishtar-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.py | 16 |
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: |
