from proctoring.services.jo_mrz_extractor import extract_mrz_info from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden from django.views.decorators.csrf import csrf_exempt import json import datetime @csrf_exempt def jo_embassy_check_id(request): if request.method != "POST": return HttpResponseForbidden("Only POST requests are allowed") try: data = json.loads(request.body) idFront = data.get("idfront", "") idBack = data.get("idback", "") except json.JSONDecodeError: return HttpResponseBadRequest("Invalid JSON data") if idFront == "": return HttpResponseBadRequest("Missing parameters") name,dob,gender,nationality,expiryDate = extract_mrz_info(idFront) if name is None or expiryDate is None or gender is None or nationality is None or dob is None: if idBack=="": response = {"pass": False, "message":"ID back side is needed"} return HttpResponse(json.dumps(response)) name,dob,gender,nationality,expiryDate= extract_mrz_info(idBack) if name is None or expiryDate is None or gender is None or nationality is None or dob is None: response = {"pass": False, "message":"None valid ID was provided!"} return HttpResponse(json.dumps(response)) today = datetime.datetime.today() date_format = '%Y-%m-%d' date_obj = datetime.datetime.strptime(expiryDate, date_format) if today >date_obj: response = {"pass": False, "message":"Expired ID was provided!"} return HttpResponse(json.dumps(response)) response = {"pass": True, "name":name, "expiryDate":expiryDate,"dateOfBirth":dob,"gender":gender,"nationality":nationality} return HttpResponse(json.dumps(response))