--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-05 11:00
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-featured', '0002_remove_featured_description'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='featured',
+ name='briefs',
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-05 14:38
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-magazine', '0009_brief_sort_order'),
+ ('organization-featured', '0003_remove_featured_briefs'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='featured',
+ name='briefs',
+ field=models.ManyToManyField(blank=True, related_name='featured', to='organization-magazine.Brief', verbose_name='briefs'),
+ ),
+ ]
from django.shortcuts import render
from django.views.generic import DetailView, ListView, TemplateView
from organization.core.views import SlugMixin
+from organization.magazine.models import Brief
class HomeView(SlugMixin, TemplateView):
template_name = 'index.html'
+ briefs = Brief.objects.all() # with .published, order by isn't working anymore
+
def get_context_data(self, **kwargs):
context = super(HomeView, self).get_context_data(**kwargs)
+ context['briefs'] = self.briefs
return context
+
+ def get_queryset(self, **kwargs):
+ return self.model.objects.published()
from copy import deepcopy
from mezzanine.core.admin import DisplayableAdmin
from mezzanine.pages.admin import PageAdmin
+from orderable.admin import OrderableAdmin, OrderableTabularInline
from organization.magazine.models import Article, Brief ,Topic
fieldsets = deepcopy(ArticleAdmin.fieldsets)
exclude = ('related_posts',)
-class BriefAdmin(admin.ModelAdmin):
+class BriefAdmin(OrderableTabularInline):
model = Brief
-class BriefAdminDisplayable(DisplayableAdmin):
+class BriefAdminDisplayable(OrderableAdmin):
+ list_display = ('title', 'local_content', 'sort_order_display',)
fieldsets = deepcopy(BriefAdmin.fieldsets)
+
admin.site.register(Article, ArticleAdminDisplayable)
admin.site.register(Brief, BriefAdminDisplayable)
admin.site.register(Topic, PageAdmin)
+++ /dev/null
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9.7 on 2016-08-04 13:47
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('organization-magazine', '0008_topic_content'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='article',
- name='parent_topic',
- field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='topic_content_type', to='organization-magazine.Topic', verbose_name='topic'),
- preserve_default=False,
- ),
- ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-05 13:48
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-magazine', '0008_topic_content'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='brief',
+ name='sort_order',
+ field=models.IntegerField(blank=True, db_index=True, default=1),
+ preserve_default=False,
+ ),
+ ]
from mezzanine.core.models import RichText, Displayable, Slugged
from mezzanine.pages.models import Page
from mezzanine.blog.models import BlogPost
+from orderable.models import Orderable
from organization.core.models import Named, Description
from organization.media.models import Photo
verbose_name = _('article')
-class Brief(Displayable, RichText):
+class Brief(Displayable, RichText, Orderable):
text_button = models.CharField(blank=True, max_length=150, null=False, verbose_name='text button')
local_content = models.URLField(blank=False, max_length=1000, null=False, verbose_name='local content')
class Meta:
verbose_name = _('brief')
+ ordering = ['sort_order']
class Topic(Page, RichText):
"""Topic for magazine menu"""
from modeltranslation.translator import TranslationOptions
from mezzanine.core.translation import (TranslatedSlugged,
TranslatedDisplayable,
- TranslatedRichText)
-from organization.magazine.models import Article, Brief ,Topic
+ TranslatedRichText)
+from organization.magazine.models import Article, Topic, Brief
@register(Article)
class ArticleTranslationOptions(TranslationOptions):
fields = ('text_button', 'local_content')
-
@register(Topic)
class TopicTranslationOptions(TranslationOptions):
from django.views.generic.base import *
from django.shortcuts import get_object_or_404
-from organization.magazine.models import Article, Brief, Topic
+from organization.magazine.models import Article, Topic ,Brief
from organization.core.views import SlugMixin
from django.template.defaultfilters import slugify
context = super(BriefDetailView, self).get_context_data(**kwargs)
return context
+class BriefListView(SlugMixin, ListView):
+
+ model = Brief
+ template_name='magazine/brief/brief_list.html'
+ context_object_name = 'brief'
+
+ def get_context_data(self, **kwargs):
+ context = super(BriefListView, self).get_context_data(**kwargs)
+ return context
+
class TopicDetailView(SlugMixin, DetailView):
'djangobower',
"meta",
"mezzanine_agenda",
+ "orderable",
"organization.core",
"organization.team",
"organization.festival",
{% block main %}
{% page_menu "pages/menus/magazine.html" %}
+{% include "magazine/brief/brief_list.html" %}
<ul>
<li><a href="#" title="{% trans "News Headlines" %}">{% trans "News Headlines" %}</a></li>
--- /dev/null
+{% for brief in briefs %}
+ <h2>{{ brief.title }}</h2>
+ <p>{{ brief.description|truncatechars:100 }}</p>
+ <a href="{{ brief.local_content }}" title="brief.title">{{ brief.text_button }}</a>
+{% endfor %}
django-debug-toolbar
django-extensions
django-countries
+django-orderable