fixes of news

This commit is contained in:
michail 2019-10-21 17:31:44 +05:00
parent 7ebd338331
commit e7107cfd04
5 changed files with 52 additions and 4 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.4 on 2019-10-21 11:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('news', '0020_remove_news_author'),
]
operations = [
migrations.AlterField(
model_name='news',
name='slug',
field=models.SlugField(max_length=255, unique=True, verbose_name='News slug'),
),
]

View File

@ -113,7 +113,7 @@ class News(BaseAttributes, TranslatedFieldsMixin):
start = models.DateTimeField(verbose_name=_('Start'))
end = models.DateTimeField(blank=True, null=True, default=None,
verbose_name=_('End'))
slug = models.SlugField(unique=True, max_length=50,
slug = models.SlugField(unique=True, max_length=255,
verbose_name=_('News slug'))
playlist = models.IntegerField(_('playlist'))
state = models.PositiveSmallIntegerField(default=WAITING, choices=STATE_CHOICES,

View File

@ -7,10 +7,13 @@ from pprint import pprint
def transfer_news():
news_type, _ = NewsType.objects.get_or_create(name="News")
queryset = PageTexts.objects.all().annotate(news_type=Value(news_type.id, output_field=IntegerField()))
queryset = PageTexts.objects.filter(page__type="News").annotate(news_type=Value(news_type.id, output_field=IntegerField()),
playlist=Value(1, output_field=IntegerField()))
# queryset = PageTexts.objects.all().annotate(news_type=Value(news_type.id, output_field=IntegerField()))
queryset = queryset.annotate(attachment_file_name=F('page__attachment_file_name'))
queryset = queryset.annotate(template=F('page__template'))
serialized_data = NewsSerializer(data=list(queryset.values()), many=True)
if serialized_data.is_valid():
serialized_data.save()

View File

@ -1,5 +1,8 @@
from rest_framework import serializers
from news.models import News
from uuid import uuid4
import datetime
from django.conf import settings
class NewsSerializer(serializers.ModelSerializer):
@ -8,10 +11,13 @@ class NewsSerializer(serializers.ModelSerializer):
description = serializers.SerializerMethodField()
title = serializers.SerializerMethodField()
template = serializers.SerializerMethodField()
state = serializers.SerializerMethodField()
created_at = serializers.DateTimeField(source="start", format='%m-%d-%Y %H:%M:%S')
class Meta:
model = News
fields = (
"created_at",
"state",
"template",
"image_url",
@ -19,11 +25,32 @@ class NewsSerializer(serializers.ModelSerializer):
"title",
"description",
"slug",
"news_type"
"news_type",
"playlist"
)
def get_template(self, obj):
return obj.template
if obj.template == "main":
return News.MAIN
elif obj.template == "main.pdf.erb":
return News.MAIN_PDF_ERB
else:
return News.NEWSPAPER
def get_state(self, obj):
if obj.state == "published":
return News.PUBLISHED
elif obj.state == "hidden":
return News.HIDDEN
elif obj.state == "published_exclusive":
return News.PUBLISHED_EXCLUSIVE
else:
return News.WAITING
# django.db.utils.IntegrityError: "start" NOT NULL
# def get_start(self, obj):
# # return obj.created_at
# return datetime.datetime.now().isoformat()
def get_title(self, obj):
return f'{"en-GB": {obj.title}}'