add unique slug to opportunity
This commit is contained in:
parent
22b87d17f6
commit
b752b4ed9b
@ -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):
|
||||||
@ -1208,7 +1218,17 @@ class Dealer(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)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -2284,7 +2304,17 @@ class Opportunity(models.Model):
|
|||||||
opportinity_for = self.organization.name
|
opportinity_for = self.organization.name
|
||||||
|
|
||||||
if not self.slug:
|
if not self.slug:
|
||||||
self.slug = slugify(f"opportunity {opportinity_for}")
|
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)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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.
|
||||||
@ -512,7 +507,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()
|
||||||
@ -714,6 +709,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(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user