new chnages

This commit is contained in:
Faheedkhan 2025-08-11 13:01:27 +03:00
commit 70807da5fa
3 changed files with 33 additions and 14 deletions

View File

@ -381,7 +381,17 @@ class CarEquipment(models.Model, LocalizedNameMixin):
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
if not self.slug: if not self.slug:
self.slug = slugify(self.name) base_slug = slugify(self.name)
self.slug = base_slug
counter = 1
while (
self.__class__.objects.filter(slug=self.slug)
.exclude(pk=self.pk)
.exists()
):
self.slug = f"{base_slug}-{counter}"
counter += 1
super().save(*args, **kwargs) super().save(*args, **kwargs)
def __str__(self): def __str__(self):
@ -1232,6 +1242,9 @@ class Dealer(models.Model, LocalizedNameMixin):
return None return None
@property @property
def customers(self):
return models.Customer.objects.filter(dealer=self)
@property
def user_quota(self): def user_quota(self):
try: try:
quota_dict = get_user_quota(self.user) quota_dict = get_user_quota(self.user)
@ -2294,7 +2307,7 @@ class Opportunity(models.Model):
opportinity_for = self.organization.name opportinity_for = self.organization.name
if not self.slug: if not self.slug:
base_slug = slugify(f"opportunity for {opportinity_for}") base_slug = slugify(f"opportinity {opportinity_for}")
self.slug = base_slug self.slug = base_slug
counter = 1 counter = 1

View File

@ -46,7 +46,7 @@ urlpatterns = [
name="manager_dashboard", name="manager_dashboard",
), ),
path("dashboards/sales/", views.SalesDashboard.as_view(), name="sales_dashboard"), path("dashboards/sales/", views.SalesDashboard.as_view(), name="sales_dashboard"),
path("test/", views.TestView.as_view(), name="test"),
path("cars/inventory/table/", views.CarListViewTable.as_view(), name="car_table"), path("cars/inventory/table/", views.CarListViewTable.as_view(), name="car_table"),
path("export/format/", TableExport.export, name="export"), path("export/format/", TableExport.export, name="export"),
# Dealer URLs # Dealer URLs

View File

@ -106,10 +106,10 @@ from django_ledger.forms.bank_account import (
BankAccountUpdateForm, BankAccountUpdateForm,
) )
from django_ledger.views.bill import ( from django_ledger.views.bill import (
# BillModelCreateView, BillModelCreateView,
# BillModelDetailView, BillModelDetailView,
# BillModelUpdateView, BillModelUpdateView,
# BaseBillActionView as BaseBillActionViewBase, BaseBillActionView as BaseBillActionViewBase,
BillModelModelBaseView, BillModelModelBaseView,
) )
from django_ledger.forms.bill import ( from django_ledger.forms.bill import (
@ -277,11 +277,6 @@ def switch_language(request):
logger.warning(f"Invalid language code: {language}") logger.warning(f"Invalid language code: {language}")
return redirect("/") return redirect("/")
def testview(request):
return HttpResponse("test")
def dealer_signup(request): def dealer_signup(request):
from django_q.tasks import async_task from django_q.tasks import async_task
""" """
@ -356,7 +351,6 @@ def dealer_signup(request):
"account/signup-wizard.html", "account/signup-wizard.html",
) )
class HomeView(LoginRequiredMixin, TemplateView): class HomeView(LoginRequiredMixin, TemplateView):
""" """
HomeView class responsible for rendering the home page. HomeView class responsible for rendering the home page.
@ -393,6 +387,7 @@ class TestView(TemplateView):
template_name = "inventory/cars_list_api.html" template_name = "inventory/cars_list_api.html"
class ManagerDashboard(LoginRequiredMixin, TemplateView): class ManagerDashboard(LoginRequiredMixin, TemplateView):
""" """
ManagerDashboard class is a view handling the dashboard for a manager. ManagerDashboard class is a view handling the dashboard for a manager.
@ -513,7 +508,7 @@ class SalesDashboard(LoginRequiredMixin, TemplateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
dealer = self.request.dealer dealer = self.request.dealer
staff = self.request.staff staff = getattr(self.request, "staff", None)
total_cars = models.Car.objects.filter(dealer=dealer).count() total_cars = models.Car.objects.filter(dealer=dealer).count()
total_reservations = models.CarReservation.objects.filter( total_reservations = models.CarReservation.objects.filter(
reserved_by=self.request.user, reserved_until__gte=timezone.now() reserved_by=self.request.user, reserved_until__gte=timezone.now()
@ -715,6 +710,17 @@ class AjaxHandlerView(LoginRequiredMixin, View):
if result := decodevin(vin_no): if result := decodevin(vin_no):
manufacturer_name, model_name, year_model = result.values() manufacturer_name, model_name, year_model = result.values()
car_make = get_make(manufacturer_name) car_make = get_make(manufacturer_name)
if not car_make:
logger.info(
f"VIN decoded using {decoding_method}: Make={manufacturer_name}, Model={model_name}, Year={year_model}"
)
return JsonResponse(
{
"success": False,
"error": _("Manufacturer not found in the database"),
},
status=404,
)
car_model = get_model(model_name, car_make) car_model = get_model(model_name, car_make)
logger.info( logger.info(