]> git.parisson.com Git - mezzo.git/commitdiff
Media : get related FK dynamically, need to set dynamically context object name
authorEmilie <zawadzki@ircam.fr>
Wed, 2 Nov 2016 18:09:24 +0000 (19:09 +0100)
committerEmilie <zawadzki@ircam.fr>
Wed, 2 Nov 2016 18:09:24 +0000 (19:09 +0100)
19 files changed:
app/organization/core/templatetags/organization_tags.py
app/organization/media/views.py
app/templates/agenda/event/includes/event_card.html [new file with mode: 0644]
app/templates/agenda/includes/event_card.html [deleted file]
app/templates/core/inc/related_content.html
app/templates/core/inc/related_content_media.html [new file with mode: 0644]
app/templates/festival/artist_detail.html
app/templates/festival/video_detail.html
app/templates/home/inc/body.html
app/templates/media/playlist_detail.html
app/templates/pages/custompage.html
app/templates/pages/includes/page_box.html [deleted file]
app/templates/pages/includes/page_card.html [deleted file]
app/templates/pages/includes/page_search.html [deleted file]
app/templates/pages/page/includes/page_box.html [new file with mode: 0644]
app/templates/pages/page/includes/page_card.html [new file with mode: 0644]
app/templates/pages/page/includes/page_search.html [new file with mode: 0644]
app/templates/pages/richtextpage.html
app/templates/pages/teampage.html

index 683e37e9fab3df05aad33d2a2149815c33069d2c..0fe1784f3bbf2e80c498a4e65d55741ecaa4b4af 100644 (file)
@@ -119,3 +119,19 @@ def sub_topics(topic):
 @register.filter
 def classname(obj):
     return obj.__class__.__name__
+
+
+@register.filter
+def classname(obj):
+    return obj.__class__.__name__
+
+@register.filter
+def app_label_short(obj):
+    app_label = obj._meta.app_config.label
+    if app_label.find("_") > 0:
+        app_label_short = app_label.split("_")[1]
+    elif app_label.find("-") > 0:
+        app_label_short = app_label.split("-")[1]
+    else :
+        app_label_short = app_label
+    return app_label_short
index 95358fbad4946d5c590db5016489357425d31acc..88626c7f798556b877f2e074ed0ae2c13f19b4e7 100644 (file)
@@ -12,18 +12,28 @@ class PlaylistDetailView(SlugMixin, DetailView):
     model = Playlist
     template_name='media/playlist_detail.html'
     context_object_name = 'playlist'
-    
     def get_context_data(self, **kwargs):
-        self.related_objects = []
         context = super(PlaylistDetailView, self).get_context_data(**kwargs)
+        self.related_objects = []
+        self.concrete_objects = []
+
         related_model = PlaylistRelated._meta.get_fields()
         related_playlist = self.object.playlist_related.all()
+        # get dynamically related objects like articleplaylist, projectplaylist, eventplaylist etc....
         for rm in related_model:
             for rp in related_playlist:
                 if hasattr(rp, rm.name):
                     self.related_objects.append(getattr(rp, rm.name))
 
-        context['related_objects'] = self.related_objects
+        # get dynamically related instance of related objects. Example: articleplaylist => article
+        for ro in self.related_objects:
+            if not isinstance(ro, int) and ro != self.object:
+                for c_field in ro._meta.get_fields():
+                    attr = getattr(ro, c_field.name)
+                    if not isinstance(attr, int) and attr != self.object and not isinstance(attr, PlaylistRelated):
+                        self.concrete_objects.append(attr)
+
+        context['concrete_objects'] = self.concrete_objects
         return context
 
 
diff --git a/app/templates/agenda/event/includes/event_card.html b/app/templates/agenda/event/includes/event_card.html
new file mode 100644 (file)
index 0000000..3aff645
--- /dev/null
@@ -0,0 +1,76 @@
+{% extends "core/inc/generic_card.html" %}
+{% load i18n pages_tags mezzanine_tags media_tags organization_tags %}
+
+{% block metatitle %}
+    {{ event.title }}
+{% endblock %}
+
+{% block title %}
+    {{ event.title }}
+{% endblock %}
+
+{% block url %}
+    {{ event.get_absolute_url }}
+{% endblock %}
+
+{% block image %}
+    {% with event.images.all|get_type:'card' as images %}
+        {% if images %}
+            <figure class="article-box__image">
+                <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-original="{{ MEDIA_URL }}{% thumbnail images.0.file 427 286 top=0.5 left=article.photo_alignment|get_photo_alignment %}" class="lazyload" />
+            </figure>
+        {% else %}
+            <figure class="article-box__image">
+                {% if event.departments.first %}
+                    {% with event.departments.first as department %}
+                        <div class="article-box__placeholder {{department.department.name|slugify}}"></div>
+                    {% endwith %}
+                {% else %}
+                    <div class="article-box__placeholder"></div>
+                {% endif %}
+            </figure>
+        {% endif %}
+    {% endwith %}
+{% endblock %}
+
+{% block tags %}
+    <div class="article-box__tags">
+        {% if event.departments.first %}
+            {% with event.departments.first as department %}
+                <div class="tag tag--small dashed dashed--small">
+                  {{ department.department.name }}
+                </div>
+            {% endwith %}
+        {% endif %}
+        {% if event.category %}
+            <div class="tag tag--small tag--category">
+                {{ event.category|truncatechars:15 }}
+            </div>
+        {% endif %}
+    </div>
+{% endblock %}
+
+{% block content %}
+    {{ event.description|richtext_filters|safe|truncatechars_html:200 }}
+{% endblock %}
+
+{% block subtitle %}
+    <strong>
+        {% include 'agenda/includes/event_date_line.html' %}
+    </strong>
+    {% if event.location %}
+         <br />{{ event.location }}
+    {% endif %}
+{% endblock %}
+
+{% block btn %}
+    {% if event.prices.all.0|floatformat != '0' and event.prices.all|length > 0 %}
+        {% for price in event.prices.all %}
+            {% if forloop.first %}
+                <div class="article-box__btn">
+                    <object><a href="{% url 'event_booking' content.content_object.slug %}" class="button button--small mr0">{% trans "Reserve" %}</a></object>
+                </div>
+            {% endif %}
+        {% endfor %}
+    {% endif %}
+{% endblock %}
diff --git a/app/templates/agenda/includes/event_card.html b/app/templates/agenda/includes/event_card.html
deleted file mode 100644 (file)
index 3aff645..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-{% extends "core/inc/generic_card.html" %}
-{% load i18n pages_tags mezzanine_tags media_tags organization_tags %}
-
-{% block metatitle %}
-    {{ event.title }}
-{% endblock %}
-
-{% block title %}
-    {{ event.title }}
-{% endblock %}
-
-{% block url %}
-    {{ event.get_absolute_url }}
-{% endblock %}
-
-{% block image %}
-    {% with event.images.all|get_type:'card' as images %}
-        {% if images %}
-            <figure class="article-box__image">
-                <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-original="{{ MEDIA_URL }}{% thumbnail images.0.file 427 286 top=0.5 left=article.photo_alignment|get_photo_alignment %}" class="lazyload" />
-            </figure>
-        {% else %}
-            <figure class="article-box__image">
-                {% if event.departments.first %}
-                    {% with event.departments.first as department %}
-                        <div class="article-box__placeholder {{department.department.name|slugify}}"></div>
-                    {% endwith %}
-                {% else %}
-                    <div class="article-box__placeholder"></div>
-                {% endif %}
-            </figure>
-        {% endif %}
-    {% endwith %}
-{% endblock %}
-
-{% block tags %}
-    <div class="article-box__tags">
-        {% if event.departments.first %}
-            {% with event.departments.first as department %}
-                <div class="tag tag--small dashed dashed--small">
-                  {{ department.department.name }}
-                </div>
-            {% endwith %}
-        {% endif %}
-        {% if event.category %}
-            <div class="tag tag--small tag--category">
-                {{ event.category|truncatechars:15 }}
-            </div>
-        {% endif %}
-    </div>
-{% endblock %}
-
-{% block content %}
-    {{ event.description|richtext_filters|safe|truncatechars_html:200 }}
-{% endblock %}
-
-{% block subtitle %}
-    <strong>
-        {% include 'agenda/includes/event_date_line.html' %}
-    </strong>
-    {% if event.location %}
-         <br />{{ event.location }}
-    {% endif %}
-{% endblock %}
-
-{% block btn %}
-    {% if event.prices.all.0|floatformat != '0' and event.prices.all|length > 0 %}
-        {% for price in event.prices.all %}
-            {% if forloop.first %}
-                <div class="article-box__btn">
-                    <object><a href="{% url 'event_booking' content.content_object.slug %}" class="button button--small mr0">{% trans "Reserve" %}</a></object>
-                </div>
-            {% endif %}
-        {% endfor %}
-    {% endif %}
-{% endblock %}
index 795c6e766d5819c1d43f39cf8d13a0e2bcf268e5..2b87edc765549d9c73c24cda076a38434baccdf6 100644 (file)
                             {% endwith %}
                         {% elif content.content_type.model == "event" %}
                             {% with content.content_object as event %}
-                                {% include "agenda/includes/event_card.html" %}
+                                {% include "agenda/event/includes/event_card.html" %}
                             {% endwith %}
                         {% elif content.content_type.model == "custompage" %}
                             {% with content.content_object as page %}
-                                {% include "pages/includes/page_card.html" %}
+                                {% include "pages/page/sincludes/page_card.html" %}
                             {% endwith %}
                         {% endif %}
                     </div>
diff --git a/app/templates/core/inc/related_content_media.html b/app/templates/core/inc/related_content_media.html
new file mode 100644 (file)
index 0000000..ffe1c69
--- /dev/null
@@ -0,0 +1,25 @@
+{% load i18n mezzanine_tags keyword_tags organization_tags pages_tags %}
+{% if concrete_objects %}
+    <hr class="mt0 mb0" />
+    <div class="white-bg pb2">
+        <div class="container">
+            <div class="row tac">
+                <div class="col-xs-12">
+                    <h2 class="dashed dashed--center mt2">{% if object.related_title.title %}{{ object.related_title.title }}{% else %}{% trans "Also discover" %}{% endif %}</h2>
+                </div>
+            </div>
+            <div class="row tac">
+                {% for concrete_object in concrete_objects %}
+                    <div class="col-lg-3 col-md-4 col-sm-4 col-xs-6">
+                        {{ concrete_object|app_label_short }}
+                        {% with app_label=concrete_object|app_label_short classname=concrete_object|classname|lower %}
+                            {% with app_label|add:"/"|add:classname|add:"/includes/"|add:classname|add:"_card.html" as template %}
+                                {% include template with classname=concrete_object %}
+                            {% endwith %}
+                        {% endwith %}
+                    </div>
+                {% endfor %}
+            </div>
+        </div>
+    </div>
+{% endif %}
index f94297b83f4272bca969d488eab8a577adbb1ebc..439ce01ba0c70fb1e6e7c360ff65f0eb326459ef 100644 (file)
@@ -28,7 +28,7 @@
 <div class="msry__container">
  <div class="msry__sizer"></div>
  {% for event in artist.events.all|no_parents %}
-    {% include 'agenda/includes/event_card.html' %}
+    {% include 'agenda/event/includes/event_card.html' %}
  {% endfor %}
  {% for video in artist.videos.all %}
     {% include 'festival/inc/video_card.html' %}
index b954cc14931cacbf1d2a33aa11f21fccc62c169d..341105ec5f67506292d5f440d9cafc28f5564df8 100644 (file)
@@ -29,7 +29,7 @@
   <div class="msry__container">
    <div class="msry__sizer"></div>
     {% with video.event as event %}
-        {% include 'agenda/includes/event_card.html' %}
+        {% include 'agenda/event/includes/event_card.html' %}
     {% for artist in video.artists.all %}
         {% include "festival/inc/artist_card.html" %}
     {% endfor %}
index bf5be2564855dba8e08cf8cf474798e6a9908e22..f5b462f71132dbce7b3d0448f58a973f0163d0fb 100644 (file)
                             {% endwith %}
                         {% elif slider.content_type.model == "event" %}
                             {% with slider.content_object as event %}
-                                {% include "agenda/includes/event_card.html" %}
+                                {% include "agenda/event/includes/event_card.html" %}
                             {% endwith %}
                         {% elif slider.content_type.model == "custompage" %}
                             {% with slider.content_object as page %}
-                                {% include "pages/includes/page_card.html" %}
+                                {% include "pages/page/includes/page_card.html" %}
                             {% endwith %}
                         {% endif %}
                     </div>
                     {% endwith %}
                 {% elif content.content_type.model == "event" %}
                     {% with content.content_object as event %}
-                        {% include "agenda/includes/event_card.html" %}
+                        {% include "agenda/event/includes/event_card.html" %}
                     {% endwith %}
                 {% elif content.content_type.model == "custompage" %}
                     {% with content.content_object as page %}
-                        {% include "pages/includes/page_card.html" %}
+                        {% include "pages/page/includes/page_card.html" %}
                     {% endwith %}
                 {% endif %}
             </div>
index 7bf636bf14103d50b4ff2c9e553e25a75dadccf0..af929c0f4edb07326225287c68c37e0a4dde8cd8 100644 (file)
     <div class="playslit-html">
         {{ playlist.content|safe }}
     </div>
-
-    {% for related_object in related_objects %}
-        {{ related_object }}
-        <br>
-    {% endfor %}
-
+    {% include "core/inc/related_content_media.html" %}
 {% endblock %}
index 2ffb0b39f1f9015a3e3796975a4ad5a58af01ba1..ae57217b1881307718a0067ac52235fec6268a29 100644 (file)
@@ -43,7 +43,7 @@
                     {% for child in childrens %}
                         {% if child.in_menus.0 %}
                           {% with child as object %}
-                            {% include "pages/includes/page_box.html" %}
+                            {% include "pages/page/includes/page_box.html" %}
                           {% endwith %}
                         {% endif %}
                     {% endfor %}
diff --git a/app/templates/pages/includes/page_box.html b/app/templates/pages/includes/page_box.html
deleted file mode 100644 (file)
index 39f4cdf..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{% load mezzanine_tags organization_tags %}
-<a href="{{ object.get_absolute_url }}" title="{{ object.title }}" class="page-box">
-    <div class="page-box__image">
-      {% with object.get_content_model.images.all|get_type:'card' as images %}
-       {% if images %}
-        <img src="{{ MEDIA_URL }}{% thumbnail images.0.file 900 400 %}" />
-       {% endif %}
-      {% endwith %}
-    </div>
-    <div class="page-box__content">
-        <div>
-            <h2 class="page-box__title">{{ object.title }}</h2>
-            <div class="page-box__subtitle">
-                {{ object.get_content_model.sub_title }}
-            </div>
-        </div>
-    </div>
-</a>
diff --git a/app/templates/pages/includes/page_card.html b/app/templates/pages/includes/page_card.html
deleted file mode 100644 (file)
index 22a5c39..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-{% extends "core/inc/generic_card.html" %}
-{% load i18n pages_tags mezzanine_tags media_tags organization_tags %}
-
-{% block metatitle %}
-    {{ page.title }}
-{% endblock %}
-
-{% block title %}
-    {{ page.title }}
-{% endblock %}
-
-{% block url %}
-    {{ page.get_absolute_url }}
-{% endblock %}
-
-{% block image %}
-    {% with page.images.all|get_type:'card' as images %}
-        {% if images %}
-            <figure class="article-box__image">
-                <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-original="{{ MEDIA_URL }}{% thumbnail images.0.file 427 286 top=0.5 left=article.photo_alignment|get_photo_alignment %}" class="lazyload" />
-            </figure>
-        {% endif %}
-    {% endwith %}
-{% endblock %}
-
-{% block content %}
-    {{ page.description|richtext_filters|safe|truncatechars_html:200 }}
-{% endblock %}
-
-{% block subtitle %}
-    {{ page.sub_title }}
-{% endblock %}
diff --git a/app/templates/pages/includes/page_search.html b/app/templates/pages/includes/page_search.html
deleted file mode 100644 (file)
index 160ee9a..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-{% extends "core/inc/search_card.html" %}
-{% load i18n mezzanine_tags organization_tags %}
-
-{% block title %}
-    {{ result.title }}
-{% endblock %}
-
-{% block icon %}files-o{% endblock %}
-
-{% block tags %}
-    {% with page.get_ascendants|last as top_level_parent %}
-        {% if top_level_parent.get_content_model.title %}
-            <div class="event-line-box__tags">
-                <div class="tag tag--small dashed">
-                    {{ top_level_parent.get_content_model.title }}
-                </div>
-            </div>
-        {% elif page.departmentpage %}
-            <div class="event-line-box__tags">
-                <div class="tag tag--small dashed">
-                    {{ page.departmentpage.title }}
-                </div>
-            </div>
-        {% elif page|classname == "Project"  %}
-            <div class="event-line-box__tags">
-                <div class="tag tag--small dashed">
-                    {{ page|classname }}
-                </div>
-            </div>
-        {% else %}
-            <div class="event-line-box__tags">
-                <div class="tag tag--small dashed dashed--gray">
-                    {% trans 'Page' %}
-                </div>
-            </div>
-        {% endif %}
-    {% endwith %}
-{% endblock %}
-
-{% block url %}
-    {{ page.get_absolute_url }}
-{% endblock %}
-
-{% block content %}
-    {% if result.description != result|stringformat:"s" %}
-        {{ result.description|truncatewords_html:200|safe }}
-    {% endif %}
-{% endblock %}
diff --git a/app/templates/pages/page/includes/page_box.html b/app/templates/pages/page/includes/page_box.html
new file mode 100644 (file)
index 0000000..39f4cdf
--- /dev/null
@@ -0,0 +1,18 @@
+{% load mezzanine_tags organization_tags %}
+<a href="{{ object.get_absolute_url }}" title="{{ object.title }}" class="page-box">
+    <div class="page-box__image">
+      {% with object.get_content_model.images.all|get_type:'card' as images %}
+       {% if images %}
+        <img src="{{ MEDIA_URL }}{% thumbnail images.0.file 900 400 %}" />
+       {% endif %}
+      {% endwith %}
+    </div>
+    <div class="page-box__content">
+        <div>
+            <h2 class="page-box__title">{{ object.title }}</h2>
+            <div class="page-box__subtitle">
+                {{ object.get_content_model.sub_title }}
+            </div>
+        </div>
+    </div>
+</a>
diff --git a/app/templates/pages/page/includes/page_card.html b/app/templates/pages/page/includes/page_card.html
new file mode 100644 (file)
index 0000000..94e426f
--- /dev/null
@@ -0,0 +1,31 @@
+{% extends "core/inc/generic_card.html" %}
+{% load i18n pages_tags mezzanine_tags media_tags organization_tags %}
+
+{% block metatitle %}
+    {{ page.title }}
+{% endblock %}
+
+{% block title %}
+    {{ page.title }}
+{% endblock %}
+
+{% block url %}
+    {{ page.get_absolute_url }}
+{% endblock %}
+{% block image %}
+    {% with page.images.all|get_type:'card' as images %}
+        {% if images %}
+            <figure class="article-box__image">
+                <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-original="{{ MEDIA_URL }}{% thumbnail images.0.file 427 286 top=0.5 left=article.photo_alignment|get_photo_alignment %}" class="lazyload" />
+            </figure>
+        {% endif %}
+    {% endwith %}
+{% endblock %}
+
+{% block content %}
+    {{ page.description|richtext_filters|safe|truncatechars_html:200 }}
+{% endblock %}
+
+{% block subtitle %}
+    {{ page.sub_title }}
+{% endblock %}
diff --git a/app/templates/pages/page/includes/page_search.html b/app/templates/pages/page/includes/page_search.html
new file mode 100644 (file)
index 0000000..160ee9a
--- /dev/null
@@ -0,0 +1,48 @@
+{% extends "core/inc/search_card.html" %}
+{% load i18n mezzanine_tags organization_tags %}
+
+{% block title %}
+    {{ result.title }}
+{% endblock %}
+
+{% block icon %}files-o{% endblock %}
+
+{% block tags %}
+    {% with page.get_ascendants|last as top_level_parent %}
+        {% if top_level_parent.get_content_model.title %}
+            <div class="event-line-box__tags">
+                <div class="tag tag--small dashed">
+                    {{ top_level_parent.get_content_model.title }}
+                </div>
+            </div>
+        {% elif page.departmentpage %}
+            <div class="event-line-box__tags">
+                <div class="tag tag--small dashed">
+                    {{ page.departmentpage.title }}
+                </div>
+            </div>
+        {% elif page|classname == "Project"  %}
+            <div class="event-line-box__tags">
+                <div class="tag tag--small dashed">
+                    {{ page|classname }}
+                </div>
+            </div>
+        {% else %}
+            <div class="event-line-box__tags">
+                <div class="tag tag--small dashed dashed--gray">
+                    {% trans 'Page' %}
+                </div>
+            </div>
+        {% endif %}
+    {% endwith %}
+{% endblock %}
+
+{% block url %}
+    {{ page.get_absolute_url }}
+{% endblock %}
+
+{% block content %}
+    {% if result.description != result|stringformat:"s" %}
+        {{ result.description|truncatewords_html:200|safe }}
+    {% endif %}
+{% endblock %}
index 51ed3dc5a3a857a304bf5cfc1ed26bbab902bf91..5f7953b1c0f9901af6abaa628324e4bf9b5db2a0 100644 (file)
@@ -18,7 +18,7 @@
 <div class="msry__container">
  <div class="msry__sizer"></div>
   {% for event in page.featured.all.0.events.all %}
-   {% include 'agenda/includes/event_card.html' %}
+   {% include 'agenda/event/includes/event_card.html' %}
   {% endfor %}
 </div>
 {% endif %}
index f262eadfb29a6b7103fe7355479d4367230e305d..3dfd6d33744a950f49661870776b1de418f35321 100644 (file)
@@ -41,7 +41,7 @@
             <div class="page__childrens">
                 {% for children in childrens %}
                     {% with children as object %}
-                        {% include "pages/includes/page_box.html" %}
+                        {% include "pages/page/includes/page_box.html" %}
                     {% endwith %}
                 {% endfor %}
             </div>