Fix conflict
This commit is contained in:
commit
49ab0a5843
18
apps/news/migrations/0016_news_template.py
Normal file
18
apps/news/migrations/0016_news_template.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.2.4 on 2019-09-27 13:54
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('news', '0015_auto_20190927_0853'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='news',
|
||||||
|
name='template',
|
||||||
|
field=models.PositiveIntegerField(choices=[(0, 'newspaper'), (1, 'main.pdf.erb'), (2, 'main')], default=0),
|
||||||
|
),
|
||||||
|
]
|
||||||
22
apps/news/migrations/0017_auto_20190927_1403.py
Normal file
22
apps/news/migrations/0017_auto_20190927_1403.py
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Generated by Django 2.2.4 on 2019-09-27 14:03
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('news', '0016_news_template'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='news',
|
||||||
|
name='is_publish',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='news',
|
||||||
|
name='state',
|
||||||
|
field=models.PositiveSmallIntegerField(choices=[(0, 'Waiting'), (1, 'Hidden'), (2, 'Published'), (3, 'Published exclusive')], default=0, verbose_name='State'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -39,7 +39,7 @@ class NewsQuerySet(models.QuerySet):
|
||||||
now = timezone.now()
|
now = timezone.now()
|
||||||
return self.filter(models.Q(models.Q(end__gte=now) |
|
return self.filter(models.Q(models.Q(end__gte=now) |
|
||||||
models.Q(end__isnull=True)),
|
models.Q(end__isnull=True)),
|
||||||
is_publish=True, start__lte=now)
|
state__in=[self.model.PUBLISHED_STATES], start__lte=now)
|
||||||
|
|
||||||
def with_related(self):
|
def with_related(self):
|
||||||
"""Return qs with related objects."""
|
"""Return qs with related objects."""
|
||||||
|
|
@ -49,6 +49,34 @@ class NewsQuerySet(models.QuerySet):
|
||||||
class News(BaseAttributes, TranslatedFieldsMixin):
|
class News(BaseAttributes, TranslatedFieldsMixin):
|
||||||
"""News model."""
|
"""News model."""
|
||||||
|
|
||||||
|
STR_FIELD_NAME = 'title'
|
||||||
|
|
||||||
|
# TEMPLATE CHOICES
|
||||||
|
NEWSPAPER = 0
|
||||||
|
MAIN_PDF_ERB = 1
|
||||||
|
MAIN = 2
|
||||||
|
|
||||||
|
TEMPLATE_CHOICES = (
|
||||||
|
(NEWSPAPER, 'newspaper'),
|
||||||
|
(MAIN_PDF_ERB, 'main.pdf.erb'),
|
||||||
|
(MAIN, 'main'),
|
||||||
|
)
|
||||||
|
|
||||||
|
# STATE CHOICES
|
||||||
|
WAITING = 0
|
||||||
|
HIDDEN = 1
|
||||||
|
PUBLISHED = 2
|
||||||
|
PUBLISHED_EXCLUSIVE = 3
|
||||||
|
|
||||||
|
PUBLISHED_STATES = [PUBLISHED, PUBLISHED_EXCLUSIVE]
|
||||||
|
|
||||||
|
STATE_CHOICES = (
|
||||||
|
(WAITING, _('Waiting')),
|
||||||
|
(HIDDEN, _('Hidden')),
|
||||||
|
(PUBLISHED, _('Published')),
|
||||||
|
(PUBLISHED_EXCLUSIVE, _('Published exclusive')),
|
||||||
|
)
|
||||||
|
|
||||||
news_type = models.ForeignKey(NewsType, on_delete=models.PROTECT,
|
news_type = models.ForeignKey(NewsType, on_delete=models.PROTECT,
|
||||||
verbose_name=_('news type'))
|
verbose_name=_('news type'))
|
||||||
title = TJSONField(blank=True, null=True, default=None,
|
title = TJSONField(blank=True, null=True, default=None,
|
||||||
|
|
@ -66,10 +94,15 @@ class News(BaseAttributes, TranslatedFieldsMixin):
|
||||||
slug = models.SlugField(unique=True, max_length=50,
|
slug = models.SlugField(unique=True, max_length=50,
|
||||||
verbose_name=_('News slug'))
|
verbose_name=_('News slug'))
|
||||||
playlist = models.IntegerField(_('playlist'))
|
playlist = models.IntegerField(_('playlist'))
|
||||||
is_publish = models.BooleanField(default=False,
|
|
||||||
verbose_name=_('Publish status'))
|
|
||||||
# author = models.CharField(max_length=255, blank=True, null=True,
|
# author = models.CharField(max_length=255, blank=True, null=True,
|
||||||
# default=None,verbose_name=_('Author'))
|
# default=None,verbose_name=_('Author'))
|
||||||
|
|
||||||
|
state = models.PositiveSmallIntegerField(default=WAITING, choices=STATE_CHOICES,
|
||||||
|
verbose_name=_('State'))
|
||||||
|
author = models.CharField(max_length=255, blank=True, null=True,
|
||||||
|
default=None,verbose_name=_('Author'))
|
||||||
|
|
||||||
is_highlighted = models.BooleanField(default=False,
|
is_highlighted = models.BooleanField(default=False,
|
||||||
verbose_name=_('Is highlighted'))
|
verbose_name=_('Is highlighted'))
|
||||||
# TODO: metadata_keys - описание ключей для динамического построения полей метаданных
|
# TODO: metadata_keys - описание ключей для динамического построения полей метаданных
|
||||||
|
|
@ -78,6 +111,7 @@ class News(BaseAttributes, TranslatedFieldsMixin):
|
||||||
verbose_name=_('Image URL path'))
|
verbose_name=_('Image URL path'))
|
||||||
preview_image_url = models.URLField(blank=True, null=True, default=None,
|
preview_image_url = models.URLField(blank=True, null=True, default=None,
|
||||||
verbose_name=_('Preview image URL path'))
|
verbose_name=_('Preview image URL path'))
|
||||||
|
template = models.PositiveIntegerField(choices=TEMPLATE_CHOICES, default=NEWSPAPER)
|
||||||
address = models.ForeignKey('location.Address', blank=True, null=True,
|
address = models.ForeignKey('location.Address', blank=True, null=True,
|
||||||
default=None, verbose_name=_('address'),
|
default=None, verbose_name=_('address'),
|
||||||
on_delete=models.SET_NULL)
|
on_delete=models.SET_NULL)
|
||||||
|
|
@ -97,6 +131,10 @@ class News(BaseAttributes, TranslatedFieldsMixin):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'news: {self.slug}'
|
return f'news: {self.slug}'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_publish(self):
|
||||||
|
return self.state in self.PUBLISHED_STATES
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def web_url(self):
|
def web_url(self):
|
||||||
return reverse('web:news:rud', kwargs={'slug': self.slug})
|
return reverse('web:news:rud', kwargs={'slug': self.slug})
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,8 @@ class NewsDetailSerializer(NewsBaseSerializer):
|
||||||
description_translated = TranslatedField()
|
description_translated = TranslatedField()
|
||||||
country = CountrySimpleSerializer(read_only=True)
|
country = CountrySimpleSerializer(read_only=True)
|
||||||
author = UserSerializer(source='created_by')
|
author = UserSerializer(source='created_by')
|
||||||
|
state_display = serializers.CharField(source='get_state_display',
|
||||||
|
read_only=True)
|
||||||
|
|
||||||
class Meta(NewsBaseSerializer.Meta):
|
class Meta(NewsBaseSerializer.Meta):
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
@ -61,6 +63,8 @@ class NewsDetailSerializer(NewsBaseSerializer):
|
||||||
'end',
|
'end',
|
||||||
'playlist',
|
'playlist',
|
||||||
'is_publish',
|
'is_publish',
|
||||||
|
'state',
|
||||||
|
'state_display',
|
||||||
'author',
|
'author',
|
||||||
'country',
|
'country',
|
||||||
)
|
)
|
||||||
|
|
@ -85,10 +89,11 @@ class NewsBackOfficeDetailSerializer(NewsBackOfficeBaseSerializer,
|
||||||
news_type_id = serializers.PrimaryKeyRelatedField(
|
news_type_id = serializers.PrimaryKeyRelatedField(
|
||||||
source='news_type', write_only=True,
|
source='news_type', write_only=True,
|
||||||
queryset=models.NewsType.objects.all())
|
queryset=models.NewsType.objects.all())
|
||||||
|
|
||||||
country_id = serializers.PrimaryKeyRelatedField(
|
country_id = serializers.PrimaryKeyRelatedField(
|
||||||
source='country', write_only=True,
|
source='country', write_only=True,
|
||||||
queryset=location_models.Country.objects.all())
|
queryset=location_models.Country.objects.all())
|
||||||
|
template_display = serializers.CharField(source='get_template_display',
|
||||||
|
read_only=True)
|
||||||
|
|
||||||
class Meta(NewsBackOfficeBaseSerializer.Meta, NewsDetailSerializer.Meta):
|
class Meta(NewsBackOfficeBaseSerializer.Meta, NewsDetailSerializer.Meta):
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
@ -98,5 +103,7 @@ class NewsBackOfficeDetailSerializer(NewsBackOfficeBaseSerializer,
|
||||||
'description',
|
'description',
|
||||||
'news_type_id',
|
'news_type_id',
|
||||||
'country_id',
|
'country_id',
|
||||||
|
'template',
|
||||||
|
'template_display',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user