From f334f1a61477e34a9a96732f2a839faba927ca28 Mon Sep 17 00:00:00 2001 From: Emilie Date: Tue, 14 Feb 2017 18:12:57 +0100 Subject: [PATCH] [Person] : separate related objects --- app/organization/network/views.py | 20 +++++++------------- app/templates/network/person_detail.html | 20 ++++++++++++++++---- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/app/organization/network/views.py b/app/organization/network/views.py index 4a77459d..9e6ca5e6 100644 --- a/app/organization/network/views.py +++ b/app/organization/network/views.py @@ -51,16 +51,15 @@ class PersonDetailView(SlugMixin, DetailView): def get_context_data(self, **kwargs): context = super(PersonDetailView, self).get_context_data(**kwargs) - + context["related"] = {} # Person events : this type is separated from the other because # this is not managed by list of person by person in inlines directly - events = self.object.events.all() - events = (item.event for item in events) - + person_events = self.object.events.all() + events = [item.event for item in person_events] + context["related"]["event"] = events # All other related models person_list_block_inlines = self.object.person_list_block_inlines.all() related_instances = [] - # for each person list to which the person belongs to... for person_list_block_inline in person_list_block_inlines: related_objects = person_list_block_inline.person_list_block._meta.get_all_related_objects() @@ -77,15 +76,10 @@ class PersonDetailView(SlugMixin, DetailView): instance = getattr(related_inline, field.name) # get only article, custom page etc... if not isinstance(instance, person_list_block_inline.person_list_block.__class__) : #and not isinstance(person_list_block_inline.person_list_block.__class__): - related_instances.append(instance) - - # appends events - related_instances += events - - # sort by date - related_instances.sort(key=lambda x: x.created) + if not instance._meta.model_name in context["related"]: + context["related"][instance._meta.model_name] = [] + context["related"][instance._meta.model_name].append(instance) - context["related_content"] = related_instances context["person_email"] = self.object.email if self.object.email else self.object.slug.replace('-', '.')+" (at) ircam.fr" return context diff --git a/app/templates/network/person_detail.html b/app/templates/network/person_detail.html index 13f0ba3c..77b7ceb9 100644 --- a/app/templates/network/person_detail.html +++ b/app/templates/network/person_detail.html @@ -59,6 +59,22 @@ {% endif %} {% endwith %} + +

{% trans 'Related Events' %}

+ {% for event in related.event %} + {{ event }}
+ {% endfor %} + +

{% trans 'Related Articles' %}

+ {% for article in related.article %} + {{ article }}
+ {% endfor %} + +

{% trans 'Related Pages' %}

+ {% for custompage in related.custompage %} + {{ custompage }}
+ {% endfor %} + {% endblock %} {% block page_sidebar %} @@ -81,7 +97,3 @@ {% endif %} {% endwith %} {% endblock %} - -{% block page_related_content %} - {% include "core/inc/related_content_dynamic.html" with concrete_objects=related_content %} -{% endblock %} -- 2.39.5