Merge branch 'develop' into feature/guides

This commit is contained in:
Anatoly 2019-12-17 15:21:27 +03:00
commit 5d69f2a5e7
6 changed files with 85 additions and 9 deletions

View File

@ -11,7 +11,7 @@ class SiteSettingsInline(admin.TabularInline):
@admin.register(models.SiteSettings)
class SiteSettingsAdmin(admin.ModelAdmin):
"""Site settings admin conf."""
inlines = [SiteSettingsInline,]
inlines = [SiteSettingsInline, ]
@admin.register(models.Feature)
@ -54,3 +54,13 @@ class PageAdmin(admin.ModelAdmin):
list_display = ('id', '__str__', 'advertisement')
list_filter = ('advertisement__url', 'source')
date_hierarchy = 'created'
@admin.register(models.Footer)
class FooterAdmin(admin.ModelAdmin):
"""Footer admin."""
@admin.register(models.FooterLink)
class FooterLinkAdmin(admin.ModelAdmin):
"""FooterLink admin."""

View File

@ -0,0 +1,32 @@
# Generated by Django 2.2.7 on 2019-12-17 11:20
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('main', '0042_panel'),
]
operations = [
migrations.CreateModel(
name='FooterLinks',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='Date created')),
('modified', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('link', models.URLField(verbose_name='link')),
('title', models.CharField(max_length=255, verbose_name='title')),
],
options={
'abstract': False,
},
),
migrations.AddField(
model_name='footer',
name='links',
field=models.ManyToManyField(related_name='link_footer', to='main.FooterLinks', verbose_name='links'),
),
]

View File

@ -0,0 +1,17 @@
# Generated by Django 2.2.7 on 2019-12-17 11:25
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('main', '0043_auto_20191217_1120'),
]
operations = [
migrations.RenameModel(
old_name='FooterLinks',
new_name='FooterLink',
),
]

View File

@ -354,6 +354,11 @@ class PageType(ProjectBaseMixin):
return self.name
class FooterLink(ProjectBaseMixin):
link = models.URLField(_('link'))
title = models.CharField(_('title'), max_length=255)
class Footer(ProjectBaseMixin):
site = models.ForeignKey(
'main.SiteSettings', related_name='footers', verbose_name=_('footer'),
@ -361,6 +366,7 @@ class Footer(ProjectBaseMixin):
)
about_us = models.TextField(_('about_us'))
copyright = models.TextField(_('copyright'))
links = models.ManyToManyField(FooterLink, verbose_name=_('links'), related_name='link_footer')
class PanelQuerySet(models.QuerySet):

View File

@ -129,6 +129,9 @@ class NewsQuerySet(TranslationQuerysetMixin):
)
)
def by_locale(self, locale):
return self.filter(title__icontains=locale)
class News(GalleryModelMixin, BaseAttributes, TranslatedFieldsMixin, HasTagsMixin,
FavoritesMixin):
@ -172,7 +175,7 @@ class News(GalleryModelMixin, BaseAttributes, TranslatedFieldsMixin, HasTagsMixi
verbose_name=_('title'),
help_text='{"en-GB":"some text"}')
backoffice_title = models.TextField(null=True, default=None,
verbose_name=_('Title for searching via BO'))
verbose_name=_('Title for searching via BO'))
subtitle = TJSONField(blank=True, null=True, default=None,
verbose_name=_('subtitle'),
help_text='{"en-GB":"some text"}')
@ -187,8 +190,8 @@ class News(GalleryModelMixin, BaseAttributes, TranslatedFieldsMixin, HasTagsMixi
end = models.DateTimeField(blank=True, null=True, default=None,
verbose_name=_('End'))
slugs = HStoreField(null=True, blank=True, default=dict,
verbose_name=_('Slugs for current news obj'),
help_text='{"en-GB":"some slug"}')
verbose_name=_('Slugs for current news obj'),
help_text='{"en-GB":"some slug"}')
state = models.PositiveSmallIntegerField(default=WAITING, choices=STATE_CHOICES,
verbose_name=_('State'))
is_highlighted = models.BooleanField(default=False,
@ -240,7 +243,6 @@ class News(GalleryModelMixin, BaseAttributes, TranslatedFieldsMixin, HasTagsMixi
self.duplication_date = timezone.now()
self.save()
@property
def duplicates(self):
"""Duplicates for this news item excluding same country code labeled"""
@ -330,7 +332,6 @@ class News(GalleryModelMixin, BaseAttributes, TranslatedFieldsMixin, HasTagsMixi
class NewsGallery(IntermediateGalleryModelMixin):
news = models.ForeignKey(News, null=True,
related_name='news_gallery',
on_delete=models.CASCADE,
@ -344,4 +345,4 @@ class NewsGallery(IntermediateGalleryModelMixin):
"""NewsGallery meta class."""
verbose_name = _('news gallery')
verbose_name_plural = _('news galleries')
unique_together = [['news', 'image'],]
unique_together = [['news', 'image'], ]

View File

@ -1,6 +1,7 @@
"""News app views."""
from django.conf import settings
from django.shortcuts import get_object_or_404
from django.utils import translation
from rest_framework import generics, permissions, response
from news import filters, models, serializers
@ -29,6 +30,11 @@ class NewsMixinView:
qs = qs.international_news()
else:
qs = qs.by_country_code(country_code)
locale = kwargs.get('locale')
if locale:
qs = qs.by_locale(locale)
return qs
def get_object(self):
@ -43,7 +49,11 @@ class NewsListView(NewsMixinView, generics.ListAPIView):
filter_class = filters.NewsListFilterSet
def get_queryset(self, *args, **kwargs):
kwargs.update({'international_preferred': True})
locale = translation.get_language()
kwargs.update({
'international_preferred': True,
'locale': locale,
})
return super().get_queryset(*args, **kwargs)
@ -181,6 +191,6 @@ class NewsCarouselCreateDestroyView(CarouselCreateDestroyMixinView):
class NewsCloneView(generics.CreateAPIView):
"""View for creating clone News"""
permission_classes = (permissions.AllowAny, )
permission_classes = (permissions.AllowAny,)
serializer_class = serializers.NewsCloneCreateSerializer
queryset = models.News.objects.all()