add product

This commit is contained in:
javad committed 2026-10-08 16:37:45 +03:30
1 parent 423d4cf40e
commit c8d45dd07c
58 files changed
+8309 -674

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
from datetime import datetime
from io import BytesIO
from itertools import chain
import json
from django.http import HttpResponse
from openpyxl import Workbook
from openpyxl.cell import WriteOnlyCell
from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE
from openpyxl.utils import get_column_letter
def excel_response(headers, rows, filename):
workbook = Workbook(write_only=True)
sheet = workbook.create_sheet('Products')
sheet.sheet_view.rightToLeft = True
sheet.freeze_panes = 'A2'
for index in range(1, len(headers) + 1):
sheet.column_dimensions[get_column_letter(index)].width = 24
for number, row in enumerate(chain((headers,), rows), 1):
cells = []
for value in row:
if isinstance(value, datetime) and value.tzinfo:
value = value.isoformat()
if isinstance(value, (dict, list)):
value = json.dumps(value, ensure_ascii=False)
if isinstance(value, str):
value = ILLEGAL_CHARACTERS_RE.sub('', value)
cell = WriteOnlyCell(sheet, value=value)
if isinstance(value, str):
cell.data_type = 's'
cells.append(cell)
sheet.append(cells)
sheet.auto_filter.ref = f'A1:{get_column_letter(len(headers))}{number}'
content = BytesIO()
workbook.save(content)
response = HttpResponse(content.getvalue(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = f'attachment; filename="{filename}"'
return response