from mezzanine.core.views import direct_to_template
from mezzanine.conf import settings
-from organization.core.views import HomeView
-
-
urlpatterns = [
- url("^$", HomeView.as_view(), name="home"),
]
from django.views.generic.base import View
from django.views.generic import DetailView, ListView, TemplateView
-
class SlugMixin(object):
def get_object(self):
objects = self.model.objects.all()
return get_object_or_404(objects, slug=self.kwargs['slug'])
-
-
-class HomeView(TemplateView):
-
- template_name = 'index.html'
-
- def get_context_data(self, **kwargs):
- context = super(HomeView, self).get_context_data(**kwargs)
- return context
featured_list.append(brief)
for video in featured.videos.all():
featured_list.append(video)
- # for artist in featured.artists.all():
- # featured_list.append(artist)
for playlist in featured.playlists.all():
featured_list.append(playlist)
shuffle(featured_list)
from mezzanine.core.views import direct_to_template
from mezzanine.conf import settings
-
+from organization.featured.views import HomeView
urlpatterns = [
-
+ url("^$", HomeView.as_view(), name="home"),
]
from django.shortcuts import render
+from django.views.generic import DetailView, ListView, TemplateView
+from organization.magazine.models import Topic
+from organization.core.views import SlugMixin
+
+class HomeView(SlugMixin, TemplateView):
+
+ template_name = 'index.html'
+ topics = Topic.objects.all()
+ def get_context_data(self, **kwargs):
+ context = super(HomeView, self).get_context_data(**kwargs)
+ context['topics'] = self.topics
+ return context
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-28 15:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-magazine', '0006_auto_20160728_1632'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='topic',
+ name='articles',
+ field=models.ManyToManyField(blank=True, to='organization-magazine.Article', verbose_name='articles'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-29 10:33
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('sites', '0002_alter_domain_unique'),
+ ('organization-magazine', '0007_topic_articles'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='topic',
+ name='name',
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='_meta_title',
+ field=models.CharField(blank=True, help_text='Optional title to be used in the HTML title tag. If left blank, the main title field will be used.', max_length=500, null=True, verbose_name='Title'),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='created',
+ field=models.DateTimeField(editable=False, null=True),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='expiry_date',
+ field=models.DateTimeField(blank=True, help_text="With Published chosen, won't be shown after this time", null=True, verbose_name='Expires on'),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='gen_description',
+ field=models.BooleanField(default=True, help_text='If checked, the description will be automatically generated from content. Uncheck if you want to manually set a custom description.', verbose_name='Generate description'),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='in_sitemap',
+ field=models.BooleanField(default=True, verbose_name='Show in sitemap'),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='keywords_string',
+ field=models.CharField(blank=True, editable=False, max_length=500),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='publish_date',
+ field=models.DateTimeField(blank=True, db_index=True, help_text="With Published chosen, won't be shown until this time", null=True, verbose_name='Published from'),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='short_url',
+ field=models.URLField(blank=True, null=True),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='site',
+ field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='slug',
+ field=models.CharField(blank=True, help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL'),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='status',
+ field=models.IntegerField(choices=[(1, 'Draft'), (2, 'Published')], default=2, help_text='With Draft chosen, will only be shown for admin users on the site.', verbose_name='Status'),
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='title',
+ field=models.CharField(default='title default', max_length=500, verbose_name='Title'),
+ preserve_default=False,
+ ),
+ migrations.AddField(
+ model_name='topic',
+ name='updated',
+ field=models.DateTimeField(editable=False, null=True),
+ ),
+ migrations.AlterField(
+ model_name='topic',
+ name='description',
+ field=models.TextField(blank=True, verbose_name='Description'),
+ ),
+ ]
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')
+ model_name = _('article')
def get_absolute_url(self):
return reverse("magazine-article-detail", kwargs={"slug": self.slug})
verbose_name = _('brief')
-class Topic(Named, Description):
+class Topic(Displayable):
"""Topic for magazine menu"""
+ articles = models.ManyToManyField(Article, verbose_name=_('articles'), blank=True)
+
class Meta:
verbose_name = _('topic')
urlpatterns = [
url("^article/$", ArticleListView.as_view(), name="magazine-article-list"),
url("^article/detail/(?P<slug>.*)%s$" % _slash, ArticleDetailView.as_view(), name="magazine-article-detail"),
+ url("^topic/detail/(?P<slug>.*)%s$" % _slash, TopicDetailView.as_view(), name='topic-detail'),
]
from django.views.generic.base import *
from django.shortcuts import get_object_or_404
-from organization.magazine.models import Article, Brief
+from organization.magazine.models import Article, Brief, Topic
from organization.core.views import SlugMixin
+from django.template.defaultfilters import slugify
class ArticleDetailView(SlugMixin, DetailView):
def get_context_data(self, **kwargs):
context = super(BriefDetailView, self).get_context_data(**kwargs)
return context
+
+
+class TopicDetailView(SlugMixin, DetailView):
+
+ model = Topic
+ template_name='magazine/topic/topic_detail.html'
+ context_object_name = 'topic'
+
+ def get_context_data(self, **kwargs):
+ context = super(TopicDetailView, self).get_context_data(**kwargs)
+ return context
urlpatterns = [
url("^", include('organization.core.urls')),
+ url("^", include('organization.featured.urls')),
url("^", include('organization.festival.urls')),
url("^", include('organization.magazine.urls')),
url("^", include('organization.media.urls')),
{% block main %}
+<ul>
+ <li><a href="#" title="{% trans "News Headlines" %}">{% trans "News Headlines" %}</a></li>
+ <li><a href="#" title="{% trans "Magazine" %}">{% trans "Magazine" %}</a></li>
+ <li><a href="#" title="{% trans "Brief" %}">{% trans "Brief" %}</a></li>
+ <li><a href="#" title="{% trans "Media" %}">{% trans "Media" %}</a></li>
+</ul>
+{% if topics %}
+<div>
+ {% for topic in topics %}
+ {% include "magazine/topic/inc_list_topic.html" %}
+ {% endfor %}
+</div>
+{% endif %}
+
<div class="last__media">
- <h2 class="section__title">{% trans "Featured" %}</h2>
<div class="msry__container">
<div class="msry__sizer"></div>
+ {% featured as featured_list %}
{% for item in featured_list %}
<div class="last__media__entry msry__item">
{% if item|get_class == 'Brief' %}
{% endwith %}
{% elif item|get_class == 'Article' %}
{% with item as article %}
- {% include "magazine/article/includes/post_card.html" %}
+ {% include "magazine/article/includes/article_card.html" %}
{% endwith %}
{% elif item|get_class == 'Video' %}
{% with item as video %}
--- /dev/null
+{% load i18n pages_tags mezzanine_tags %}
+<div>
+ <a href="{% url "topic-detail" topic.slug %}" title="{{ topic.name }}" >
+ <h3>{{ topic.title }}</h3>
+ <p>{{ topic.description|slice:":255" }}</p>
+ </a>
+</div>
--- /dev/null
+{% extends "base.html" %}
+{% load i18n mezzanine_tags blog_tags keyword_tags disqus_tags %}
+
+{% block meta_title %}{% if page %}{{ page.meta_title }}{% else %}{% trans "Articles" %}{% endif %}{% endblock %}
+
+{% block meta_keywords %}{% metablock %}
+{% keywords_for page as keywords %}
+{% for keyword in keywords %}
+ {% if not forloop.first %}, {% endif %}
+ {{ keyword }}
+{% endfor %}
+{% endmetablock %}{% endblock %}
+
+{% block meta_description %}{% metablock %}
+{{ page.description }}
+{% endmetablock %}{% endblock %}
+
+{% block title %}
+{% if page %}
+{% editable page.title %}{{ page.title }}{% endeditable %}
+{% else %}
+{% trans "Articles" %}
+{% endif %}
+{% endblock %}
+
+{% block breadcrumb_menu %}
+{{ block.super }}
+{% if tag or category or year or month or author %}
+<li>{% spaceless %}
+{% if tag %}
+ {% trans "Tag:" %} {{ tag }}
+{% else %}{% if category %}
+ {% trans "Category:" %} {{ category }}
+{% else %}{% if year or month %}
+ {% if month %}{{ month }}, {% endif %}{{ year }}
+{% else %}{% if author %}
+ {% trans "Author:" %} {{ author.get_full_name|default:author.username }}
+{% endif %}{% endif %}{% endif %}{% endif %}
+{% endspaceless %}
+</li>
+{% endif %}
+{% endblock %}
+
+{% block main %}
+<div class="msry__container">
+ <div class="msry__sizer"></div>
+
+ <h1>{{ topic.title }}</h1>
+ <p>{{ topic.description }}</p>
+
+ {% for article in topic.articles.all %}
+ {% include 'magazine/article/includes/article_card.html' %}
+ {% endfor %}
+</div>
+
+{% if settings.COMMENTS_DISQUS_SHORTNAME %}
+{% include "generic/includes/disqus_counts.html" %}
+{% endif %}
+
+{% endblock %}
+
+{% block right_panel %}
+{% include "blog/includes/filter_panel.html" %}
+{% endblock %}