summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py40
1 files changed, 39 insertions, 1 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 23167180a..75d223005 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -938,9 +938,47 @@ def duplicate_importertype(modeladmin, request, queryset):
duplicate_importertype.short_description = _(u"Duplicate")
+def generate_libreoffice_template(modeladmin, request, queryset):
+ if queryset.count() != 1:
+ messages.add_message(
+ request, messages.ERROR,
+ str(_("Select only one importer."))
+ )
+ url = reverse(
+ 'admin:%s_%s_changelist' % (
+ modeladmin.model._meta.app_label,
+ modeladmin.model._meta.model_name)
+ ) + '?' + urllib.parse.urlencode(request.GET)
+ return HttpResponseRedirect(url)
+
+ importer_type = queryset.all()[0]
+ dest_filename = importer_type.get_libreoffice_template()
+ in_memory = BytesIO()
+ with open(dest_filename, 'rb') as fle:
+ in_memory.write(fle.read())
+ filename = dest_filename.split(os.sep)[-1]
+
+ response = HttpResponse(
+ content_type='application/vnd.oasis.opendocument.spreadsheet')
+ response['Content-Disposition'] = 'attachment; filename=%s' % \
+ filename.replace(' ', '_')
+ in_memory.seek(0)
+ response.write(in_memory.read())
+ return response
+
+
+generate_libreoffice_template.short_description = \
+ _("Export as libreoffice template")
+
+
+importer_type_actions = [duplicate_importertype]
+if settings.USE_LIBREOFFICE:
+ importer_type_actions.append(generate_libreoffice_template)
+
+
class ImporterTypeAdmin(admin.ModelAdmin):
list_display = ('name', 'associated_models', 'available')
- actions = [duplicate_importertype]
+ actions = importer_type_actions
admin_site.register(models.ImporterType, ImporterTypeAdmin)