work on product csv loading
This commit is contained in:
@@ -62,30 +62,31 @@ def my_products(request):
|
||||
@api_view(['POST',])
|
||||
@permission_classes([IsAuthenticated,])
|
||||
def load_coop_products(request):
|
||||
"""Read CSV file being received
|
||||
Parse it to create products for related Company
|
||||
"""Read CSV file being received
|
||||
Parse it to create products for related Company
|
||||
|
||||
Authenticated user must have a related company
|
||||
"""
|
||||
try:
|
||||
# check company linked to user
|
||||
if request.user.company is None:
|
||||
return Response({"errors":{"details": "Your user has no company to add products to"}})
|
||||
Authenticated user must have a related company
|
||||
"""
|
||||
# check company linked to user
|
||||
if request.user.company is None:
|
||||
return Response({"errors":{"details": "Your user has no company to add products to"}}, status=status.HTTP_406_NOT_ACCEPTABLE)
|
||||
|
||||
csv_file = request.FILES['csv_file']
|
||||
if csv_file.name.endswith('.csv') is not True:
|
||||
logging.error(f"File {csv_file.name} is not a CSV file")
|
||||
return Response({"errors":{"details": "File is not CSV type"}})
|
||||
try:
|
||||
csv_file = request.FILES['csv_file']
|
||||
if csv_file.name.endswith('.csv') is not True:
|
||||
logging.error(f"File {csv_file.name} is not a CSV file")
|
||||
return Response({"errors":{"details": "File is not CSV type"}})
|
||||
|
||||
logging.info(f"Reading contents of {csv_file.name}")
|
||||
decoded_file = csv_file.read().decode('utf-8').splitlines()
|
||||
csv_reader = csv.DictReader(decoded_file, delimiter=',')
|
||||
count = product_loader(csv_reader, request.user)
|
||||
if count is None:
|
||||
return Response({"errors": {"details": "Authenticated user is not related to any company"}}, status=status.HTTP_406_NOT_ACCEPTABLE)
|
||||
return Response(f"{count} products registered for {request.user.company.company_name}")
|
||||
except Exception as e:
|
||||
return Response({"errors": {"details": str(type(e))}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
logging.info(f"Reading contents of {csv_file.name}")
|
||||
decoded_file = csv_file.read().decode('utf-8').splitlines()
|
||||
csv_reader = csv.DictReader(decoded_file, delimiter=',')
|
||||
|
||||
count = product_loader(csv_reader, request.user)
|
||||
if count is None:
|
||||
return Response({"errors": {"details": "Authenticated user is not related to any company"}}, status=status.HTTP_406_NOT_ACCEPTABLE)
|
||||
return Response(f"{count} products registered for {request.user.company.company_name}")
|
||||
except Exception as e:
|
||||
return Response({"errors": {"details": str(type(e))}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
|
||||
@api_view(['GET',]) # include allowed methods
|
||||
|
||||
Reference in New Issue
Block a user