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/admin.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/admin.py')
| -rw-r--r-- | ishtar_common/admin.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index f3bdac97f..0b6765399 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -2124,22 +2124,31 @@ duplicate_importertype.short_description = _("Duplicate") def generate_libreoffice_template(modeladmin, request, queryset): + c_url = ( + reverse( + "admin:%s_%s_changelist" + % (modeladmin.model._meta.app_label, modeladmin.model._meta.model_name) + ) + + "?" + + urllib.parse.urlencode(request.GET) + ) if queryset.count() != 1: messages.add_message( request, messages.ERROR, str(_("Select only one importer.")) ) - c_url = ( - reverse( - "admin:%s_%s_changelist" - % (modeladmin.model._meta.app_label, modeladmin.model._meta.model_name) - ) - + "?" - + urllib.parse.urlencode(request.GET) - ) return HttpResponseRedirect(c_url) importer_type = queryset.all()[0] dest_filename = importer_type.get_libreoffice_template() + try: + dest_filename = importer_type.get_libreoffice_template() + except AttributeError: + messages.add_message( + request, messages.ERROR, + str(_("Error on libreoffice daemon. Contact your server administrator.")) + ) + return HttpResponseRedirect(c_url) + in_memory = BytesIO() with open(dest_filename, "rb") as fle: in_memory.write(fle.read()) |
