From 6c5c29fcbd5f4cd062c8140c57684f1f8ee36ec5 Mon Sep 17 00:00:00 2001 From: Emilie Date: Thu, 28 Jul 2016 16:42:28 +0200 Subject: [PATCH] Task #73 #84: Article card + detail --- .../migrations/0003_auto_20160728_1536.py | 56 +++++++++++++++++++ .../0004_article_related_article.py | 20 +++++++ .../migrations/0005_auto_20160728_1551.py | 24 ++++++++ .../migrations/0006_auto_20160728_1632.py | 20 +++++++ app/organization/magazine/models.py | 8 ++- .../magazine/article/article_detail.html | 38 ++++++------- .../article/includes/article_card.html | 14 ++--- 7 files changed, 148 insertions(+), 32 deletions(-) create mode 100644 app/organization/magazine/migrations/0003_auto_20160728_1536.py create mode 100644 app/organization/magazine/migrations/0004_article_related_article.py create mode 100644 app/organization/magazine/migrations/0005_auto_20160728_1551.py create mode 100644 app/organization/magazine/migrations/0006_auto_20160728_1632.py diff --git a/app/organization/magazine/migrations/0003_auto_20160728_1536.py b/app/organization/magazine/migrations/0003_auto_20160728_1536.py new file mode 100644 index 00000000..4523667c --- /dev/null +++ b/app/organization/magazine/migrations/0003_auto_20160728_1536.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-28 13:36 +from __future__ import unicode_literals + +from django.db import migrations, models +import mezzanine.core.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-magazine', '0002_delete_category'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='photo', + field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='photo'), + ), + migrations.AddField( + model_name='article', + name='photo_alignment', + field=models.CharField(blank=True, choices=[('left', 'left'), ('center', 'center'), ('right', 'right')], default='left', max_length=32, verbose_name='photo alignment'), + ), + migrations.AddField( + model_name='article', + name='photo_card', + field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='card photo'), + ), + migrations.AddField( + model_name='article', + name='photo_card_credits', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo card credits'), + ), + migrations.AddField( + model_name='article', + name='photo_credits', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo credits'), + ), + migrations.AddField( + model_name='article', + name='photo_description', + field=models.TextField(blank=True, verbose_name='photo description'), + ), + migrations.AddField( + model_name='article', + name='photo_slider', + field=mezzanine.core.fields.FileField(blank=True, max_length=1024, verbose_name='slider photo'), + ), + migrations.AddField( + model_name='article', + name='photo_slider_credits', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='photo slider credits'), + ), + ] diff --git a/app/organization/magazine/migrations/0004_article_related_article.py b/app/organization/magazine/migrations/0004_article_related_article.py new file mode 100644 index 00000000..7cf1a711 --- /dev/null +++ b/app/organization/magazine/migrations/0004_article_related_article.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-28 13:49 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-magazine', '0003_auto_20160728_1536'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='related_article', + field=models.ManyToManyField(blank=True, related_name='_article_related_article_+', to='organization-magazine.Article', verbose_name='Related posts'), + ), + ] diff --git a/app/organization/magazine/migrations/0005_auto_20160728_1551.py b/app/organization/magazine/migrations/0005_auto_20160728_1551.py new file mode 100644 index 00000000..3bd17a1d --- /dev/null +++ b/app/organization/magazine/migrations/0005_auto_20160728_1551.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-28 13:51 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-magazine', '0004_article_related_article'), + ] + + operations = [ + migrations.RemoveField( + model_name='article', + name='related_article', + ), + migrations.AddField( + model_name='article', + name='related_articles', + field=models.ManyToManyField(blank=True, related_name='_article_related_articles_+', to='organization-magazine.Article', verbose_name='Related posts'), + ), + ] diff --git a/app/organization/magazine/migrations/0006_auto_20160728_1632.py b/app/organization/magazine/migrations/0006_auto_20160728_1632.py new file mode 100644 index 00000000..623e436a --- /dev/null +++ b/app/organization/magazine/migrations/0006_auto_20160728_1632.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-28 14:32 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-magazine', '0005_auto_20160728_1551'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='related_articles', + field=models.ManyToManyField(blank=True, related_name='_article_related_articles_+', to='organization-magazine.Article', verbose_name='Related articles'), + ), + ] diff --git a/app/organization/magazine/models.py b/app/organization/magazine/models.py index 8d5dc3ce..64ea040b 100644 --- a/app/organization/magazine/models.py +++ b/app/organization/magazine/models.py @@ -6,12 +6,14 @@ from django.core.urlresolvers import reverse, reverse_lazy from mezzanine.core.models import RichText, Displayable, Slugged from mezzanine.blog.models import BlogPost from organization.core.models import Named, Description +from organization.media.models import Photo - -class Article(BlogPost): +class Article(BlogPost, Photo): sub_title = models.CharField(_('sub title'), blank=True, max_length=1000) - + related_articles = models.ManyToManyField("self", + verbose_name=_("Related articles"), blank=True) + model_name = _('article') def get_absolute_url(self): return reverse("magazine-article-detail", kwargs={"slug": self.slug}) diff --git a/app/templates/magazine/article/article_detail.html b/app/templates/magazine/article/article_detail.html index 5b270816..d4d5e442 100644 --- a/app/templates/magazine/article/article_detail.html +++ b/app/templates/magazine/article/article_detail.html @@ -23,40 +23,36 @@ {% block page_title %} + {% if article.keywords %} + {{ article.keywords.first }} | {{ article.model_name }} + {% endif %} + {% editable article.title %}

{{ article.title }}

{% endeditable %} + {% editable article.sub_title %} +

{{ article.sub_title }}

+ {% endeditable %} + {% endblock %} {% block page_content %} + {% editable article.content %} {{ article.content|richtext_filters|safe }} {% endeditable %} + {% block page_sub_content %} + {% if article.related_articles.all %} -{% endblock %} +

{% trans "Also discover" %}

+ {% for article in article.related_articles.all %} + {% include 'magazine/article/includes/article_card.html' %} + {% endfor %} + {% endif %} + {% endblock %} -{% block page_sub_content %} - {{ block.super }} - - {% comment %} - Don't know why this doesn't work :( - {% endcomment %} - - {% if related_posts %} -

{% trans "Also discover" %}

- {% for post in related_posts %} - {% include 'magazine/article/includes/article_card.html' %} - {% endfor %} - {% endif %} - -
-

{% trans "Also discover" %}

-
- {% include 'magazine/article/includes/article_card.html' %} -
-
{% endblock %} {% block page_sidebar %} diff --git a/app/templates/magazine/article/includes/article_card.html b/app/templates/magazine/article/includes/article_card.html index 7705ebd6..12f2a127 100644 --- a/app/templates/magazine/article/includes/article_card.html +++ b/app/templates/magazine/article/includes/article_card.html @@ -1,29 +1,27 @@ {% load i18n pages_tags mezzanine_tags %}
- +
- +
{% trans 'Actualité' %}
+ {% if article.keywords %}
- transmission + {{ article.keywords.first }}
+ {% endif %}
+

{{ article.title }}

{{ article.publish_date|date:"DATE_FORMAT" }} - {% if article.categories %} - {% for category in article.categories.all %} - | {{ category }} - {% endfor %} - {% endif %}
{{ article.content|richtext_filters|safe|truncatechars:200 }} -- 2.39.5