Merge branch 'develop' into feature/guides
This commit is contained in:
commit
5d69f2a5e7
|
|
@ -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."""
|
||||
|
|
|
|||
32
apps/main/migrations/0043_auto_20191217_1120.py
Normal file
32
apps/main/migrations/0043_auto_20191217_1120.py
Normal 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'),
|
||||
),
|
||||
]
|
||||
17
apps/main/migrations/0044_auto_20191217_1125.py
Normal file
17
apps/main/migrations/0044_auto_20191217_1125.py
Normal 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',
|
||||
),
|
||||
]
|
||||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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'], ]
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user