From 286bffe01de467af027120fc8696fc0e60aad5a0 Mon Sep 17 00:00:00 2001 From: Emilie Date: Fri, 5 Aug 2016 18:37:33 +0200 Subject: [PATCH] Orderable Briefs on Home --- .../migrations/0003_remove_featured_briefs.py | 19 +++++++++++++++++ .../migrations/0004_featured_briefs.py | 21 +++++++++++++++++++ app/organization/featured/views.py | 7 +++++++ app/organization/magazine/admin.py | 7 +++++-- ...rent_topic.py => 0009_brief_sort_order.py} | 9 ++++---- app/organization/magazine/models.py | 4 +++- app/organization/magazine/translation.py | 5 ++--- app/organization/magazine/views.py | 12 ++++++++++- app/settings.py | 1 + app/templates/index.html | 1 + app/templates/magazine/brief/brief_list.html | 5 +++++ requirements.txt | 1 + 12 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 app/organization/featured/migrations/0003_remove_featured_briefs.py create mode 100644 app/organization/featured/migrations/0004_featured_briefs.py rename app/organization/magazine/migrations/{0009_article_parent_topic.py => 0009_brief_sort_order.py} (50%) create mode 100644 app/templates/magazine/brief/brief_list.html diff --git a/app/organization/featured/migrations/0003_remove_featured_briefs.py b/app/organization/featured/migrations/0003_remove_featured_briefs.py new file mode 100644 index 00000000..cd492085 --- /dev/null +++ b/app/organization/featured/migrations/0003_remove_featured_briefs.py @@ -0,0 +1,19 @@ +# -*- 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', + ), + ] diff --git a/app/organization/featured/migrations/0004_featured_briefs.py b/app/organization/featured/migrations/0004_featured_briefs.py new file mode 100644 index 00000000..19a7e309 --- /dev/null +++ b/app/organization/featured/migrations/0004_featured_briefs.py @@ -0,0 +1,21 @@ +# -*- 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'), + ), + ] diff --git a/app/organization/featured/views.py b/app/organization/featured/views.py index 48863eb2..d77ed90e 100644 --- a/app/organization/featured/views.py +++ b/app/organization/featured/views.py @@ -1,10 +1,17 @@ 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() diff --git a/app/organization/magazine/admin.py b/app/organization/magazine/admin.py index 9b98f011..8556044b 100644 --- a/app/organization/magazine/admin.py +++ b/app/organization/magazine/admin.py @@ -3,6 +3,7 @@ from django import forms 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 @@ -14,14 +15,16 @@ class ArticleAdminDisplayable(DisplayableAdmin): 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) diff --git a/app/organization/magazine/migrations/0009_article_parent_topic.py b/app/organization/magazine/migrations/0009_brief_sort_order.py similarity index 50% rename from app/organization/magazine/migrations/0009_article_parent_topic.py rename to app/organization/magazine/migrations/0009_brief_sort_order.py index de2cba59..8258483b 100644 --- a/app/organization/magazine/migrations/0009_article_parent_topic.py +++ b/app/organization/magazine/migrations/0009_brief_sort_order.py @@ -1,9 +1,8 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-08-04 13:47 +# Generated by Django 1.9.7 on 2016-08-05 13:48 from __future__ import unicode_literals from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): @@ -14,9 +13,9 @@ class Migration(migrations.Migration): 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'), + model_name='brief', + name='sort_order', + field=models.IntegerField(blank=True, db_index=True, default=1), preserve_default=False, ), ] diff --git a/app/organization/magazine/models.py b/app/organization/magazine/models.py index 6278452f..63a11f70 100644 --- a/app/organization/magazine/models.py +++ b/app/organization/magazine/models.py @@ -6,6 +6,7 @@ from django.core.urlresolvers import reverse, reverse_lazy 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 @@ -24,7 +25,7 @@ class Article(BlogPost, 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') @@ -34,6 +35,7 @@ class Brief(Displayable, RichText): class Meta: verbose_name = _('brief') + ordering = ['sort_order'] class Topic(Page, RichText): """Topic for magazine menu""" diff --git a/app/organization/magazine/translation.py b/app/organization/magazine/translation.py index ba8e66be..42d08c94 100644 --- a/app/organization/magazine/translation.py +++ b/app/organization/magazine/translation.py @@ -3,8 +3,8 @@ from mezzanine.pages.models import Page, RichText 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): @@ -17,7 +17,6 @@ class BriefTranslationOptions(TranslationOptions): fields = ('text_button', 'local_content') - @register(Topic) class TopicTranslationOptions(TranslationOptions): diff --git a/app/organization/magazine/views.py b/app/organization/magazine/views.py index 50f7cc73..d1699098 100644 --- a/app/organization/magazine/views.py +++ b/app/organization/magazine/views.py @@ -5,7 +5,7 @@ from django.views.generic import DetailView, ListView, TemplateView 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 @@ -42,6 +42,16 @@ class BriefDetailView(SlugMixin, DetailView): 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): diff --git a/app/settings.py b/app/settings.py index 784fb7d4..fa49164e 100644 --- a/app/settings.py +++ b/app/settings.py @@ -221,6 +221,7 @@ INSTALLED_APPS = [ 'djangobower', "meta", "mezzanine_agenda", + "orderable", "organization.core", "organization.team", "organization.festival", diff --git a/app/templates/index.html b/app/templates/index.html index 7d1b74fb..56fedf4d 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -11,6 +11,7 @@ {% block main %} {% page_menu "pages/menus/magazine.html" %} +{% include "magazine/brief/brief_list.html" %}