fix news slug
This commit is contained in:
parent
490fae3c00
commit
16f06ce2f1
|
|
@ -1,11 +1,12 @@
|
|||
"""News app models."""
|
||||
from django.db import models
|
||||
from django.contrib.contenttypes import fields as generic
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from rest_framework.reverse import reverse
|
||||
from utils.models import BaseAttributes, TJSONField, TranslatedFieldsMixin, ProjectBaseMixin
|
||||
|
||||
from rating.models import Rating
|
||||
from utils.models import BaseAttributes, TJSONField, TranslatedFieldsMixin, ProjectBaseMixin
|
||||
|
||||
|
||||
class NewsType(models.Model):
|
||||
|
|
@ -217,7 +218,6 @@ class NewsGalleryQuerySet(models.QuerySet):
|
|||
|
||||
|
||||
class NewsGallery(models.Model):
|
||||
|
||||
news = models.ForeignKey(News, null=True,
|
||||
related_name='news_gallery',
|
||||
on_delete=models.CASCADE,
|
||||
|
|
|
|||
|
|
@ -2,10 +2,12 @@ from rest_framework import serializers
|
|||
|
||||
from news.models import News
|
||||
from utils.legacy_parser import parse_legacy_news_content
|
||||
from utils.slug_generator import generate_unique_slug
|
||||
|
||||
|
||||
class NewsSerializer(serializers.ModelSerializer):
|
||||
locale = serializers.CharField()
|
||||
slug = serializers.CharField()
|
||||
body = serializers.CharField(allow_null=True)
|
||||
title = serializers.CharField()
|
||||
template = serializers.CharField()
|
||||
|
|
@ -27,6 +29,7 @@ class NewsSerializer(serializers.ModelSerializer):
|
|||
|
||||
def validate(self, data):
|
||||
data.update({
|
||||
'slug': generate_unique_slug(News, data['slug']),
|
||||
'state': self.get_state(data),
|
||||
'template': self.get_template(data),
|
||||
'title': self.get_title(data),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from rest_framework import serializers
|
||||
from recipe.models import Recipe
|
||||
from utils.legacy_parser import parse_legacy_content
|
||||
from utils.legacy_parser import parse_legacy_news_content
|
||||
|
||||
|
||||
class RecipeSerializer(serializers.ModelSerializer):
|
||||
|
|
@ -51,5 +51,5 @@ class RecipeSerializer(serializers.ModelSerializer):
|
|||
# return {"en-GB": desc}
|
||||
content = None
|
||||
if obj['body']:
|
||||
content = parse_legacy_content(obj['body'])
|
||||
content = parse_legacy_news_content(obj['body'])
|
||||
return {obj['locale']: content}
|
||||
|
|
|
|||
15
apps/utils/slug_generator.py
Normal file
15
apps/utils/slug_generator.py
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
from django.utils.text import slugify
|
||||
|
||||
|
||||
def generate_unique_slug(klass, text):
|
||||
"""
|
||||
return unique slug if origin slug is exist.
|
||||
eg: `foo-bar` => `foo-bar-1`
|
||||
"""
|
||||
origin_slug = slugify(text)
|
||||
unique_slug = origin_slug
|
||||
numb = 1
|
||||
while klass.objects.filter(slug=unique_slug).exists():
|
||||
unique_slug = f'{origin_slug}-{numb}'
|
||||
numb += 1
|
||||
return unique_slug
|
||||
Loading…
Reference in New Issue
Block a user