haikal/inventory/services.py

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