]> git.parisson.com Git - mezzo.git/commitdiff
Task #73 #84: Article card + detail
authorEmilie <zawadzki@ircam.fr>
Thu, 28 Jul 2016 14:42:28 +0000 (16:42 +0200)
committerEmilie <zawadzki@ircam.fr>
Thu, 28 Jul 2016 14:42:28 +0000 (16:42 +0200)
app/organization/magazine/migrations/0003_auto_20160728_1536.py [new file with mode: 0644]
app/organization/magazine/migrations/0004_article_related_article.py [new file with mode: 0644]
app/organization/magazine/migrations/0005_auto_20160728_1551.py [new file with mode: 0644]
app/organization/magazine/migrations/0006_auto_20160728_1632.py [new file with mode: 0644]
app/organization/magazine/models.py
app/templates/magazine/article/article_detail.html
app/templates/magazine/article/includes/article_card.html

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 (file)
index 0000000..4523667
--- /dev/null
@@ -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 (file)
index 0000000..7cf1a71
--- /dev/null
@@ -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 (file)
index 0000000..3bd17a1
--- /dev/null
@@ -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 (file)
index 0000000..623e436
--- /dev/null
@@ -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'),
+        ),
+    ]
index 8d5dc3cefd7d806715f411037c0e727a4f542b1e..64ea040b3fa497ff7b3dfa60abad5664cbc445bb 100644 (file)
@@ -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})
 
index 5b270816b2c8a55c3b545173368bd9e8de0993aa..d4d5e442fd4ad4e147ae66143255b9263ccf97e9 100644 (file)
 
 {% block page_title %}
 
+    {% if article.keywords %}
+      {{ article.keywords.first }} | {{ article.model_name }}
+    {% endif %}
+
     {% editable article.title %}
         <h1>{{ article.title }}</h1>
     {% endeditable %}
 
+    {% editable article.sub_title %}
+        <h2>{{ article.sub_title }}</h2>
+    {% endeditable %}
+
 {% endblock %}
 
 {% block page_content %}
 
+
     {% editable article.content %}
         {{ article.content|richtext_filters|safe }}
     {% endeditable %}
+    {% block page_sub_content %}
+        {% if article.related_articles.all %}
 
-{% endblock %}
+            <h2 class="dashed dashed--center">{% trans "Also discover" %}</h2>
+            {% 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 %}
-        <h2 class="dashed dashed--center">{% trans "Also discover" %}</h2>
-        {% for post in related_posts %}
-            {% include 'magazine/article/includes/article_card.html' %}
-        {% endfor %}
-    {% endif %}
-
-    <div class="tac">
-        <h2 class="dashed dashed--center">{% trans "Also discover" %}</h2>
-        <div class="row">
-            {% include 'magazine/article/includes/article_card.html' %}
-        </div>
-    </div>
 {% endblock %}
 
 {% block page_sidebar %}
index 7705ebd63f15bfd5be1fb8ed3527818f96a1a437..12f2a127990ec59ebfa208afedbba6544f1fa809 100644 (file)
@@ -1,29 +1,27 @@
 {% load i18n pages_tags mezzanine_tags %}
 
 <div class="col-md-3 col-sm-4 col-xs-6">
-    <a class="article-box" href="{{ article.get_absolute_url }}">
+    <a class="article-box" href="{% url 'magazine-article-detail' article.slug %}">
         <div class="article-box__header">
             <figure class="article-box__image">
-                <img src="//placehold.it/710x475" data-src="//placehold.it/710x475" class="lazyload" />
+                <img src="{{ MEDIA_URL }}{% thumbnail article.photo_card.url 427 286 %}" data-src="{{ MEDIA_URL }}{% thumbnail article.photo_card.url 427 286 %}" class="lazyload" />
             </figure>
             <div class="article-box__tags">
                 <div class="tag tag--small tag--category">
                     {% trans 'Actualité' %}
                 </div>
+                {% if article.keywords %}
                 <div class="tag tag--small dashed dashed--gray">
-                    transmission
+                  {{ article.keywords.first }}
                 </div>
+                {% endif %}
             </div>
         </div>
+
         <div class="article-box__content tal">
             <h3 class="article-box__title">{{ article.title }}</h3>
             <div class="article-box__subtitle">
                 {{ article.publish_date|date:"DATE_FORMAT" }}
-                {% if article.categories %}
-                    {% for category in article.categories.all %}
-                        | <strong>{{ category }}</strong>
-                    {% endfor %}
-                {% endif %}
             </div>
             <div class="article-box__desc">
                 {{ article.content|richtext_filters|safe|truncatechars:200 }}