From: Emilie Date: Fri, 28 Oct 2016 14:26:11 +0000 (+0200) Subject: Task #328: add related titles X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=dc7c43d8a02fd6dc82874cdf9f38dac50729e0b4;p=mezzo.git Task #328: add related titles --- diff --git a/app/organization/core/models.py b/app/organization/core/models.py index 0277e5d7..a145a307 100644 --- a/app/organization/core/models.py +++ b/app/organization/core/models.py @@ -253,3 +253,11 @@ class Address(models.Model): class Meta: abstract = True + + +class RelatedTitle(models.Model): + + title = models.CharField(_('title'), max_length=1024, null=True, blank=True) + + class Meta: + abstract = True diff --git a/app/organization/magazine/admin.py b/app/organization/magazine/admin.py index cf7e863c..8b9a4506 100644 --- a/app/organization/magazine/admin.py +++ b/app/organization/magazine/admin.py @@ -1,6 +1,7 @@ from django.contrib import admin from django import forms from copy import deepcopy +from modeltranslation.admin import TranslationTabularInline from mezzanine.core.admin import * from mezzanine.pages.admin import PageAdmin from organization.magazine.models import * @@ -39,6 +40,11 @@ class DynamicContentArticleInline(TabularDynamicInlineAdmin): ) +class ArticleRelatedTitleAdmin(TranslationTabularInline): + + model = ArticleRelatedTitle + + class ArticleAdminDisplayable(DisplayableAdmin): fieldsets = deepcopy(ArticleAdmin.fieldsets) @@ -46,6 +52,7 @@ class ArticleAdminDisplayable(DisplayableAdmin): filter_horizontal = ['categories',] inlines = [ArticleImageInline, ArticlePersonAutocompleteInlineAdmin, + ArticleRelatedTitleAdmin, DynamicContentArticleInline, ArticlePlaylistInline] diff --git a/app/organization/magazine/migrations/0015_auto_20161028_1613.py b/app/organization/magazine/migrations/0015_auto_20161028_1613.py new file mode 100644 index 00000000..3607013e --- /dev/null +++ b/app/organization/magazine/migrations/0015_auto_20161028_1613.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.10 on 2016-10-28 14:13 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-magazine', '0014_brief_style'), + ] + + operations = [ + migrations.CreateModel( + name='ArticleRelatedTitle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(blank=True, max_length=1024, null=True, verbose_name='title')), + ('article', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='related_title', to='organization-magazine.Article', verbose_name='article')), + ], + options={ + 'verbose_name': 'related title', + }, + ), + migrations.AlterOrderWithRespectTo( + name='articlerelatedtitle', + order_with_respect_to='article', + ), + ] diff --git a/app/organization/magazine/migrations/0016_auto_20161028_1617.py b/app/organization/magazine/migrations/0016_auto_20161028_1617.py new file mode 100644 index 00000000..65ff4a11 --- /dev/null +++ b/app/organization/magazine/migrations/0016_auto_20161028_1617.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.10 on 2016-10-28 14:17 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-magazine', '0015_auto_20161028_1613'), + ] + + operations = [ + migrations.AddField( + model_name='articlerelatedtitle', + name='title_en', + field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='title'), + ), + migrations.AddField( + model_name='articlerelatedtitle', + name='title_fr', + field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='title'), + ), + ] diff --git a/app/organization/magazine/models.py b/app/organization/magazine/models.py index fad057f2..9272bf54 100644 --- a/app/organization/magazine/models.py +++ b/app/organization/magazine/models.py @@ -45,6 +45,15 @@ class ArticleImage(Image): order_with_respect_to = "article" +class ArticleRelatedTitle(RelatedTitle): + + article = models.OneToOneField("Article", verbose_name=_('article'), related_name='related_title', blank=True, null=True, on_delete=models.SET_NULL) + + class Meta: + verbose_name = _("related title") + order_with_respect_to = "article" + + class ArticlePlaylist(PlaylistRelated): article = models.ForeignKey(Article, verbose_name=_('article'), related_name='playlists', blank=True, null=True, on_delete=models.SET_NULL) diff --git a/app/organization/magazine/translation.py b/app/organization/magazine/translation.py index e52ad434..e8322017 100644 --- a/app/organization/magazine/translation.py +++ b/app/organization/magazine/translation.py @@ -47,3 +47,9 @@ class DynamicContentArticleTranslationOptions(TranslationOptions): class ArticlePlaylistTranslationOptions(TranslationOptions): pass + + +@register(ArticleRelatedTitle) +class ArticleRelatedTitleTranslationOptions(TranslationOptions): + + fields = ('title', ) diff --git a/app/organization/pages/admin.py b/app/organization/pages/admin.py index 9e346c0b..33edf783 100644 --- a/app/organization/pages/admin.py +++ b/app/organization/pages/admin.py @@ -1,4 +1,5 @@ from django.contrib import admin +from modeltranslation.admin import TranslationTabularInline from mezzanine.utils.static import static_lazy as static from copy import deepcopy from mezzanine.core.admin import * @@ -68,6 +69,11 @@ class DynamicContentPageInline(TabularDynamicInlineAdmin): ) +class PageRelatedTitleAdmin(TranslationTabularInline): + + model = PageRelatedTitle + + class CustomPageAdmin(PageAdmin): inlines = [PageBlockInline, @@ -76,6 +82,7 @@ class CustomPageAdmin(PageAdmin): PageLinkInline, PersonListBlockAutocompleteInlineAdmin, PageProductListInline, + PageRelatedTitleAdmin, DynamicContentPageInline ] diff --git a/app/organization/pages/migrations/0014_auto_20161028_1516.py b/app/organization/pages/migrations/0014_auto_20161028_1516.py new file mode 100644 index 00000000..8e9d0e2a --- /dev/null +++ b/app/organization/pages/migrations/0014_auto_20161028_1516.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.10 on 2016-10-28 13:16 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('pages', '0005_auto_20160923_1219'), + ('organization-pages', '0013_auto_20161026_1025'), + ] + + operations = [ + migrations.CreateModel( + name='PageRelatedTitle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(blank=True, max_length=1024, null=True, verbose_name='title')), + ('page', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='related_title', to='pages.Page', verbose_name='page')), + ], + options={ + 'verbose_name': 'related title', + }, + ), + migrations.AlterOrderWithRespectTo( + name='pagerelatedtitle', + order_with_respect_to='page', + ), + ] diff --git a/app/organization/pages/migrations/0015_auto_20161028_1541.py b/app/organization/pages/migrations/0015_auto_20161028_1541.py new file mode 100644 index 00000000..2ba95f15 --- /dev/null +++ b/app/organization/pages/migrations/0015_auto_20161028_1541.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.10 on 2016-10-28 13:41 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-pages', '0014_auto_20161028_1516'), + ] + + operations = [ + migrations.AddField( + model_name='pagerelatedtitle', + name='title_en', + field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='title'), + ), + migrations.AddField( + model_name='pagerelatedtitle', + name='title_fr', + field=models.CharField(blank=True, max_length=1024, null=True, verbose_name='title'), + ), + ] diff --git a/app/organization/pages/models.py b/app/organization/pages/models.py index 0832eaef..d674ca8d 100644 --- a/app/organization/pages/models.py +++ b/app/organization/pages/models.py @@ -56,6 +56,15 @@ class PageLink(Link): order_with_respect_to = "page" +class PageRelatedTitle(RelatedTitle): + + page = models.OneToOneField(Page, verbose_name=_('page'), related_name='related_title', blank=True, null=True, on_delete=models.SET_NULL) + + class Meta: + verbose_name = _("related title") + order_with_respect_to = "page" + + class DynamicContentPage(DynamicContent, Orderable): page = models.ForeignKey(Page, verbose_name=_('page'), related_name='dynamic_content_pages', blank=True, null=True, on_delete=models.SET_NULL) diff --git a/app/organization/pages/translation.py b/app/organization/pages/translation.py index aca424dd..fbddb716 100644 --- a/app/organization/pages/translation.py +++ b/app/organization/pages/translation.py @@ -68,3 +68,9 @@ class DynamicContentPageTranslationOptions(TranslationOptions): class LinkImageTranslationOptions(TranslationOptions): pass + + +@register(PageRelatedTitle) +class PageRelatedTitleTranslationOptions(TranslationOptions): + + fields = ('title',) diff --git a/app/templates/core/inc/related_content.html b/app/templates/core/inc/related_content.html index 5599fc4d..795c6e76 100644 --- a/app/templates/core/inc/related_content.html +++ b/app/templates/core/inc/related_content.html @@ -1,11 +1,11 @@ {% load i18n mezzanine_tags keyword_tags organization_tags pages_tags %} -{% if dynamic_content %} +{% if dynamic_content.first.content_object %}
-

{% trans "Also discover" %}

+

{% if object.related_title.title %}{{ object.related_title.title }}{% else %}{% trans "Also discover" %}{% endif %}

diff --git a/app/templates/magazine/article/article_detail.html b/app/templates/magazine/article/article_detail.html index df225d4b..2552b324 100644 --- a/app/templates/magazine/article/article_detail.html +++ b/app/templates/magazine/article/article_detail.html @@ -93,7 +93,7 @@ {% endblock %} {% block page_related_content %} - {% with article.dynamic_content_articles.all as dynamic_content %} + {% with dynamic_content=article.dynamic_content_articles.all object=article %} {% include "core/inc/related_content.html" %} {% endwith %} {% endblock %} diff --git a/app/templates/pages/custompage.html b/app/templates/pages/custompage.html index 406bdf5b..2ffb0b39 100644 --- a/app/templates/pages/custompage.html +++ b/app/templates/pages/custompage.html @@ -87,7 +87,4 @@ {% endwith %} {% endblock %} - {% block page_related_content %} - {{ block.super }} - {% endblock %} {% endwith %} diff --git a/app/templates/pages/departmentpage.html b/app/templates/pages/departmentpage.html index c3a459d9..c122ccdb 100644 --- a/app/templates/pages/departmentpage.html +++ b/app/templates/pages/departmentpage.html @@ -57,27 +57,3 @@ {% include "core/inc/block.html" %} {% endwith %} {% endblock %} - -{% block page_related_content %} - {% if page.departmentpage.department.articles.all %} -
-
-
-
-
-
-

{% trans "Also discover" %}

-
-
-
- {% for article in page.departmentpage.department.articles.all %} -
- {% include 'magazine/article/includes/article_card.html' %} -
- {% endfor %} -
-
-
-
- {% endif %} -{% endblock %} diff --git a/app/templates/pages/page.html b/app/templates/pages/page.html index e86c36ea..912b0ed3 100644 --- a/app/templates/pages/page.html +++ b/app/templates/pages/page.html @@ -162,7 +162,7 @@
{% block page_related_content %} - {% with page.dynamic_content_pages.all as dynamic_content %} + {% with dynamic_content=page.dynamic_content_pages.all object=page %} {% include "core/inc/related_content.html" %} {% endwith %} {% endblock %}