dependencies = [
('sites', '0002_alter_domain_unique'),
- ('organization-media', '0003_auto_20160929_1835'),
+ ('organization-media', '0004_auto_20160930_1039'),
]
operations = [
class Migration(migrations.Migration):
dependencies = [
- ('organization-media', '0004_auto_20160930_1039'),
+ ('organization-media', '0004_auto_20161007_1426'),
]
operations = [
urlpatterns = [
- url(r'^media-list/$', MediaListView.as_view(), name="media"),
+ url(r'^media-list/$', MediaListView.as_view(), name="media-list"),
url(r'^videos/$', VideoListView.as_view(), name="festival-video-list"),
url(r'^videos/detail/(?P<slug>.*)/$', VideoDetailView.as_view(), name="festival-video-detail"),
url(r'^videos/category/(?P<slug>.*)/$', VideoListCategoryView.as_view(), name="festival-video-list-category"),
from django.shortcuts import render
-
+from collections import defaultdict
from organization.media.models import *
from organization.core.views import *
from dal import autocomplete
from dal_select2_queryset_sequence.views import Select2QuerySetSequenceView
from mezzanine_agenda.models import Event
-from organization.magazine.models import Article, Topic, Brief
+from organization.agenda.models import EventVideo
+from organization.magazine.models import Article, Topic, Brief, ArticleVideo
class VideoListView(ListView):
context_object_name = 'media'
def get_queryset(self):
- audios = Audio.objects.all()
+ # audios = Audio.objects.all()
videos = Video.objects.all()
media_list = [video for video in videos]
- media_list += [audio for audio in audios]
+ # media_list += [audio for audio in audios]
media_list.sort(key=lambda x: x.created_at, reverse=True)
return media_list
form = DynamicContentHomeBodyForm
+class DynamicContentHomeMediaInline(TabularDynamicInlineAdmin):
+
+ model = DynamicContentHomeMedia
+ form = DynamicContentHomeMediaForm
+
+
class HomeAdminDisplayable(BaseTranslationModelAdmin):
- inlines = [DynamicContentHomeSliderInline, DynamicContentHomeBodyInline ]
+ inlines = [ DynamicContentHomeSliderInline,
+ DynamicContentHomeMediaInline,
+ DynamicContentHomeBodyInline,
+ ]
admin.site.register(CustomPage, CustomPageAdmin)
from organization.pages.models import CustomPage
from organization.pages.models import *
from organization.agenda.models import Event
+from organization.media.models import Audio, Video
class DynamicContentHomeSliderForm(autocomplete.FutureModelForm):
fields = ('content_object',)
+class DynamicContentHomeMediaForm(autocomplete.FutureModelForm):
+
+ content_object = dal_queryset_sequence.fields.QuerySetSequenceModelField(
+ queryset=autocomplete.QuerySetSequence(
+ Audio.objects.all(),
+ Video.objects.all(),
+ ),
+ required=False,
+ widget=dal_select2_queryset_sequence.widgets.QuerySetSequenceSelect2('dynamic-content-home-media'),
+ )
+
+ class Meta:
+ model = DynamicContentHomeMedia
+ fields = ('content_object',)
+
+
+
class DynamicContentPageForm(autocomplete.FutureModelForm):
content_object = dal_queryset_sequence.fields.QuerySetSequenceModelField(
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.10 on 2016-10-07 13:12
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contenttypes', '0002_remove_content_type_name'),
+ ('organization-pages', '0005_dynamiccontentpage'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='DynamicContentHomeMedia',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('_order', mezzanine.core.fields.OrderField(null=True, verbose_name='Order')),
+ ('object_id', models.PositiveIntegerField(editable=False, null=True, verbose_name='related object')),
+ ('content_type', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='content type')),
+ ('home', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='organization-pages.Home', verbose_name='home')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ 'verbose_name': 'Media',
+ },
+ ),
+ migrations.AlterModelOptions(
+ name='dynamiccontenthomebody',
+ options={'ordering': ('_order',), 'verbose_name': 'Body'},
+ ),
+ migrations.AlterModelOptions(
+ name='dynamiccontenthomeslider',
+ options={'ordering': ('_order',), 'verbose_name': 'Slider'},
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.10 on 2016-10-07 16:52
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-pages', '0006_auto_20161007_1512'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='dynamiccontenthomemedia',
+ name='home',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dynamic_content_home_media', to='organization-pages.Home', verbose_name='home'),
+ ),
+ ]
home = models.ForeignKey("home", verbose_name=_('home'), blank=True, null=True, on_delete=models.SET_NULL)
class Meta:
- verbose_name = 'Dynamic Content Home Slider'
+ verbose_name = 'Slider'
class DynamicContentHomeBody(DynamicContent, Orderable):
home = models.ForeignKey("home", verbose_name=_('home'), blank=True, null=True, on_delete=models.SET_NULL)
class Meta:
- verbose_name = 'Dynamic Content Home Body'
+ verbose_name = _('Body')
+
+
+class DynamicContentHomeMedia(DynamicContent, Orderable):
+
+ home = models.ForeignKey("home", verbose_name=_('home'), related_name='dynamic_content_home_media', blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = 'Media'
class Home(Displayable):
@register(DynamicContentHomeSlider)
-class DynamicContentHomeSliderOptions(TranslationOptions):
+class DynamicContentHomeSliderTranslationOptions(TranslationOptions):
pass
@register(DynamicContentHomeBody)
-class DynamicContentHomeBodyOptions(TranslationOptions):
+class DynamicContentHomeBodyTranslationOptions(TranslationOptions):
+
+ pass
+
+
+@register(DynamicContentHomeMedia)
+class DynamicContentHomeMediaTranslationOptions(TranslationOptions):
pass
url("^$", HomeView.as_view(), name="home"),
url("^dynamic-content-home-slider/$", permission_required('home.can_edit')(DynamicContentHomeSliderView.as_view()), name='dynamic-content-home-slider'),
url("^dynamic-content-home-body/$", permission_required('home.can_edit')(DynamicContentHomeBodyView.as_view()), name='dynamic-content-home-body'),
+ url("^dynamic-content-home-media/$", permission_required('page.can_edit')(DynamicContentHomeMediaView.as_view()), name='dynamic-content-home-media'),
url("^dynamic-content-page/$", permission_required('page.can_edit')(DynamicContentPageView.as_view()), name='dynamic-content-page'),
url("^home/$", HomeView.as_view(), name='organization-home'),
url("^newsletter/$", NewsletterView.as_view(), name='organization-newsletter'),
from organization.magazine.models import Article, Topic, Brief
from organization.pages.models import Home
from organization.agenda.models import Event
+from organization.media.models import Audio, Video
+
class HomeView(SlugMixin, ListView):
return qs
+
+class DynamicContentHomeMediaView(Select2QuerySetSequenceView):
+
+ def get_queryset(self):
+
+ videos = Video.objects.all()
+ audios = Audio.objects.all()
+
+ if self.q:
+ videos = videos.filter(title__icontains=self.q)
+ audios = audios.filter(title__icontains=self.q)
+
+ qs = autocomplete.QuerySetSequence(videos, audios,)
+
+ if self.q:
+ qs = qs.filter(title__icontains=self.q)
+
+ qs = self.mixup_querysets(qs)
+
+ return qs
+
+
class NewsletterView(TemplateView):
template_name = "pages/newsletter.html"
</li>
<li class="home__menu-item">
<a href="#" title="{% trans "Media" %}">{% trans "Medias" %}</a>
+ <div class="home__shutter">
+ <div class="home__shutter-content">
+ <div class="container-fluid tal">
+ {% include "media/inc/media_shutter.html" %}
+ </div>
+ <div><a href="{% url 'media-list' %}" title="">{% trans 'See more media >' %}</a></div>
+ </div>
+ </div>
</li>
</ul>
{% endblock %}
{% block page_content %}
-
+ {# not working for audio for the moment... #}
{% for object in media %}
{% with object|classname|lower as class_name %}
{% with "media/"|add:class_name|add:"/inc/"|add:class_name|add:"_card.html" as template %}
{% include template %}
{% endwith %}
{% endwith %}
- {{ m|classname }} : {{ m.created_at }} : {{ m.title }}
+ {{ object|classname }} : {{ object.created_at }} : {{ object.title }}
<br>
{% endfor %}