diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-05-06 18:16:05 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-06-17 13:21:28 +0200 | 
| commit | 8e44059bec779007f8aed357a8ddfb155bcd989b (patch) | |
| tree | c9fb03cb05f7febf5278982a9d19ab19a959f316 /ishtar_common/admin.py | |
| parent | 43ab0a3ebf23480184bdfb50da0ddf13aa10f751 (diff) | |
| download | Ishtar-8e44059bec779007f8aed357a8ddfb155bcd989b.tar.bz2 Ishtar-8e44059bec779007f8aed357a8ddfb155bcd989b.zip  | |
Generate libreoffice template for importer from admin
Diffstat (limited to 'ishtar_common/admin.py')
| -rw-r--r-- | ishtar_common/admin.py | 40 | 
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)  | 
