haikal/inventory/services.py
2024-12-18 16:08:34 +00:00

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)