From 361726c380dcbab5bd70f7e7616ca62c867dc186 Mon Sep 17 00:00:00 2001 From: Emilie Date: Thu, 11 Aug 2016 10:47:41 +0200 Subject: [PATCH] Breadcrumb for article, depends from where user is coming. Department or Topic. --- app/organization/magazine/views.py | 19 ++++++++++++++++++- app/organization/team/models.py | 2 ++ .../magazine/article/article_detail.html | 9 ++++++++- app/templates/pages/department.html | 9 ++++++++- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/organization/magazine/views.py b/app/organization/magazine/views.py index d1699098..a039256c 100644 --- a/app/organization/magazine/views.py +++ b/app/organization/magazine/views.py @@ -1,3 +1,4 @@ +from urllib.parse import urlparse from django.shortcuts import render from django.utils import timezone #from django.views.generic import * @@ -5,7 +6,9 @@ from django.views.generic import DetailView, ListView, TemplateView from django.views.generic.base import * from django.shortcuts import get_object_or_404 -from organization.magazine.models import Article, Topic ,Brief +from organization.magazine.models import Article, Topic, Brief +from organization.team.models import Department + from organization.core.views import SlugMixin from django.template.defaultfilters import slugify @@ -16,8 +19,22 @@ class ArticleDetailView(SlugMixin, DetailView): template_name='magazine/article/article_detail.html' context_object_name = 'article' + def get(self, request, *args, **kwargs): + previous_page_url = request.META['HTTP_REFERER'] + previous_page_slug = request.META['HTTP_REFERER'].rsplit("/")[-2] + if previous_page_slug: + #find parents page + parsed_url = urlparse(previous_page_url) + self.department_parent = Department.objects.filter(slug=parsed_url.path[1:][:-1]) + self.topic_parent = Topic.objects.filter(slug=previous_page_slug) + return super(ArticleDetailView, self).get(request, *args, **kwargs) + def get_context_data(self, **kwargs): context = super(ArticleDetailView, self).get_context_data(**kwargs) + if self.topic_parent: + context['topic_parent'] = self.topic_parent.all()[0] + if self.department_parent: + context['department_parent'] = self.department_parent.all()[0] return context diff --git a/app/organization/team/models.py b/app/organization/team/models.py index 385b7e38..00bc198e 100644 --- a/app/organization/team/models.py +++ b/app/organization/team/models.py @@ -23,6 +23,7 @@ from mezzanine.galleries.models import BaseGallery from organization.media.models import Photo from organization.core.models import * +from organization.magazine.models import Article from django_countries.fields import CountryField # from .nationalities.fields import NationalityField @@ -84,6 +85,7 @@ class Department(Page, SubTitle, RichText, Photo): organization = models.ForeignKey('Organization', verbose_name=_('organization')) url = models.URLField(_('URL'), max_length=512, blank=True) weaving_css_class = models.CharField(_('weaving CSS class'), max_length=64, blank=True) + articles_related = models.ManyToManyField(Article, verbose_name=_('Related articles'), blank=True) class Meta: verbose_name = _('department') diff --git a/app/templates/magazine/article/article_detail.html b/app/templates/magazine/article/article_detail.html index d4d5e442..d3741c59 100644 --- a/app/templates/magazine/article/article_detail.html +++ b/app/templates/magazine/article/article_detail.html @@ -18,7 +18,14 @@ {% block breadcrumb_menu %} {{ block.super }} -
  • {{ article.title }}
  • + {% if topic_parent %} + + {% endif %} + {% if department_parent %} + + {% endif %} + + {% endblock %} {% block page_title %} diff --git a/app/templates/pages/department.html b/app/templates/pages/department.html index fdf679dd..205df53e 100644 --- a/app/templates/pages/department.html +++ b/app/templates/pages/department.html @@ -32,7 +32,6 @@ {% endblock %} {% block page_content %} - {% if page.department.sub_title %} {% editable page.department.sub_title %}
    @@ -84,6 +83,14 @@ {% endif %} {% endif %} + {% if page.department.articles_related.all %} +

    {% trans "Also discover" %}

    + {% for article in page.department.articles_related.all %} + {% include 'magazine/article/includes/article_card.html' %} + {% endfor %} + {% endif %} + + {% if page.department.pageblock_set.all %}
    -- 2.39.5