]> git.parisson.com Git - mezzo.git/commitdiff
Topic is a page and can be added to menu Magazine. New template for topic card.
authorEmilie <zawadzki@ircam.fr>
Thu, 4 Aug 2016 15:40:06 +0000 (17:40 +0200)
committerEmilie <zawadzki@ircam.fr>
Thu, 4 Aug 2016 15:40:06 +0000 (17:40 +0200)
18 files changed:
app/local_settings.py
app/migrations/pages/0003_auto_20160804_1451.py [new file with mode: 0644]
app/migrations/pages/0004_auto_20160804_1547.py [new file with mode: 0644]
app/organization/featured/views.py
app/organization/magazine/admin.py
app/organization/magazine/migrations/0001_initial.py
app/organization/magazine/migrations/0007_topic.py [new file with mode: 0644]
app/organization/magazine/migrations/0007_topic_articles.py [deleted file]
app/organization/magazine/migrations/0008_auto_20160729_1233.py [deleted file]
app/organization/magazine/migrations/0008_topic_content.py [new file with mode: 0644]
app/organization/magazine/migrations/0009_article_parent_topic.py [new file with mode: 0644]
app/organization/magazine/models.py
app/organization/magazine/translation.py
app/settings.py
app/templates/core/inc/home_shutter_card.html [new file with mode: 0644]
app/templates/index.html
app/templates/pages/menus/admin.html
app/templates/pages/menus/magazine.html [new file with mode: 0644]

index 54d3e6bfb63eb528bd78510e8027184142e74e8f..bed65313a13e01512cc3b7f565a3f1430ad7ccae 100644 (file)
@@ -72,7 +72,7 @@ ADMIN_MENU_ORDER = (
     (_('Pages'), ('pages.Page', 'organization-featured.Featured',)),
     (_('Media'), ('organization-media.Video', 'organization-media.VideoCategory', 'organization-media.Audio', 'organization-media.Playlist',  'organization-media.Photo', (_('Media Library'), 'fb_browse'),)),
     (_('Events'), ('mezzanine_agenda.Event', 'mezzanine_agenda.EventLocation', 'mezzanine_agenda.EventCategory', 'mezzanine_agenda.EventPrice',)),
-    (_('Magazine'), ('organization-magazine.Article', 'organization-magazine.Brief', 'organization-magazine.Topic')),
+    (_('Magazine'), ('organization-magazine.Article', 'organization-magazine.Brief',)),
     (_('Organization'), ('organization-team.Organization', 'organization-team.Department', 'organization-team.Team', 'organization-team.Person', 'organization-team.Activity', 'organization-team.OrganizationType',)),
     (_('Projects'), ('organization-project.Project',)),
     (_('Festival'), ('organization-festival.Artist',)),
diff --git a/app/migrations/pages/0003_auto_20160804_1451.py b/app/migrations/pages/0003_auto_20160804_1451.py
new file mode 100644 (file)
index 0000000..957dcb1
--- /dev/null
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-04 12:51
+from __future__ import unicode_literals
+
+from django.db import migrations
+import mezzanine.pages.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('pages', '0002_auto_20160725_0143'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='page',
+            name='in_menus',
+            field=mezzanine.pages.fields.MenusField(blank=True, choices=[(1, 'Action'), (2, 'Departement'), (5, 'Magazine'), (3, 'Footer vertical'), (4, 'Footer horizontal')], max_length=100, null=True, verbose_name='Show in menus'),
+        ),
+    ]
diff --git a/app/migrations/pages/0004_auto_20160804_1547.py b/app/migrations/pages/0004_auto_20160804_1547.py
new file mode 100644 (file)
index 0000000..aff97a3
--- /dev/null
@@ -0,0 +1,21 @@
+# -*- 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
+import mezzanine.pages.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('pages', '0003_auto_20160804_1451'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='page',
+            name='in_menus',
+            field=mezzanine.pages.fields.MenusField(blank=True, choices=[(1, 'Action'), (2, 'Departement'), (3, 'Footer vertical'), (4, 'Footer horizontal'), (5, 'Magazine')], max_length=100, null=True, verbose_name='Show in menus'),
+        ),
+    ]
index 75e1f2dbdd11037a2f4be284d5c7a4eaffadfa30..48863eb2ea7d5c7dd997c374c7b7239e1db3bc1e 100644 (file)
@@ -1,13 +1,10 @@
 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
index dabf44a8e6c343f800df8e8c7739f0710f53b2a7..9b98f0111cfc26cfbb1d22c647a491e05bb8561e 100644 (file)
@@ -2,7 +2,8 @@ from django.contrib import admin
 from django import forms
 from copy import deepcopy
 from mezzanine.core.admin import DisplayableAdmin
-from organization.magazine.models import Article, Brief, Topic
+from mezzanine.pages.admin import PageAdmin
+from organization.magazine.models import Article, Brief ,Topic
 
 
 class ArticleAdmin(admin.ModelAdmin):
@@ -17,13 +18,10 @@ class BriefAdmin(admin.ModelAdmin):
 
     model = Brief
 
-
 class BriefAdminDisplayable(DisplayableAdmin):
 
     fieldsets = deepcopy(BriefAdmin.fieldsets)
 
-
-
 admin.site.register(Article, ArticleAdminDisplayable)
 admin.site.register(Brief, BriefAdminDisplayable)
-admin.site.register(Topic)
+admin.site.register(Topic, PageAdmin)
index 76757cd3197f9c46fe856dd4e02a55dac6ec9252..7674365071b34eeeb84d4579522c23b148eae34c 100755 (executable)
@@ -71,15 +71,4 @@ class Migration(migrations.Migration):
                 'verbose_name': 'category',
             },
         ),
-        migrations.CreateModel(
-            name='Topic',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('name', models.CharField(max_length=512, verbose_name='name')),
-                ('description', models.TextField(blank=True, verbose_name='description')),
-            ],
-            options={
-                'verbose_name': 'topic',
-            },
-        ),
     ]
diff --git a/app/organization/magazine/migrations/0007_topic.py b/app/organization/magazine/migrations/0007_topic.py
new file mode 100644 (file)
index 0000000..68927fe
--- /dev/null
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-04 09:49
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('pages', '0002_auto_20160725_0143'),
+        ('organization-magazine', '0006_auto_20160728_1632'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Topic',
+            fields=[
+                ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pages.Page')),
+                ('articles', models.ManyToManyField(blank=True, to='organization-magazine.Article', verbose_name='articles')),
+            ],
+            options={
+                'verbose_name': 'topic',
+                'ordering': ('_order',),
+            },
+            bases=('pages.page',),
+        ),
+    ]
diff --git a/app/organization/magazine/migrations/0007_topic_articles.py b/app/organization/magazine/migrations/0007_topic_articles.py
deleted file mode 100755 (executable)
index 38e0571..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- 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'),
-        ),
-    ]
diff --git a/app/organization/magazine/migrations/0008_auto_20160729_1233.py b/app/organization/magazine/migrations/0008_auto_20160729_1233.py
deleted file mode 100644 (file)
index b4ca356..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# -*- 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'),
-        ),
-    ]
diff --git a/app/organization/magazine/migrations/0008_topic_content.py b/app/organization/magazine/migrations/0008_topic_content.py
new file mode 100644 (file)
index 0000000..c18ee88
--- /dev/null
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-04 12:51
+from __future__ import unicode_literals
+
+from django.db import migrations
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('organization-magazine', '0007_topic'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='topic',
+            name='content',
+            field=mezzanine.core.fields.RichTextField(default='', verbose_name='Content'),
+            preserve_default=False,
+        ),
+    ]
diff --git a/app/organization/magazine/migrations/0009_article_parent_topic.py b/app/organization/magazine/migrations/0009_article_parent_topic.py
new file mode 100644 (file)
index 0000000..de2cba5
--- /dev/null
@@ -0,0 +1,22 @@
+# -*- 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,
+        ),
+    ]
index e2d2ce1acbf0a94544dd10eee4059a6e5caf7440..6278452f7c717e0cfc3d6a105f98bba1d8501edd 100644 (file)
@@ -4,15 +4,18 @@ from django.db import models
 from django.utils.translation import ugettext_lazy as _
 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 organization.core.models import Named, Description
 from organization.media.models import Photo
 
+
 class Article(BlogPost, Photo):
 
     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')
     def get_absolute_url(self):
         return reverse("magazine-article-detail", kwargs={"slug": self.slug})
@@ -32,8 +35,7 @@ class Brief(Displayable, RichText):
     class Meta:
         verbose_name = _('brief')
 
-
-class Topic(Displayable):
+class Topic(Page, RichText):
     """Topic for magazine menu"""
 
     articles = models.ManyToManyField(Article, verbose_name=_('articles'), blank=True)
index ea181b0a7d73efd9070b477f26cf356a2b092b88..ba8e66be983536eaa79c0bf24d864c038022ea08 100644 (file)
@@ -4,10 +4,9 @@ from modeltranslation.translator import TranslationOptions
 from mezzanine.core.translation import (TranslatedSlugged,
                                         TranslatedDisplayable,
                                         TranslatedRichText)
-from organization.magazine.models import Article, Brief
+from organization.magazine.models import Article, Brief ,Topic
 
 @register(Article)
-#class ArticleTranslationOptions(TranslatedDisplayable, TranslatedRichText):
 class ArticleTranslationOptions(TranslationOptions):
 
     fields = ('sub_title',)
@@ -17,3 +16,9 @@ class ArticleTranslationOptions(TranslationOptions):
 class BriefTranslationOptions(TranslationOptions):
 
     fields = ('text_button', 'local_content')
+
+
+@register(Topic)
+class TopicTranslationOptions(TranslationOptions):
+
+    fields = ()
index f491c1c78f02c83cd5161bad06ac49e009ca44ef..784fb7d4a28846a98bc4bf1dcc685f0cd56e12de 100644 (file)
@@ -46,6 +46,8 @@ PAGE_MENU_TEMPLATES = (
     (2, _("Departement"), "pages/menus/header.html"),
     (3, _("Footer vertical"), "pages/menus/footer_vertical.html"),
     (4, _("Footer horizontal"), "pages/menus/footer_horizontal.html"),
+    (5, _("Magazine"), "pages/menus/magazine.html"),
+
 )
 
 # A sequence of fields that will be injected into Mezzanine's (or any
diff --git a/app/templates/core/inc/home_shutter_card.html b/app/templates/core/inc/home_shutter_card.html
new file mode 100644 (file)
index 0000000..58a25ba
--- /dev/null
@@ -0,0 +1,4 @@
+<a href="{% url url_pattern slug %}" title="">
+  <h2>{{ title }}</h2>
+  <p>{{ description|truncatechars:100 }}</p>
+</a>
index ba59b595decd3d82a1883bf739d47c94c9240711..7d1b74fbd63385fbbef694dff92ee98151937fe6 100644 (file)
@@ -1,5 +1,5 @@
 {% extends "base.html" %}
-{% load i18n featured_tags %}
+{% load i18n featured_tags pages_tags mezzanine_tags %}
 
 {% block meta_title %}{% trans "Home" %}{% endblock %}
 
@@ -10,6 +10,7 @@
 {% block content_header %}{% endblock %}
 
 {% block main %}
+{% page_menu "pages/menus/magazine.html" %}
 
 <ul>
   <li><a href="#" title="{% trans "News Headlines" %}">{% trans "News Headlines" %}</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">
     <div class="msry__container">
index b8b802ea9db8beb386d3061d933da526c24cc18f..13d48544e945ccb20edec2f15bff66ecd46c292b 100644 (file)
@@ -11,7 +11,6 @@
             {% endif %}
         {% endfor %}
       {% endifchanged %}
-
     <li id="ordering_{{ page.id }}">
         <div class="{% cycle 'row1' 'row2' %}">
             <a href="#" class="tree-toggle" id="page-{{ page.id }}"
             {% if page.perms.change %}
             <a href="{% url "admin:pages_page_change" page.id %}{% if not page.is_primary %}?parent={{ page.parent_id }}{% endif %}"
                 class="changelink">{{ page.title.strip|default:"&nbsp;" }}</a>
+            <span>&nbsp;|&nbsp;{{ page.content_model }}</span>
             {% else %}
             <span class="uneditable">{{ page.title }}</span>
+            <span> - {{ page.content_model }}</span>
             {% endif %}
             <span class="ordering"{% if not page.perms.change %}
                 style="visibility:hidden;"{% endif %}>
diff --git a/app/templates/pages/menus/magazine.html b/app/templates/pages/menus/magazine.html
new file mode 100644 (file)
index 0000000..8628858
--- /dev/null
@@ -0,0 +1,12 @@
+{% load i18n pages_tags staticfiles %}
+{% get_language_info_list for LANGUAGES as languages %}
+
+{% spaceless %}
+{% if page_branch_in_menu %}
+    {% for page in page_branch %}
+        {% if page.in_menu %}
+        {% include "core/inc/home_shutter_card.html" with title=page.title description=page.description url_pattern=page.content_model|add:"-detail" slug=page.slug %}
+        {% endif %}
+    {% endfor %}
+{% endif %}
+{% endspaceless %}