diff --git a/inventory/models.py b/inventory/models.py index d77a1d52..fd499f47 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -815,8 +815,8 @@ class Car(Base): color = "" try: color = self.colors.exterior.name if self.colors else "" - except Exception: - pass + except Exception as e: + logger.error(f"Error getting color for car {self.vin} error: {e}") make = self.id_car_make.name if self.id_car_make else "" model = self.id_car_model.name if self.id_car_model else "" year = self.year if self.year else 0 diff --git a/inventory/signals.py b/inventory/signals.py index 19f55a60..6371b9a2 100644 --- a/inventory/signals.py +++ b/inventory/signals.py @@ -1,3 +1,4 @@ +import os from datetime import datetime, timedelta from decimal import Decimal from django.urls import reverse @@ -1291,30 +1292,39 @@ def handle_car_image(sender, instance, created, **kwargs): try: # Create or get car image record car = instance.car - car_image, created = models.CarImage.objects.get_or_create( - car=car, defaults={"image_hash": car.get_hash} - ) + car.hash = car.get_hash + car.save() + # car_image, created = models.CarImage.objects.get_or_create( + # car=car, defaults={"image_hash": car.get_hash} + # ) # Check for existing image with same hash - existing = ( - models.CarImage.objects.filter( - image_hash=car_image.image_hash, image__isnull=False - ) - .exclude(car=car) - .first() - ) + existing = os.path.exists(os.path.join(settings.MEDIA_ROOT, "car_images",car.get_hash + ".png")) + # existing = ( + # models.CarImage.objects.filter( + # image_hash=car.get_hash, image__isnull=False + # ) + # .first() + # ) if existing: + logger.info(f"Found existing image for car {car.vin}") # Copy existing image - car_image.image.save(existing.image.name, existing.image.file, save=True) + # car_image.image.save(existing.image.name, existing.image.file, save=True) logger.info(f"Reused image for car {car.vin}") else: + logger.info(f"Generating image for car {car.vin}") # Schedule async generation async_task( "inventory.tasks.generate_car_image_task", - car_image.id, + car.pk, task_name=f"generate_car_image_{car.vin}", ) + # async_task( + # "inventory.tasks.generate_car_image_task", + # car_image.id, + # task_name=f"generate_car_image_{car.vin}", + # ) logger.info(f"Scheduled image generation for car {car.vin}") except Exception as e: diff --git a/inventory/tasks.py b/inventory/tasks.py index 31df3a19..b33798f4 100644 --- a/inventory/tasks.py +++ b/inventory/tasks.py @@ -29,6 +29,7 @@ from inventory.models import ( CarReservation, CarStatusChoices, CarImage, + Car ) logger = logging.getLogger(__name__) @@ -981,8 +982,9 @@ def generate_car_image_task(car_image_id): from inventory.utils import generate_car_image_simple try: - car_image = CarImage.objects.get(id=car_image_id) - result = generate_car_image_simple(car_image) + # car_image = CarImage.objects.get(id=car_image_id) + car = Car.objects.get(pk=car_image_id) + result = generate_car_image_simple(car) return { "success": result.get("success", False), @@ -992,11 +994,6 @@ def generate_car_image_task(car_image_id): if result.get("success") else "Generation failed", } - - except CarImage.DoesNotExist: - error_msg = f"CarImage with id {car_image_id} not found" - logger.error(error_msg) - return {"success": False, "error": error_msg} except Exception as e: error_msg = f"Unexpected error: {e}" logger.error(error_msg) diff --git a/inventory/utils.py b/inventory/utils.py index ede69b63..58db19d6 100644 --- a/inventory/utils.py +++ b/inventory/utils.py @@ -1,3 +1,4 @@ +import os import json import secrets import logging @@ -2519,7 +2520,7 @@ class CarImageAPIClient: "X-CSRFToken": self.csrf_token, "Referer": self.BASE_URL, } - print(payload) + logger.info(f"Generating image with payload: {payload}") generate_data = { "year": payload["year"], "make": payload["make"], @@ -2541,6 +2542,7 @@ class CarImageAPIClient: # Parse response result = response.json() image_url = result.get("url") + logger.info(f"Generated image URL: {image_url}") if not image_url: raise Exception("No image URL in response") @@ -2617,11 +2619,10 @@ def resize_image(image_data, max_size=(800, 600)): return None, error_msg -def generate_car_image_simple(car_image): +def generate_car_image_simple(car): """ Simple function to generate car image with authentication and resizing """ - car = car_image.car # Prepare payload payload = { @@ -2659,12 +2660,15 @@ def generate_car_image_simple(car_image): file_extension = "jpg" # Save the resized image - car_image.image.save( - f"{car_image.image_hash}.{file_extension}", - ContentFile(resized_data), - save=False, - ) + logger.info(f" {car.vin}") + with open( + os.path.join(settings.MEDIA_ROOT, f"car_images/{car.get_hash}.{file_extension}"), + "wb", + ) as f: + f.write(resized_data) + logger.info(f"Saved image for car {car.vin}") + # Update CarImage record logger.info(f"Successfully generated and resized image for car {car.vin}") return {"success": True} diff --git a/static/images/car_images/009e22d9248cbe248ebdeec5a9eca611685a010e7231b9d8ff3eed7ef69578c1.png b/static/images/car_images/009e22d9248cbe248ebdeec5a9eca611685a010e7231b9d8ff3eed7ef69578c1.png deleted file mode 100644 index 91612667..00000000 Binary files a/static/images/car_images/009e22d9248cbe248ebdeec5a9eca611685a010e7231b9d8ff3eed7ef69578c1.png and /dev/null differ diff --git a/static/images/car_images/0ed02e56e94d3594d2b1e5e5ab16bf53b09d36ec72be7ea719b5329df2387df3.png b/static/images/car_images/0ed02e56e94d3594d2b1e5e5ab16bf53b09d36ec72be7ea719b5329df2387df3.png new file mode 100644 index 00000000..9c468d0a Binary files /dev/null and b/static/images/car_images/0ed02e56e94d3594d2b1e5e5ab16bf53b09d36ec72be7ea719b5329df2387df3.png differ diff --git a/static/images/car_images/26ed2a3da637ef1d2311b7d9669ac114e6fb0e3bb6a95ca869ddfbef25d276a8.png b/static/images/car_images/26ed2a3da637ef1d2311b7d9669ac114e6fb0e3bb6a95ca869ddfbef25d276a8.png deleted file mode 100644 index f2027520..00000000 Binary files a/static/images/car_images/26ed2a3da637ef1d2311b7d9669ac114e6fb0e3bb6a95ca869ddfbef25d276a8.png and /dev/null differ diff --git a/static/images/car_images/370df757c47466bfb70106880aee1f587c8b2dbeb760008d26d83ae3180a8cf9.png b/static/images/car_images/370df757c47466bfb70106880aee1f587c8b2dbeb760008d26d83ae3180a8cf9.png deleted file mode 100644 index b657fcfb..00000000 Binary files a/static/images/car_images/370df757c47466bfb70106880aee1f587c8b2dbeb760008d26d83ae3180a8cf9.png and /dev/null differ diff --git a/static/images/car_images/48ddd3296f1d67086048962de55ac90c1d9947366a18043174310b159a0ccdda.png b/static/images/car_images/48ddd3296f1d67086048962de55ac90c1d9947366a18043174310b159a0ccdda.png deleted file mode 100644 index 19f4ce00..00000000 Binary files a/static/images/car_images/48ddd3296f1d67086048962de55ac90c1d9947366a18043174310b159a0ccdda.png and /dev/null differ diff --git a/static/images/car_images/534ccd6b97e583b70543209caaf576527c919392e734930c122e85abacbd0342.png b/static/images/car_images/534ccd6b97e583b70543209caaf576527c919392e734930c122e85abacbd0342.png deleted file mode 100644 index 71b7ad54..00000000 Binary files a/static/images/car_images/534ccd6b97e583b70543209caaf576527c919392e734930c122e85abacbd0342.png and /dev/null differ diff --git a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c.png b/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c.png index 8c22617c..30089c22 100644 Binary files a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c.png and b/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c.png differ diff --git a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_GIABVaX.png b/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_GIABVaX.png deleted file mode 100644 index f9a9b63f..00000000 Binary files a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_GIABVaX.png and /dev/null differ diff --git a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_TaF9jXJ.png b/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_TaF9jXJ.png deleted file mode 100644 index c0b265db..00000000 Binary files a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_TaF9jXJ.png and /dev/null differ diff --git a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_Xi6gGPz.png b/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_Xi6gGPz.png deleted file mode 100644 index d52612cc..00000000 Binary files a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_Xi6gGPz.png and /dev/null differ diff --git a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_elzHw3E.png b/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_elzHw3E.png deleted file mode 100644 index 43249c33..00000000 Binary files a/static/images/car_images/b1872f9d53118c9722ce29bfaf776074982b86af4dae8476c8b63661c79a4d9c_elzHw3E.png and /dev/null differ diff --git a/static/images/car_images/b9972af9fc7780b4efee193a1a361c388c86f933a9321092b10673c1b28ba853.png b/static/images/car_images/b9972af9fc7780b4efee193a1a361c388c86f933a9321092b10673c1b28ba853.png deleted file mode 100644 index c68274ad..00000000 Binary files a/static/images/car_images/b9972af9fc7780b4efee193a1a361c388c86f933a9321092b10673c1b28ba853.png and /dev/null differ diff --git a/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5.png b/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5.png deleted file mode 100644 index 775fce04..00000000 Binary files a/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5.png and /dev/null differ diff --git a/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5_8INzwoS.png b/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5_8INzwoS.png deleted file mode 100644 index 1dca9f3b..00000000 Binary files a/static/images/car_images/f7c768a47ae0e98b0ade3aa5774c1cb5196f843c2f007d1f2596621fb07b9de5_8INzwoS.png and /dev/null differ diff --git a/templates/chart_of_accounts/coa_update.html b/templates/chart_of_accounts/coa_update.html index 687531ec..ebb51302 100644 --- a/templates/chart_of_accounts/coa_update.html +++ b/templates/chart_of_accounts/coa_update.html @@ -17,6 +17,12 @@ {% if form.name.help_text %}{{ form.name.help_text }}{% endif %} {% for error in form.name.errors %}
{{ error }}
{% endfor %} +
+ {{ form.active.label_tag }} + {{ form.active }} + {% if form.active.help_text %}{{ form.active.help_text }}{% endif %} + {% for error in form.active.errors %}
{{ error }}
{% endfor %} +
{{ form.description.label_tag }} {{ form.description|add_class:"form-control" }}