slugify service
This commit is contained in:
parent
483f076d1a
commit
273e417da2
8 changed files with 79 additions and 15 deletions
|
@ -1,5 +1,6 @@
|
|||
from django.db import models
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.urls import reverse
|
||||
from django.utils.text import slugify
|
||||
|
||||
from django_prose_editor.fields import ProseEditorField
|
||||
|
@ -89,6 +90,7 @@ class ServiceLevel(models.Model):
|
|||
|
||||
class Service(models.Model):
|
||||
name = models.CharField(max_length=200)
|
||||
slug = models.SlugField(max_length=250, unique=True)
|
||||
description = ProseEditorField()
|
||||
cloud_provider = models.ForeignKey(CloudProvider, on_delete=models.CASCADE)
|
||||
service_level = models.ForeignKey(ServiceLevel, on_delete=models.CASCADE)
|
||||
|
@ -108,6 +110,22 @@ class Service(models.Model):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.slug:
|
||||
base_slug = f"{self.name}-{self.cloud_provider.name}"
|
||||
self.slug = slugify(base_slug)
|
||||
|
||||
# If slug exists, append number
|
||||
counter = 1
|
||||
while Service.objects.filter(slug=self.slug).exists():
|
||||
self.slug = f"{slugify(base_slug)}-{counter}"
|
||||
counter += 1
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse("services:service_detail", kwargs={"slug": self.slug})
|
||||
|
||||
|
||||
class Lead(models.Model):
|
||||
service = models.ForeignKey(Service, on_delete=models.CASCADE)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue