FIX: fix request api

This commit is contained in:
daovietanh99 2024-02-22 14:53:33 +07:00
parent d156c1d937
commit 683ad1bec5
2 changed files with 59 additions and 11 deletions

View File

@ -112,6 +112,7 @@ class AccuracyViewSet(viewsets.ViewSet):
try: try:
start_date = timezone.datetime.strptime(start_date_str, '%Y-%m-%d') # We care only about day precision only start_date = timezone.datetime.strptime(start_date_str, '%Y-%m-%d') # We care only about day precision only
end_date = timezone.datetime.strptime(end_date_str, '%Y-%m-%d') end_date = timezone.datetime.strptime(end_date_str, '%Y-%m-%d')
end_date = end_date + timezone.timedelta(days=1)
# Round: # Round:
# end_date_str to the beginning of the next day # end_date_str to the beginning of the next day
# start_date_str to the start of the date # start_date_str to the start of the date
@ -119,7 +120,7 @@ class AccuracyViewSet(viewsets.ViewSet):
end_date = timezone.make_aware(end_date) end_date = timezone.make_aware(end_date)
start_date_str = start_date.strftime('%Y-%m-%dT%H:%M:%S%z') # inside logic will include second precision with timezone for calculation start_date_str = start_date.strftime('%Y-%m-%dT%H:%M:%S%z') # inside logic will include second precision with timezone for calculation
end_date_str = (end_date + timezone.timedelta(days=1)).strftime('%Y-%m-%dT%H:%M:%S%z') end_date_str = end_date.strftime('%Y-%m-%dT%H:%M:%S%z')
base_query &= Q(created_at__range=(start_date, end_date)) base_query &= Q(created_at__range=(start_date, end_date))
except Exception as e: except Exception as e:
raise InvalidException(excArgs="Date format") raise InvalidException(excArgs="Date format")
@ -128,15 +129,13 @@ class AccuracyViewSet(viewsets.ViewSet):
base_query &= Q(request_id=request_id) base_query &= Q(request_id=request_id)
if redemption_id: if redemption_id:
base_query &= Q(redemption_id=redemption_id) base_query &= Q(redemption_id=redemption_id)
base_query &= Q(is_test_request=False)
if isinstance(include_test, str): if isinstance(include_test, str):
include_test = True if include_test=="true" else False include_test = True if include_test=="true" else False
if include_test: if not include_test:
# base_query = ~base_query base_query &= Q(is_test_request=False)
base_query.children = base_query.children[:-1]
elif isinstance(include_test, bool): elif isinstance(include_test, bool):
if include_test: if not include_test:
base_query = ~base_query base_query &= Q(is_test_request=False)
if isinstance(is_reviewed, str): if isinstance(is_reviewed, str):
if is_reviewed == "reviewed": if is_reviewed == "reviewed":
base_query &= Q(is_reviewed=True) base_query &= Q(is_reviewed=True)
@ -675,7 +674,7 @@ class AccuracyViewSet(viewsets.ViewSet):
subscription_request_files = SubscriptionRequestFile.objects.filter(request=subscription_request.id) subscription_request_files = SubscriptionRequestFile.objects.filter(request=subscription_request.id)
if not data["reviewed_result"]: if "reviewed_result" not in data:
raise InvalidException(excArgs=f'reviewed_result') raise InvalidException(excArgs=f'reviewed_result')
reviewed_result = data["reviewed_result"] reviewed_result = data["reviewed_result"]
@ -706,3 +705,50 @@ class AccuracyViewSet(viewsets.ViewSet):
return JsonResponse({'message': 'success.'}, status=200) return JsonResponse({'message': 'success.'}, status=200)
else: else:
return JsonResponse({'error': 'Invalid request method.'}, status=405) return JsonResponse({'error': 'Invalid request method.'}, status=405)
@extend_schema(
request={
'multipart/form-data': {
'type': 'object',
'properties': {
'reason': {
'type': 'string',
'default': '''"Sample reason"''',
},
},
},
},
responses=None,
tags=['Accuracy']
)
@action(detail=False, url_path=r"request_image/(?P<request_id>[\w\-]+)/(?P<request_image_id>[\w\-]+)", methods=["POST"])
def request_image(self, request, request_id=None, request_image_id=None):
if request.method == 'POST':
data = request.data
base_query = Q(request_id=request_id)
subscription_request = SubscriptionRequest.objects.filter(base_query)
if subscription_request.count() == 0:
raise NotFoundException(excArgs=request_id)
subscription_request = subscription_request.first()
subscription_request_files = SubscriptionRequestFile.objects.filter(request=subscription_request.id)
if "reason" not in data:
raise InvalidException(excArgs=f'reason')
reason = data["reason"]
is_available = False
for subscription_request_file in subscription_request_files:
if subscription_request_file.file_name.split(".")[0] == request_image_id:
subscription_request_file.reason = reason
subscription_request_file.save()
is_available = True
if not is_available:
raise NotFoundException(excArgs=request_id + "/" + request_image_id)
else:
return JsonResponse({'error': 'Invalid request method.'}, status=405)

View File

@ -615,6 +615,8 @@ def predict_result_to_ready(result):
"sold_to_party": "", "sold_to_party": "",
"purchase_date": [], "purchase_date": [],
"imei_number": [],} "imei_number": [],}
if not result:
return dict_result
dict_result["retailername"] = result.get("content", {}).get("document", [{}])[0].get("content", [{}])[0].get("value", None) dict_result["retailername"] = result.get("content", {}).get("document", [{}])[0].get("content", [{}])[0].get("value", None)
dict_result["sold_to_party"] = result.get("content", {}).get("document", [{}])[0].get("content", [{}, {}])[1].get("value", None) dict_result["sold_to_party"] = result.get("content", {}).get("document", [{}])[0].get("content", [{}, {}])[1].get("value", None)
dict_result["purchase_date"] = result.get("content", {}).get("document", [{}])[0].get("content", [{}, {}, {}])[2].get("value", []) dict_result["purchase_date"] = result.get("content", {}).get("document", [{}])[0].get("content", [{}, {}, {}])[2].get("value", [])