csv/excel method changed, uploading to alibaba cloud and providing link to frontend

This commit is contained in:
abutalib-kiwi
2023-08-18 11:41:24 +05:30
parent 4e8243c17e
commit ceaf584332
5 changed files with 56 additions and 39 deletions

View File

@ -6,6 +6,9 @@ import datetime
import io
import pandas as pd
import xlsxwriter
import tempfile
import oss2
from django.conf import settings
# third party imports
from rest_framework.viewsets import GenericViewSet
@ -166,7 +169,8 @@ class AnalyticsViewSet(GenericViewSet):
start_date = datetime.datetime.strptime(request.query_params.get('start_date'), DATE_FORMAT)
end_date = datetime.datetime.strptime(request.query_params.get('end_date'), DATE_FORMAT)
buffer = io.BytesIO() # Use BytesIO for binary data
# Use BytesIO for binary data
buffer = io.BytesIO()
# Create an XlsxWriter Workbook object
workbook = xlsxwriter.Workbook(buffer)
@ -191,7 +195,8 @@ class AnalyticsViewSet(GenericViewSet):
for user in serializer.data
])
for idx, col in enumerate(df_users.columns):
worksheet.write(0, idx, col) # Write header
# Write header
worksheet.write(0, idx, col)
for row_num, row in enumerate(df_users.values, start=1):
for col_num, value in enumerate(row):
worksheet.write(row_num, col_num, value)
@ -208,7 +213,8 @@ class AnalyticsViewSet(GenericViewSet):
])
for idx, col in enumerate(df_tasks.columns):
worksheet.write(0, idx, col) # Write header
# Write header
worksheet.write(0, idx, col)
for row_num, row in enumerate(df_tasks.values, start=1):
for col_num, value in enumerate(row):
worksheet.write(row_num, col_num, value)
@ -231,7 +237,8 @@ class AnalyticsViewSet(GenericViewSet):
])
for idx, col in enumerate(df_leaderboard.columns):
worksheet.write(0, idx, col) # Write header
# Write header
worksheet.write(0, idx, col)
for row_num, row in enumerate(df_leaderboard.values, start=1):
for col_num, value in enumerate(row):
worksheet.write(row_num, col_num, value)
@ -244,5 +251,19 @@ class AnalyticsViewSet(GenericViewSet):
response.write(buffer.getvalue())
buffer.close()
return response
filename = f"{'analytics'}/{'ZOD_Bank_Analytics.xlsx'}"
with tempfile.NamedTemporaryFile(delete=False) as temp_file:
"""write image in temporary file"""
temp_file.write(response.content)
"""auth of bucket"""
auth = oss2.Auth(settings.ALIYUN_OSS_ACCESS_KEY_ID, settings.ALIYUN_OSS_ACCESS_KEY_SECRET)
"""fetch bucket details"""
bucket = oss2.Bucket(auth, settings.ALIYUN_OSS_ENDPOINT, settings.ALIYUN_OSS_BUCKET_NAME)
# Upload the temporary file to Alibaba OSS
bucket.put_object_from_file(filename, temp_file.name)
"""create perfect url for image"""
new_filename = filename.replace(' ', '%20')
link = f"https://{settings.ALIYUN_OSS_BUCKET_NAME}.{settings.ALIYUN_OSS_ENDPOINT}/{new_filename}"
print(link)
return custom_response(None, link)