From: Emilie Date: Sun, 9 Oct 2016 18:26:24 +0000 (+0200) Subject: Media: add shutter on home + video on media list but not audio for the moment... X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=2897e0b8ff74b41bb354f7e4e1a6a382185b0d69;p=mezzo.git Media: add shutter on home + video on media list but not audio for the moment... --- diff --git a/app/organization/media/migrations/0004_auto_20161007_1426.py b/app/organization/media/migrations/0004_auto_20161007_1426.py index 6dec1a05..93e23b82 100644 --- a/app/organization/media/migrations/0004_auto_20161007_1426.py +++ b/app/organization/media/migrations/0004_auto_20161007_1426.py @@ -10,7 +10,7 @@ class Migration(migrations.Migration): dependencies = [ ('sites', '0002_alter_domain_unique'), - ('organization-media', '0003_auto_20160929_1835'), + ('organization-media', '0004_auto_20160930_1039'), ] operations = [ diff --git a/app/organization/media/migrations/0005_auto_20160930_1849.py b/app/organization/media/migrations/0005_auto_20160930_1849.py index 2aa0ec0c..3020d9c8 100644 --- a/app/organization/media/migrations/0005_auto_20160930_1849.py +++ b/app/organization/media/migrations/0005_auto_20160930_1849.py @@ -8,7 +8,7 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('organization-media', '0004_auto_20160930_1039'), + ('organization-media', '0004_auto_20161007_1426'), ] operations = [ diff --git a/app/organization/media/urls.py b/app/organization/media/urls.py index 9787ed90..6fe87b46 100644 --- a/app/organization/media/urls.py +++ b/app/organization/media/urls.py @@ -11,7 +11,7 @@ from organization.media.views import * 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.*)/$', VideoDetailView.as_view(), name="festival-video-detail"), url(r'^videos/category/(?P.*)/$', VideoListCategoryView.as_view(), name="festival-video-list-category"), diff --git a/app/organization/media/views.py b/app/organization/media/views.py index f982dac3..b447b6d5 100644 --- a/app/organization/media/views.py +++ b/app/organization/media/views.py @@ -1,11 +1,12 @@ 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): @@ -50,10 +51,10 @@ class MediaListView(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 diff --git a/app/organization/pages/admin.py b/app/organization/pages/admin.py index ff35c3b7..db5d01c0 100644 --- a/app/organization/pages/admin.py +++ b/app/organization/pages/admin.py @@ -105,9 +105,18 @@ class DynamicContentHomeBodyInline(TabularDynamicInlineAdmin): form = DynamicContentHomeBodyForm +class DynamicContentHomeMediaInline(TabularDynamicInlineAdmin): + + model = DynamicContentHomeMedia + form = DynamicContentHomeMediaForm + + class HomeAdminDisplayable(BaseTranslationModelAdmin): - inlines = [DynamicContentHomeSliderInline, DynamicContentHomeBodyInline ] + inlines = [ DynamicContentHomeSliderInline, + DynamicContentHomeMediaInline, + DynamicContentHomeBodyInline, + ] admin.site.register(CustomPage, CustomPageAdmin) diff --git a/app/organization/pages/forms.py b/app/organization/pages/forms.py index ec1b91aa..e82ada1f 100644 --- a/app/organization/pages/forms.py +++ b/app/organization/pages/forms.py @@ -11,6 +11,7 @@ from organization.magazine.models import Article, Topic, Brief 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): @@ -47,6 +48,23 @@ class DynamicContentHomeBodyForm(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( diff --git a/app/organization/pages/migrations/0006_auto_20161007_1512.py b/app/organization/pages/migrations/0006_auto_20161007_1512.py new file mode 100644 index 00000000..40349e0d --- /dev/null +++ b/app/organization/pages/migrations/0006_auto_20161007_1512.py @@ -0,0 +1,40 @@ +# -*- 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'}, + ), + ] diff --git a/app/organization/pages/migrations/0007_auto_20161007_1852.py b/app/organization/pages/migrations/0007_auto_20161007_1852.py new file mode 100644 index 00000000..1c865a48 --- /dev/null +++ b/app/organization/pages/migrations/0007_auto_20161007_1852.py @@ -0,0 +1,21 @@ +# -*- 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'), + ), + ] diff --git a/app/organization/pages/models.py b/app/organization/pages/models.py index b33e78b2..02047b19 100644 --- a/app/organization/pages/models.py +++ b/app/organization/pages/models.py @@ -87,7 +87,7 @@ class DynamicContentHomeSlider(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 Slider' + verbose_name = 'Slider' class DynamicContentHomeBody(DynamicContent, Orderable): @@ -95,7 +95,15 @@ 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): diff --git a/app/organization/pages/translation.py b/app/organization/pages/translation.py index 2b00ae34..d6863648 100644 --- a/app/organization/pages/translation.py +++ b/app/organization/pages/translation.py @@ -11,13 +11,19 @@ class HomeTranslationOptions(TranslationOptions): @register(DynamicContentHomeSlider) -class DynamicContentHomeSliderOptions(TranslationOptions): +class DynamicContentHomeSliderTranslationOptions(TranslationOptions): pass @register(DynamicContentHomeBody) -class DynamicContentHomeBodyOptions(TranslationOptions): +class DynamicContentHomeBodyTranslationOptions(TranslationOptions): + + pass + + +@register(DynamicContentHomeMedia) +class DynamicContentHomeMediaTranslationOptions(TranslationOptions): pass diff --git a/app/organization/pages/urls.py b/app/organization/pages/urls.py index 559de368..a4aec058 100644 --- a/app/organization/pages/urls.py +++ b/app/organization/pages/urls.py @@ -14,6 +14,7 @@ urlpatterns = [ 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'), diff --git a/app/organization/pages/views.py b/app/organization/pages/views.py index e2bb796d..384acf54 100644 --- a/app/organization/pages/views.py +++ b/app/organization/pages/views.py @@ -11,6 +11,8 @@ from organization.core.views import SlugMixin 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): @@ -84,6 +86,28 @@ class DynamicContentHomeBodyView(Select2QuerySetSequenceView): 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" diff --git a/app/templates/index.html b/app/templates/index.html index 8dfe85ce..f1c8221d 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -47,6 +47,14 @@
  • {% trans "Medias" %} +
    +
    +
    + {% include "media/inc/media_shutter.html" %} +
    + +
    +
  • diff --git a/app/templates/media/media_list.html b/app/templates/media/media_list.html index 8eadaf47..89718dcf 100644 --- a/app/templates/media/media_list.html +++ b/app/templates/media/media_list.html @@ -27,14 +27,14 @@ {% 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 }}
    {% endfor %}