mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-10-25 07:07:57 +00:00
Merge pull request #223 from KiwiTechLLC/ZBKADM-72
csv/excel method changed, uploading to alibaba cloud and providing li…
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ from django.db.models import Q
|
||||
from account.utils import custom_response, custom_error_response
|
||||
from base.constants import USER_TYPE
|
||||
from base.messages import SUCCESS_CODE, ERROR_CODE
|
||||
from guardian.models import Guardian
|
||||
from junior.models import Junior
|
||||
from web_admin.permission import AdminPermission
|
||||
from web_admin.serializers.user_management_serializer import (UserManagementListSerializer,
|
||||
UserManagementDetailSerializer, GuardianSerializer,
|
||||
@@ -70,12 +72,14 @@ class UserManagementViewSet(GenericViewSet, mixins.ListModelMixin,
|
||||
"""
|
||||
if self.request.query_params.get('user_type') not in [dict(USER_TYPE).get('1'), dict(USER_TYPE).get('2')]:
|
||||
return custom_error_response(ERROR_CODE['2067'], status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
queryset = self.queryset
|
||||
if self.request.query_params.get('user_type') == dict(USER_TYPE).get('2'):
|
||||
queryset = queryset.filter(id=kwargs['pk'])
|
||||
elif self.request.query_params.get('user_type') == dict(USER_TYPE).get('1'):
|
||||
queryset = queryset.filter(id=kwargs['pk'])
|
||||
serializer = UserManagementDetailSerializer(queryset, many=True)
|
||||
queryset = queryset.filter(id=kwargs['pk'])
|
||||
|
||||
serializer = UserManagementDetailSerializer(
|
||||
queryset, many=True,
|
||||
context={'user_type': self.request.query_params.get('user_type')}
|
||||
)
|
||||
return custom_response(None, data=serializer.data)
|
||||
|
||||
def partial_update(self, request, *args, **kwargs):
|
||||
@@ -87,15 +91,14 @@ class UserManagementViewSet(GenericViewSet, mixins.ListModelMixin,
|
||||
"""
|
||||
if self.request.query_params.get('user_type') not in [dict(USER_TYPE).get('1'), dict(USER_TYPE).get('2')]:
|
||||
return custom_error_response(ERROR_CODE['2067'], status.HTTP_400_BAD_REQUEST)
|
||||
queryset = self.queryset
|
||||
if self.request.query_params.get('user_type') == dict(USER_TYPE).get('2'):
|
||||
user_obj = queryset.filter(id=kwargs['pk']).first()
|
||||
serializer = GuardianSerializer(user_obj.guardian_profile.all().first(),
|
||||
guardian = Guardian.objects.filter(user_id=kwargs['pk'], is_verified=True).first()
|
||||
serializer = GuardianSerializer(guardian,
|
||||
request.data, context={'user_id': kwargs['pk']})
|
||||
|
||||
elif self.request.query_params.get('user_type') == dict(USER_TYPE).get('1'):
|
||||
user_obj = queryset.filter(id=kwargs['pk']).first()
|
||||
serializer = JuniorSerializer(user_obj.junior_profile.all().first(),
|
||||
junior = Junior.objects.filter(auth_id=kwargs['pk'], is_verified=True).select_related('auth').first()
|
||||
serializer = JuniorSerializer(junior,
|
||||
request.data, context={'user_id': kwargs['pk']})
|
||||
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
Reference in New Issue
Block a user