@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
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
--- /dev/null
+{% 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 %}
+++ /dev/null
-{% 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 %}
{% 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>
--- /dev/null
+{% 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 %}
<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' %}
<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 %}
{% 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>
<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 %}
{% 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 %}
+++ /dev/null
-{% 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>
+++ /dev/null
-{% 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 %}
+++ /dev/null
-{% 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 %}
--- /dev/null
+{% 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>
--- /dev/null
+{% 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 %}
--- /dev/null
+{% 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 %}
<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 %}
<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>