(_('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',)),
--- /dev/null
+# -*- 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'),
+ ),
+ ]
--- /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
+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'),
+ ),
+ ]
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
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):
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)
'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',
- },
- ),
]
--- /dev/null
+# -*- 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',),
+ ),
+ ]
+++ /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'),
- ),
- ]
--- /dev/null
+# -*- 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,
+ ),
+ ]
--- /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,
+ ),
+ ]
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})
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)
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',)
class BriefTranslationOptions(TranslationOptions):
fields = ('text_button', 'local_content')
+
+
+@register(Topic)
+class TopicTranslationOptions(TranslationOptions):
+
+ fields = ()
(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
--- /dev/null
+<a href="{% url url_pattern slug %}" title="">
+ <h2>{{ title }}</h2>
+ <p>{{ description|truncatechars:100 }}</p>
+</a>
{% extends "base.html" %}
-{% load i18n featured_tags %}
+{% load i18n featured_tags pages_tags mezzanine_tags %}
{% block meta_title %}{% trans "Home" %}{% endblock %}
{% 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">
{% 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:" " }}</a>
+ <span> | {{ 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 %}>
--- /dev/null
+{% 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 %}