Fix crash when using LocalizedUniqueSlugField in a bulk_create

This commit is contained in:
Swen Kooij 2017-05-31 11:31:04 +03:00
parent 1b036dc1de
commit b97a7f3c23
2 changed files with 29 additions and 3 deletions

View File

@ -91,11 +91,12 @@ class LocalizedUniqueSlugField(LocalizedAutoSlugField):
if self.include_time:
slug += '-%d' % datetime.now().microsecond
if instance.retries > 0:
retries = getattr(instance, 'retries', 0)
if retries > 0:
# do not add another - if we already added time
if not self.include_time:
slug += '-'
slug += '%d' % instance.retries
slug += '%d' % retries
slugs.set(lang_code, slug)

View File

@ -4,7 +4,7 @@ from django.db import models
from django.conf import settings
from django.test import TestCase
from localized_fields.fields import LocalizedField
from localized_fields.fields import LocalizedField, LocalizedUniqueSlugField
from .data import get_init_values
from .fake_model import get_fake_model
@ -16,6 +16,9 @@ class LocalizedBulkTestCase(TestCase):
@staticmethod
def test_localized_bulk_insert():
"""Tests that bulk inserts work properly when using
a :see:LocalizedField in the model."""
model = get_fake_model(
'BulkInsertModel',
{
@ -31,3 +34,25 @@ class LocalizedBulkTestCase(TestCase):
])
assert model.objects.all().count() == 3
@staticmethod
def test_localized_slug_bulk_insert():
"""Tests whether bulk inserts work properly when using
a :see:LocalizedUniqueSlugField in the model."""
model = get_fake_model(
'BulkSlugInsertModel',
{
'name': LocalizedField(),
'slug': LocalizedUniqueSlugField(populate_from='name', include_time=True),
'score': models.IntegerField()
}
)
objects = model.objects.bulk_create([
model(name={'en': 'english name 1', 'ro': 'romanian name 1'}, score=1),
model(name={'en': 'english name 2', 'ro': 'romanian name 2'}, score=2),
model(name={'en': 'english name 3', 'ro': 'romanian name 3'}, score=3)
])
assert model.objects.all().count() == 3