85 lines
2.0 KiB
Python
85 lines
2.0 KiB
Python
"""
|
|
Services module
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
|
|
from django_ledger.models import EntityModel
|
|
|
|
from inventory.utils import get_jwt_token
|
|
from pyvin import VIN
|
|
from django.conf import settings
|
|
from openai import OpenAI
|
|
from .models import Car,CarMake,CarModel
|
|
|
|
|
|
def get_make(item):
|
|
data = CarMake.objects.filter(name__iexact=item).first()
|
|
return data
|
|
|
|
def get_model(item,make):
|
|
data = make.carmodel_set.filter(name__iexact=item).first()
|
|
if not data:
|
|
r = item.split(" ")
|
|
for i in r:
|
|
if data:=make.carmodel_set.filter(name__iexact=i).first():
|
|
break
|
|
return data
|
|
|
|
def normalize_name(name):
|
|
return name.replace(" ", "").replace("-", "").lower()
|
|
|
|
|
|
def decodevin(vin):
|
|
|
|
if result:=decode_vin(vin):
|
|
return result
|
|
elif result:=elm(vin):
|
|
return result
|
|
else:
|
|
return None
|
|
|
|
|
|
def decode_vin(vin):
|
|
v = VIN(vin)
|
|
data = {}
|
|
if v:
|
|
data = {
|
|
"maker": v.Make,
|
|
"model": v.Model,
|
|
"modelYear": v.ModelYear,
|
|
}
|
|
|
|
return data if all([x for x in data.values()]) else None
|
|
|
|
|
|
def elm(vin):
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"app-id": settings.ELM_APP_ID,
|
|
"app-key": settings.ELM_APP_KEY,
|
|
"client-id": settings.ELM_CLIENT_ID,
|
|
}
|
|
url = (
|
|
"https://vehicle-maintenance.api.elm.sa/api/v1/vehicles/vehicle-info?vin=" + vin
|
|
)
|
|
|
|
payload = {}
|
|
response = requests.request("GET", url, headers=headers, data=payload)
|
|
response = json.loads(response.text)
|
|
data = {}
|
|
if response.get("data"):
|
|
data = {
|
|
"maker": response["data"]["maker"],
|
|
"model": response["data"]["model"],
|
|
"modelYear": response["data"]["modelYear"],
|
|
}
|
|
|
|
return data if all([x for x in data.values()]) else None
|
|
|
|
|
|
def get_ledger_data(request):
|
|
entity = EntityModel.objects.filter(name="Marwan2").first()
|
|
data = entity.get_items_all()
|
|
print(data) |