Browse Source

fix: allow unicode and non-ascii characters in slug serializer fields for video and podcast

master
Mohsen Taba 3 weeks ago
parent
commit
f0559ba9c3
  1. 12
      apps/podcast/serializers_admin.py
  2. 12
      apps/video/serializers_admin.py

12
apps/podcast/serializers_admin.py

@ -40,7 +40,7 @@ class AbsoluteFileField(serializers.FileField):
class AdminPodcastCategorySerializer(serializers.ModelSerializer): class AdminPodcastCategorySerializer(serializers.ModelSerializer):
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
class Meta: class Meta:
model = PodcastCategory model = PodcastCategory
@ -57,7 +57,7 @@ class AdminPodcastCategorySerializer(serializers.ModelSerializer):
class AdminPodcastCollectionSerializer(serializers.ModelSerializer): class AdminPodcastCollectionSerializer(serializers.ModelSerializer):
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
class Meta: class Meta:
model = PodcastCollection model = PodcastCollection
@ -76,7 +76,7 @@ class AdminPodcastCollectionSerializer(serializers.ModelSerializer):
class AdminPodcastListSerializer(serializers.ModelSerializer): class AdminPodcastListSerializer(serializers.ModelSerializer):
thumbnail = AbsoluteImageField(required=False, allow_null=True) thumbnail = AbsoluteImageField(required=False, allow_null=True)
audio_file = AbsoluteFileField(required=False, allow_null=True) audio_file = AbsoluteFileField(required=False, allow_null=True)
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
categories_detail = AdminPodcastCategorySerializer(source="categories", many=True, read_only=True) categories_detail = AdminPodcastCategorySerializer(source="categories", many=True, read_only=True)
collections_detail = AdminPodcastCollectionSerializer(source="collections", many=True, read_only=True) collections_detail = AdminPodcastCollectionSerializer(source="collections", many=True, read_only=True)
@ -101,7 +101,7 @@ class AdminPodcastListSerializer(serializers.ModelSerializer):
class AdminPodcastDetailSerializer(serializers.ModelSerializer): class AdminPodcastDetailSerializer(serializers.ModelSerializer):
thumbnail = AbsoluteImageField(required=False, allow_null=True) thumbnail = AbsoluteImageField(required=False, allow_null=True)
audio_file = AbsoluteFileField(required=False, allow_null=True) audio_file = AbsoluteFileField(required=False, allow_null=True)
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
audio_time = serializers.TimeField(required=False) audio_time = serializers.TimeField(required=False)
categories = serializers.PrimaryKeyRelatedField(queryset=PodcastCategory.objects.all(), many=True, required=False) categories = serializers.PrimaryKeyRelatedField(queryset=PodcastCategory.objects.all(), many=True, required=False)
collections = serializers.PrimaryKeyRelatedField(queryset=PodcastCollection.objects.all(), many=True, required=False) collections = serializers.PrimaryKeyRelatedField(queryset=PodcastCollection.objects.all(), many=True, required=False)
@ -217,7 +217,7 @@ class AdminPodcastPlaylistItemSerializer(serializers.ModelSerializer):
class AdminPodcastPlaylistListSerializer(serializers.ModelSerializer): class AdminPodcastPlaylistListSerializer(serializers.ModelSerializer):
thumbnail = AbsoluteImageField(required=False, allow_null=True) thumbnail = AbsoluteImageField(required=False, allow_null=True)
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
categories_detail = AdminPodcastCategorySerializer(source="categories", many=True, read_only=True) categories_detail = AdminPodcastCategorySerializer(source="categories", many=True, read_only=True)
collections_detail = AdminPodcastCollectionSerializer(source="collections", many=True, read_only=True) collections_detail = AdminPodcastCollectionSerializer(source="collections", many=True, read_only=True)
items_count = serializers.SerializerMethodField() items_count = serializers.SerializerMethodField()
@ -250,7 +250,7 @@ class AdminPodcastPlaylistListSerializer(serializers.ModelSerializer):
class AdminPodcastPlaylistDetailSerializer(serializers.ModelSerializer): class AdminPodcastPlaylistDetailSerializer(serializers.ModelSerializer):
thumbnail = AbsoluteImageField(required=False, allow_null=True) thumbnail = AbsoluteImageField(required=False, allow_null=True)
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
categories = serializers.PrimaryKeyRelatedField(queryset=PodcastCategory.objects.all(), many=True, required=False) categories = serializers.PrimaryKeyRelatedField(queryset=PodcastCategory.objects.all(), many=True, required=False)
collections = serializers.PrimaryKeyRelatedField(queryset=PodcastCollection.objects.all(), many=True, required=False) collections = serializers.PrimaryKeyRelatedField(queryset=PodcastCollection.objects.all(), many=True, required=False)
categories_detail = AdminPodcastCategorySerializer(source="categories", many=True, read_only=True) categories_detail = AdminPodcastCategorySerializer(source="categories", many=True, read_only=True)

12
apps/video/serializers_admin.py

@ -40,7 +40,7 @@ class AbsoluteFileField(serializers.FileField):
class AdminVideoCategorySerializer(serializers.ModelSerializer): class AdminVideoCategorySerializer(serializers.ModelSerializer):
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
class Meta: class Meta:
model = VideoCategory model = VideoCategory
@ -57,7 +57,7 @@ class AdminVideoCategorySerializer(serializers.ModelSerializer):
class AdminVideoCollectionSerializer(serializers.ModelSerializer): class AdminVideoCollectionSerializer(serializers.ModelSerializer):
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
class Meta: class Meta:
model = VideoCollection model = VideoCollection
@ -76,7 +76,7 @@ class AdminVideoCollectionSerializer(serializers.ModelSerializer):
class AdminVideoListSerializer(serializers.ModelSerializer): class AdminVideoListSerializer(serializers.ModelSerializer):
thumbnail = AbsoluteImageField(required=False, allow_null=True) thumbnail = AbsoluteImageField(required=False, allow_null=True)
video_file = AbsoluteFileField(required=False, allow_null=True) video_file = AbsoluteFileField(required=False, allow_null=True)
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
class Meta: class Meta:
model = Video model = Video
@ -101,7 +101,7 @@ class AdminVideoListSerializer(serializers.ModelSerializer):
class AdminVideoDetailSerializer(serializers.ModelSerializer): class AdminVideoDetailSerializer(serializers.ModelSerializer):
thumbnail = AbsoluteImageField(required=False, allow_null=True) thumbnail = AbsoluteImageField(required=False, allow_null=True)
video_file = AbsoluteFileField(required=False, allow_null=True) video_file = AbsoluteFileField(required=False, allow_null=True)
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
remove_thumbnail = serializers.BooleanField(write_only=True, required=False, default=False) remove_thumbnail = serializers.BooleanField(write_only=True, required=False, default=False)
remove_video_file = serializers.BooleanField(write_only=True, required=False, default=False) remove_video_file = serializers.BooleanField(write_only=True, required=False, default=False)
@ -216,7 +216,7 @@ class AdminVideoPlaylistItemSerializer(serializers.ModelSerializer):
class AdminVideoPlaylistListSerializer(serializers.ModelSerializer): class AdminVideoPlaylistListSerializer(serializers.ModelSerializer):
thumbnail = AbsoluteImageField(required=False, allow_null=True) thumbnail = AbsoluteImageField(required=False, allow_null=True)
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
categories_detail = AdminVideoCategorySerializer(source="categories", many=True, read_only=True) categories_detail = AdminVideoCategorySerializer(source="categories", many=True, read_only=True)
collections_detail = AdminVideoCollectionSerializer(source="collections", many=True, read_only=True) collections_detail = AdminVideoCollectionSerializer(source="collections", many=True, read_only=True)
items_count = serializers.SerializerMethodField() items_count = serializers.SerializerMethodField()
@ -249,7 +249,7 @@ class AdminVideoPlaylistListSerializer(serializers.ModelSerializer):
class AdminVideoPlaylistDetailSerializer(serializers.ModelSerializer): class AdminVideoPlaylistDetailSerializer(serializers.ModelSerializer):
thumbnail = AbsoluteImageField(required=False, allow_null=True) thumbnail = AbsoluteImageField(required=False, allow_null=True)
slug = serializers.SlugField(required=False, allow_blank=True, validators=[])
slug = serializers.CharField(required=False, allow_blank=True, allow_null=True)
categories = serializers.PrimaryKeyRelatedField(queryset=VideoCategory.objects.all(), many=True, required=False) categories = serializers.PrimaryKeyRelatedField(queryset=VideoCategory.objects.all(), many=True, required=False)
collections = serializers.PrimaryKeyRelatedField(queryset=VideoCollection.objects.all(), many=True, required=False) collections = serializers.PrimaryKeyRelatedField(queryset=VideoCollection.objects.all(), many=True, required=False)
categories_detail = AdminVideoCategorySerializer(source="categories", many=True, read_only=True) categories_detail = AdminVideoCategorySerializer(source="categories", many=True, read_only=True)

Loading…
Cancel
Save