fix slug unique issue

This commit is contained in:
ismail 2025-05-20 18:39:35 +03:00
parent 5c4ea15fdf
commit 41feca462d

View File

@ -188,7 +188,13 @@ class CarMake(models.Model, LocalizedNameMixin):
def save(self, *args, **kwargs):
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)
def __str__(self):
return self.name
@ -204,7 +210,13 @@ class CarModel(models.Model, LocalizedNameMixin):
slug = models.SlugField(max_length=255, unique=True, blank=True, null=True)
def save(self, *args, **kwargs):
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)
def __str__(self):
@ -227,7 +239,13 @@ class CarSerie(models.Model, LocalizedNameMixin):
slug = models.SlugField(max_length=255, unique=True, blank=True, null=True)
def save(self, *args, **kwargs):
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)
def __str__(self):
@ -249,7 +267,13 @@ class CarTrim(models.Model, LocalizedNameMixin):
slug = models.SlugField(max_length=255, unique=True, blank=True, null=True)
def save(self, *args, **kwargs):
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)
def __str__(self):
@ -288,7 +312,13 @@ class CarSpecification(models.Model, LocalizedNameMixin):
slug = models.SlugField(max_length=255, unique=True, blank=True, null=True)
def save(self, *args, **kwargs):
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)
def __str__(self):
@ -324,7 +354,13 @@ class CarOption(models.Model, LocalizedNameMixin):
slug = models.SlugField(max_length=255, unique=True, blank=True, null=True)
def save(self, *args, **kwargs):
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)
def __str__(self):
@ -1139,7 +1175,13 @@ class Customer(models.Model):
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(f"{self.first_name} {self.last_name}")
base_slug = slugify(f"{self.last_name} {self.first_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)
class Meta:
@ -1508,8 +1550,14 @@ class Lead(models.Model):
def save(self, *args, **kwargs):
self.status = self.get_status()
if not self.slug:
self.slug = slugify(f"{self.first_name} {self.last_name}")
super(Lead, self).save(*args, **kwargs)
base_slug = slugify(f"{self.last_name} {self.first_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)
class Schedule(models.Model):
PURPOSE_CHOICES = [
@ -1769,7 +1817,13 @@ class Vendor(models.Model, LocalizedNameMixin):
def save(self, *args, **kwargs):
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)
class Meta:
verbose_name = _("Vendor")