108 lines
2.6 KiB
Python
108 lines
2.6 KiB
Python
"""
|
|
Services module
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
from .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
|
|
|
|
|
|
# vehicle-info
|
|
# c2729afb
|
|
# 6d397471920412d672af1b8a02ca52ea
|
|
|
|
|
|
# option-info
|
|
# 367974ed
|
|
# 046b0412c1b4d3f8c39ec6375d6f3030
|
|
def elm(vin):
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"app-id": "c2729afb",
|
|
"app-key": "6d397471920412d672af1b8a02ca52ea",
|
|
"client-id": "94142c27-2536-47e9-8e28-9ca7728b9442",
|
|
}
|
|
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 translate(content, *args, **kwargs):
|
|
client = OpenAI(api_key=settings.OPENAI_API_KEY)
|
|
completion = client.chat.completions.create(
|
|
model="gpt-4",
|
|
messages=[
|
|
{
|
|
"role": "system",
|
|
"content": "You are a translation assistant that translates English to Arabic.",
|
|
},
|
|
{"role": "user", "content": content},
|
|
],
|
|
temperature=0.3,
|
|
)
|
|
translation = completion.choices[0].message.content.strip()
|
|
return translation
|
|
|
|
|
|
def calculate_stock_value():
|
|
cars = Car.objects.all()
|
|
total_value = sum(car.selling_price for car in cars)
|
|
return total_value
|