1
0
Fork 0
mirror of synced 2024-06-26 10:00:19 +12:00

minor db fix

This commit is contained in:
Nick Sweeting 2021-02-28 22:54:04 -05:00
parent 62089fdb22
commit 844b5c5e20
2 changed files with 16 additions and 15 deletions

View file

@ -15,7 +15,7 @@ from django import forms
from ..util import htmldecode, urldecode, ansi_to_html
from core.models import Snapshot, ArchiveResult, Tag
from core.forms import AddLinkForm, TagField
from core.forms import AddLinkForm
from core.mixins import SearchResultsAdminMixin

View file

@ -33,7 +33,7 @@ class Tag(models.Model):
Based on django-taggit model
"""
name = models.CharField(verbose_name="name", unique=True, blank=False, max_length=100)
slug = models.SlugField(verbose_name="slug", unique=True, max_length=100)
slug = models.SlugField(verbose_name="slug", unique=True, blank=True, max_length=100)
class Meta:
verbose_name = "Tag"
@ -52,20 +52,21 @@ class Tag(models.Model):
if self._state.adding and not self.slug:
self.slug = self.slugify(self.name)
with transaction.atomic():
slugs = set(
type(self)
._default_manager.filter(slug__startswith=self.slug)
.values_list("slug", flat=True)
)
# if name is different but slug conficts with another tags slug, append a counter
# with transaction.atomic():
slugs = set(
type(self)
._default_manager.filter(slug__startswith=self.slug)
.values_list("slug", flat=True)
)
i = None
while True:
slug = self.slugify(self.name, i)
if slug not in slugs:
self.slug = slug
return super().save(*args, **kwargs)
i = 1 if i is None else i+1
i = None
while True:
slug = self.slugify(self.name, i)
if slug not in slugs:
self.slug = slug
return super().save(*args, **kwargs)
i = 1 if i is None else i+1
else:
return super().save(*args, **kwargs)