From 5a18be4584a914c7f268bf1932cb715e13ab3773 Mon Sep 17 00:00:00 2001 From: dormantman Date: Tue, 17 Dec 2019 21:13:10 +0300 Subject: [PATCH 1/4] Added slugify to create collection --- apps/collection/models.py | 8 ++++++++ requirements/base.txt | 3 +++ 2 files changed, 11 insertions(+) diff --git a/apps/collection/models.py b/apps/collection/models.py index df570c0f..b0ce3b2d 100644 --- a/apps/collection/models.py +++ b/apps/collection/models.py @@ -13,6 +13,8 @@ from utils.models import ( from utils.querysets import RelatedObjectsCountMixin from utils.models import IntermediateGalleryModelMixin, GalleryModelMixin +from slugify import slugify + # Mixins class CollectionNameMixin(models.Model): @@ -140,6 +142,12 @@ class Collection(ProjectBaseMixin, CollectionDateMixin, return related_objects + def save(self, *args, **kwargs): + if not self.pk: + slugify_slug = slugify(self.name) + self.slug = slugify_slug + super(Collection, self).save(*args, **kwargs) + class GuideTypeQuerySet(models.QuerySet): """QuerySet for model GuideType.""" diff --git a/requirements/base.txt b/requirements/base.txt index 90e5b2d5..79594ea5 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -63,3 +63,6 @@ pycountry==19.8.18 # sql-tree django-mptt==0.9.1 + +# slugify +python-slugify==4.0.0 From c5bfdb9cde6b38e6328401bddaca4d020b89c5a6 Mon Sep 17 00:00:00 2001 From: dormantman Date: Tue, 17 Dec 2019 21:17:01 +0300 Subject: [PATCH 2/4] Added some params --- apps/collection/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/collection/models.py b/apps/collection/models.py index b0ce3b2d..5672a743 100644 --- a/apps/collection/models.py +++ b/apps/collection/models.py @@ -81,7 +81,7 @@ class Collection(ProjectBaseMixin, CollectionDateMixin, description = TJSONField( _('description'), null=True, blank=True, default=None, help_text='{"en-GB":"some text"}') - slug = models.SlugField(max_length=50, unique=True, + slug = models.SlugField(max_length=255, unique=True, verbose_name=_('Collection slug'), editable=True, null=True) old_id = models.IntegerField(null=True, blank=True) @@ -144,7 +144,7 @@ class Collection(ProjectBaseMixin, CollectionDateMixin, def save(self, *args, **kwargs): if not self.pk: - slugify_slug = slugify(self.name) + slugify_slug = slugify(self.name, word_boundary=True) self.slug = slugify_slug super(Collection, self).save(*args, **kwargs) From 1131b0289171800c17f1f1aa1689afbfe7029447 Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Tue, 17 Dec 2019 21:53:42 +0300 Subject: [PATCH 3/4] add collection migration & fix serializer according to the task --- .../migrations/0027_auto_20191217_1852.py | 18 ++++++++++++++++++ apps/collection/serializers/back.py | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 apps/collection/migrations/0027_auto_20191217_1852.py diff --git a/apps/collection/migrations/0027_auto_20191217_1852.py b/apps/collection/migrations/0027_auto_20191217_1852.py new file mode 100644 index 00000000..5cbc4e0d --- /dev/null +++ b/apps/collection/migrations/0027_auto_20191217_1852.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.7 on 2019-12-17 18:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('collection', '0026_merge_20191217_1151'), + ] + + operations = [ + migrations.AlterField( + model_name='collection', + name='slug', + field=models.SlugField(max_length=255, null=True, unique=True, verbose_name='Collection slug'), + ), + ] diff --git a/apps/collection/serializers/back.py b/apps/collection/serializers/back.py index 35917142..06630d8e 100644 --- a/apps/collection/serializers/back.py +++ b/apps/collection/serializers/back.py @@ -43,6 +43,9 @@ class CollectionBackOfficeSerializer(CollectionBaseSerializer): 'related_object_names', 'rank', ] + extra_kwargs = { + 'slug': {'read_only': True}, + } class CollectionBindObjectSerializer(serializers.Serializer): From 8efd4e3c7745df1d411deeb394cab67deca898cd Mon Sep 17 00:00:00 2001 From: Ruslan Stepanov Date: Mon, 23 Dec 2019 13:20:46 +0000 Subject: [PATCH 4/4] Fix slugify --- apps/collection/models.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/collection/models.py b/apps/collection/models.py index 5672a743..317863c0 100644 --- a/apps/collection/models.py +++ b/apps/collection/models.py @@ -144,7 +144,10 @@ class Collection(ProjectBaseMixin, CollectionDateMixin, def save(self, *args, **kwargs): if not self.pk: - slugify_slug = slugify(self.name, word_boundary=True) + slugify_slug = slugify( + next(iter(self.name.values())), + word_boundary=True + ) self.slug = slugify_slug super(Collection, self).save(*args, **kwargs)