59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
|
|
import datetime
|
|
import json
|
|
|
|
import requests
|
|
from django.utils import timezone
|
|
from constance import config
|
|
|
|
from .models import CallRequest, RequestLog
|
|
|
|
|
|
def add_call_request(call_request: CallRequest, logging=True):
|
|
call_request.reset_request()
|
|
|
|
data = dict(
|
|
number_b=call_request.patient_phone,
|
|
name=call_request.patient_name,
|
|
date=call_request.date.strftime('%Y-%m-%d'),
|
|
time=call_request.date.strftime('%H:%M'),
|
|
doctor=call_request.doctor_name,
|
|
address=call_request.address,
|
|
)
|
|
|
|
hooks = None
|
|
if logging:
|
|
log = RequestLog(
|
|
request_url=config.HOST,
|
|
request_body=json.dumps(data, ensure_ascii=False, indent=4),
|
|
)
|
|
hooks = {'response': log.response_hook}
|
|
|
|
r = requests.post(
|
|
config.HOST,
|
|
auth=(config.USERNAME, config.PASSWORD),
|
|
json=data,
|
|
hooks=hooks
|
|
)
|
|
call_request.response_status_code = r.status_code
|
|
call_request.request_time = timezone.now()
|
|
if r.status_code == 200:
|
|
call_request.call_id = r.json()['request_id']
|
|
call_request.request_status = CallRequest.RequestStatus.SENT
|
|
elif r.status_code == 400:
|
|
call_request.call_id = r.json()['request_id']
|
|
call_request.response_message = r.json()['error']
|
|
call_request.request_status = CallRequest.RequestStatus.ERROR
|
|
|
|
call_request.save(update_fields=(
|
|
'call_id',
|
|
'request_status',
|
|
'request_time',
|
|
'response_status_code',
|
|
'response_message',
|
|
))
|
|
|
|
|
|
def call_history(date_from: datetime.date, date_to: datetime.date):
|
|
pass
|