diff --git a/apps/collection/models.py b/apps/collection/models.py index 5406abf5..beec9b08 100644 --- a/apps/collection/models.py +++ b/apps/collection/models.py @@ -1,6 +1,5 @@ from django.contrib.postgres.fields import JSONField from django.contrib.contenttypes.fields import ContentType -from django_extensions.db.fields import AutoSlugField from utils.models import TJSONField from django.db import models @@ -69,8 +68,8 @@ class Collection(ProjectBaseMixin, CollectionNameMixin, CollectionDateMixin, description = TJSONField( _('description'), null=True, blank=True, default=None, help_text='{"en-GB":"some text"}') - slug = AutoSlugField(max_length=50, db_index=True, populate_from=['name', 'pk'], - verbose_name=_('Collection slug'), editable=True) + slug = models.SlugField(max_length=50, unique=True, + verbose_name=_('Collection slug'), editable=True, null=True) objects = CollectionQuerySet.as_manager() diff --git a/apps/collection/urls/common.py b/apps/collection/urls/common.py index 41414a10..01385c3d 100644 --- a/apps/collection/urls/common.py +++ b/apps/collection/urls/common.py @@ -7,7 +7,7 @@ app_name = 'collection' urlpatterns = [ path('', views.CollectionListView.as_view(), name='list'), - path('/establishments/', views.CollectionEstablishmentListView.as_view(), + path('/establishments/', views.CollectionEstablishmentListView.as_view(), name='detail'), path('guides/', views.GuideListView.as_view(), name='guides-list'), diff --git a/apps/collection/views/common.py b/apps/collection/views/common.py index 8d2eb109..d42bd851 100644 --- a/apps/collection/views/common.py +++ b/apps/collection/views/common.py @@ -40,6 +40,7 @@ class CollectionEstablishmentListView(CollectionListView): permission_classes = (permissions.AllowAny,) pagination_class = ProjectPageNumberPagination serializer_class = EstablishmentListSerializer + lookup_field = 'slug' def get_queryset(self): """ @@ -47,7 +48,7 @@ class CollectionEstablishmentListView(CollectionListView): """ queryset = super(CollectionEstablishmentListView, self).get_queryset() # Perform the lookup filtering. - collection = get_object_or_404(queryset, pk=self.kwargs['pk']) + collection = get_object_or_404(queryset, slug=self.kwargs['slug']) # May raise a permission denied self.check_object_permissions(self.request, collection) diff --git a/apps/establishment/models.py b/apps/establishment/models.py index 729aec00..e3384dfb 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -9,7 +9,6 @@ from django.core.exceptions import ValidationError from django.db import models from django.utils import timezone from django.utils.translation import gettext_lazy as _ -from django_extensions.db.fields import AutoSlugField from phonenumber_field.modelfields import PhoneNumberField from location.models import Address @@ -278,7 +277,7 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin): verbose_name=_('Collections')) preview_image_url = models.URLField(verbose_name=_('Preview image URL path'), blank=True, null=True, default=None) - slug = AutoSlugField(db_index=True, max_length=50, populate_from=['name'], + slug = models.SlugField(unique=True, max_length=50, null=True, verbose_name=_('Establishment slug'), editable=True) awards = generic.GenericRelation(to='main.Award') diff --git a/apps/establishment/serializers/back.py b/apps/establishment/serializers/back.py index 41692b45..b4d8e747 100644 --- a/apps/establishment/serializers/back.py +++ b/apps/establishment/serializers/back.py @@ -20,7 +20,7 @@ class EstablishmentListCreateSerializer(EstablishmentBaseSerializer): phones = ContactPhonesSerializer(read_only=True, many=True, ) emails = ContactEmailsSerializer(read_only=True, many=True, ) socials = SocialNetworkRelatedSerializers(read_only=True, many=True, ) - slug = serializers.SlugField(allow_blank=True) + slug = serializers.SlugField(required=True, allow_blank=False) class Meta: model = models.Establishment diff --git a/apps/establishment/serializers/common.py b/apps/establishment/serializers/common.py index 15b183f8..e1cf312c 100644 --- a/apps/establishment/serializers/common.py +++ b/apps/establishment/serializers/common.py @@ -146,7 +146,7 @@ class EstablishmentBaseSerializer(serializers.ModelSerializer): subtypes = EstablishmentSubTypeSerializer(many=True) address = AddressSerializer() tags = MetaDataContentSerializer(many=True) - slug = serializers.SlugField(allow_blank=True) + slug = serializers.SlugField(allow_blank=False, required=True) class Meta: """Meta class.""" @@ -199,7 +199,7 @@ class EstablishmentDetailSerializer(EstablishmentListSerializer): best_price_menu = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True) best_price_carte = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True) - slug = serializers.SlugField(read_only=True) + slug = serializers.SlugField(required=True, allow_blank=False,) in_favorites = serializers.SerializerMethodField() diff --git a/apps/news/models.py b/apps/news/models.py index 83e44e6c..5e7fbb9d 100644 --- a/apps/news/models.py +++ b/apps/news/models.py @@ -3,7 +3,6 @@ from django.db import models from django.contrib.contenttypes import fields as generic from django.utils import timezone from django.utils.translation import gettext_lazy as _ -from django_extensions.db.fields import AutoSlugField from rest_framework.reverse import reverse from utils.models import BaseAttributes, TJSONField, TranslatedFieldsMixin @@ -68,7 +67,7 @@ class News(BaseAttributes, TranslatedFieldsMixin): start = models.DateTimeField(verbose_name=_('Start')) end = models.DateTimeField(blank=True, null=True, default=None, verbose_name=_('End')) - slug = AutoSlugField(db_index=True, max_length=50, populate_from=['title'], + slug = models.SlugField(unique=True, max_length=50, null=True, verbose_name=_('News slug'), editable=True,) playlist = models.IntegerField(_('playlist')) is_publish = models.BooleanField(default=False,