from mezzanine.core.admin import *
from mezzanine.pages.admin import PageAdmin
#from orderable.admin import OrderableTabularInline #OrderableAdmin,
-from organization.magazine.models import Article, Brief, Topic, ArticleImage
-from organization.magazine.forms import BriefForm
+from organization.magazine.models import Article, Brief, Topic, ArticleImage, ArticlePersonListBlockInline
+from organization.magazine.forms import BriefForm, ArticlePersonListForm
class ArticleImageInline(TabularDynamicInlineAdmin):
model = Article
+class ArticlePersonAutocompleteInlineAdmin(TabularDynamicInlineAdmin):
+
+ model = ArticlePersonListBlockInline
+ form = ArticlePersonListForm
+
+
class ArticleAdminDisplayable(DisplayableAdmin):
fieldsets = deepcopy(ArticleAdmin.fieldsets)
exclude = ('related_posts',)
filter_horizontal = ['categories', 'related_articles', ]
- inlines = [ArticleImageInline,]
+ inlines = [ArticleImageInline, ArticlePersonAutocompleteInlineAdmin]
class BriefAdmin(admin.ModelAdmin): #OrderableTabularInline
from dal import autocomplete
-
import dal_queryset_sequence
import dal_select2_queryset_sequence
-
-from organization.magazine.models import Article, Topic, Brief
+from django import forms
+from organization.magazine.models import Article, Topic, Brief, ArticlePersonListBlockInline
from organization.pages.models import CustomPage
+from organization.network.models import PersonListBlock
from mezzanine_agenda.models import Event
class BriefForm(autocomplete.FutureModelForm):
class Meta:
model = Brief
fields = ('__all__')
+
+
+class ArticlePersonListForm(forms.ModelForm):
+
+ person_list_block = forms.ModelChoiceField(
+ queryset=PersonListBlock.objects.all(),
+ widget=autocomplete.ModelSelect2(url='person-list-block-autocomplete')
+ )
+
+ class Meta:
+ model = ArticlePersonListBlockInline
+ fields = ('person_list_block',)
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-23 15:38
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0023_auto_20160921_2043'),
+ ('organization-magazine', '0002_auto_20160901_1737'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ArticlePersonListBlockInline',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=1024, verbose_name='title')),
+ ('description', models.TextField(blank=True, verbose_name='description')),
+ ('article', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='article_person_list_block_inlines', to='organization-magazine.Article', verbose_name='Article')),
+ ('person_list_block', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='article_person_list_block_inlines', to='organization-network.PersonListBlock', verbose_name='Person List Block')),
+ ],
+ options={
+ 'verbose_name': 'Person List',
+ },
+ ),
+ ]
from mezzanine.core.models import RichText, Displayable, Slugged
from mezzanine.pages.models import Page
from mezzanine.blog.models import BlogPost
-from organization.network.models import Department
+from organization.network.models import Department, PersonListBlock
from organization.core.models import *
class Meta:
verbose_name = _('topic')
+
+
+class ArticlePersonListBlockInline(Titled):
+
+ article = models.ForeignKey(Article, verbose_name=_('Article'), related_name='article_person_list_block_inlines', blank=True, null=True, on_delete=models.SET_NULL)
+ person_list_block = models.ForeignKey(PersonListBlock, related_name='article_person_list_block_inlines', verbose_name=_('Person List Block'), blank=True, null=True)
+
+ class Meta:
+ verbose_name = _('Person List')
+
+ def __str__(self):
+ return self.title
from mezzanine.core.translation import (TranslatedSlugged,
TranslatedDisplayable,
TranslatedRichText)
-from organization.magazine.models import Article, Topic, Brief, ArticleImage
+from organization.magazine.models import (Article,
+ Topic,
+ Brief,
+ ArticleImage,
+ ArticlePersonListBlockInline)
@register(Article)
class ArticleTranslationOptions(TranslationOptions):
fields = ('text_button', )
+
@register(Topic)
class TopicTranslationOptions(TranslationOptions):
fields = ()
+
@register(ArticleImage)
class ArticleImageTranslationOptions(TranslationOptions):
fields = ('description',)
+
+
+@register(ArticlePersonListBlockInline)
+class ArticlePersonListBlockInlineTranslationOptions(TranslationOptions):
+
+ pass
)
class Meta:
- model = PageCustomPersonListBlockInline #CustomPage
- fields = ('person_list_block',) #person_list_block
+ model = PageCustomPersonListBlockInline
+ fields = ('person_list_block',)
class PersonListBlockInlineForm(forms.ModelForm):
{% endwith %}
{% endblock %}
+{% block page_person_list %}
+ {% for article_custom_person_list_block_inline in article.article_person_list_block_inlines.all %}
+ {% with article_custom_person_list_block_inline.person_list_block as person_list_block %}
+ {% with "network/inc/person/list_"|add:person_list_block.style|add:"_style.html" as template %}
+ {% include template %}
+ {% endwith %}
+ {% endwith %}
+ {% endfor %}
+{% endblock %}
+
+
{% block page_related_content %}
{% if article.related_articles.all %}