Skip to content

Commit f4b9af4

Browse files

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

plugins/polio/api/campaigns/campaigns.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import json
33
from time import gmtime, strftime
44
from typing import Any, List, Union
5+
from tempfile import NamedTemporaryFile
56

67
from django.conf import settings
78
from django.core.cache import cache
@@ -17,7 +18,7 @@
1718
from django.utils.translation import gettext as _
1819
from django_filters.rest_framework import DjangoFilterBackend # type: ignore
1920
from gspread.exceptions import APIError # type: ignore
20-
from openpyxl.writer.excel import save_virtual_workbook # type: ignore
21+
from openpyxl import Workbook
2122
from rest_framework import filters, permissions, serializers, status
2223
from rest_framework.decorators import action
2324
from rest_framework.fields import Field
@@ -822,10 +823,12 @@ def create_calendar_xlsx_sheet(self, request, **kwargs):
822823
filename = xlsx_file_name("calendar", params)
823824
xlsx_file = generate_xlsx_campaigns_calendar(filename, calendar_data)
824825

825-
response = HttpResponse(
826-
save_virtual_workbook(xlsx_file),
827-
content_type=CONTENT_TYPE_XLSX,
828-
)
826+
with NamedTemporaryFile() as tmp:
827+
xlsx_file.save(tmp.name)
828+
tmp.seek(0)
829+
stream = tmp.read()
830+
831+
response = HttpResponse(stream, content_type=CONTENT_TYPE_XLSX)
829832
response["Content-Disposition"] = "attachment; filename=%s" % filename + ".xlsx"
830833
return response
831834

0 commit comments

Comments
 (0)