From: Emilie Date: Wed, 15 Feb 2017 11:39:35 +0000 (+0100) Subject: [Home] : add media on home | [Media] : add image block X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=8ecbbb54cef17dafc079a7826a0231793d4a4b66;p=mezzo.git [Home] : add media on home | [Media] : add image block --- diff --git a/app/organization/media/admin.py b/app/organization/media/admin.py index 44b2813e..7eb1695a 100644 --- a/app/organization/media/admin.py +++ b/app/organization/media/admin.py @@ -31,10 +31,15 @@ class MediaTranscodedAdmin(TabularDynamicInlineAdmin): model = MediaTranscoded +class MediaImageInline(TabularDynamicInlineAdmin): + + model = MediaImage + + class MediaAdmin(BaseTranslationModelAdmin): model = Media - inlines = (MediaTranscodedAdmin,) + inlines = (MediaTranscodedAdmin, MediaImageInline) list_display = ['title',] diff --git a/app/organization/media/migrations/0013_mediaimage.py b/app/organization/media/migrations/0013_mediaimage.py new file mode 100644 index 00000000..da739c05 --- /dev/null +++ b/app/organization/media/migrations/0013_mediaimage.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.11 on 2017-02-15 10:55 +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 = [ + ('organization-media', '0012_auto_20161028_1812'), + ] + + operations = [ + migrations.CreateModel( + name='MediaImage', + 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')), + ('title', models.CharField(max_length=1024, verbose_name='title')), + ('description', models.TextField(blank=True, verbose_name='description')), + ('file', mezzanine.core.fields.FileField(max_length=1024, verbose_name='Image')), + ('credits', models.CharField(blank=True, max_length=256, null=True, verbose_name='credits')), + ('type', models.CharField(choices=[('logo', 'logo'), ('logo_white', 'logo white'), ('logo_black', 'logo black'), ('logo_header', 'logo header'), ('logo_footer', 'logo footer'), ('slider', 'slider'), ('card', 'card'), ('page_slider', 'page - slider'), ('page_featured', 'page - featured')], max_length=64, verbose_name='type')), + ('media', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='images', to='organization-media.Media', verbose_name='media')), + ], + options={ + 'verbose_name_plural': 'images', + 'verbose_name': 'image', + 'ordering': ('_order',), + }, + ), + ] diff --git a/app/organization/media/models.py b/app/organization/media/models.py index 182fea99..404e9e96 100644 --- a/app/organization/media/models.py +++ b/app/organization/media/models.py @@ -122,6 +122,16 @@ class MediaTranscoded(models.Model): return self.url +class MediaImage(Image): + + media = models.ForeignKey(Media, verbose_name=_('media'), related_name='images', blank=True, null=True, on_delete=models.SET_NULL) + + class Meta: + verbose_name = _("image") + verbose_name_plural = _("images") + order_with_respect_to = "media" + + class MediaCategory(Slugged, Description): """Media Category""" diff --git a/app/organization/media/translation.py b/app/organization/media/translation.py index e28ab80c..3dc1ed9b 100644 --- a/app/organization/media/translation.py +++ b/app/organization/media/translation.py @@ -52,3 +52,9 @@ class PlaylistMediaTranslationOptions(TranslationOptions): class MediaCategoryTranslationOptions(TranslationOptions): fields = ('title', 'description',) + + +@register(MediaImage) +class MediaImageTranslationOptions(TranslationOptions): + + fields = () diff --git a/app/organization/pages/forms.py b/app/organization/pages/forms.py index 2b133274..6a776380 100644 --- a/app/organization/pages/forms.py +++ b/app/organization/pages/forms.py @@ -32,7 +32,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 Playlist +from organization.media.models import Playlist, Media from organization.network.models import Person @@ -43,7 +43,8 @@ class DynamicContentHomeSliderForm(autocomplete.FutureModelForm): Article.objects.all(), CustomPage.objects.all(), Event.objects.all(), - Person.objects.published() + Person.objects.published(), + Media.objects.all() ), required=False, widget=dal_select2_queryset_sequence.widgets.QuerySetSequenceSelect2('dynamic-content-home-slider'), @@ -61,7 +62,8 @@ class DynamicContentHomeBodyForm(autocomplete.FutureModelForm): Article.objects.all(), CustomPage.objects.all(), Brief.objects.all(), - Event.objects.all() + Event.objects.all(), + Media.objects.all() ), required=False, widget=dal_select2_queryset_sequence.widgets.QuerySetSequenceSelect2('dynamic-content-home-body'), diff --git a/app/organization/pages/views.py b/app/organization/pages/views.py index e7618946..88c47645 100644 --- a/app/organization/pages/views.py +++ b/app/organization/pages/views.py @@ -33,7 +33,7 @@ from organization.core.views import SlugMixin, autocomplete_result_formatting 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 Playlist +from organization.media.models import Playlist, Media from organization.network.models import Person @@ -64,15 +64,16 @@ class DynamicContentHomeSliderView(Select2QuerySetSequenceView): custompage = CustomPage.objects.all() events = Event.objects.all() persons = Person.objects.published() - + medias = Media.objects.all() if self.q: articles = articles.filter(title__icontains=self.q) custompage = custompage.filter(title__icontains=self.q) events = events.filter(title__icontains=self.q) persons = persons.filter(title__icontains=self.q) + medias = medias.filter(title__icontains=self.q) - qs = autocomplete.QuerySetSequence(articles, custompage, events, persons) + qs = autocomplete.QuerySetSequence(articles, custompage, events, persons, medias) if self.q: # This would apply the filter on all the querysets @@ -99,14 +100,16 @@ class DynamicContentHomeBodyView(Select2QuerySetSequenceView): custompage = CustomPage.objects.all() events = Event.objects.all() briefs = Brief.objects.all() + medias = Media.objects.all() if self.q: articles = articles.filter(title__icontains=self.q) custompage = custompage.filter(title__icontains=self.q) events = events.filter(title__icontains=self.q) briefs = briefs.filter(title__icontains=self.q) + medias = medias.filter(title__icontains=self.q) - qs = autocomplete.QuerySetSequence(articles, custompage, briefs, events) + qs = autocomplete.QuerySetSequence(articles, custompage, briefs, events, medias) if self.q: # This would apply the filter on all the querysets diff --git a/app/templates/home/inc/body.html b/app/templates/home/inc/body.html index e073d8c0..6170bc7c 100644 --- a/app/templates/home/inc/body.html +++ b/app/templates/home/inc/body.html @@ -18,6 +18,8 @@ {% include "agenda/event/includes/event_card.html" with object=slider.content_object %} {% elif slider.content_type.model == "custompage" %} {% include "pages/page/includes/page_card.html" with object=slider.content_object %} + {% elif slider.content_type.model == "media" %} + {% include "media/media/includes/media_card.html" with object=slider.content_object %} {% endif %} {% endif %} @@ -33,6 +35,8 @@ {% include "agenda/event/includes/event_card.html" with object=content.content_object %} {% elif content.content_type.model == "custompage" %} {% include "pages/page/includes/page_card.html" with object=content.content_object %} + {% elif content.content_type.model == "media" %} + {% include "media/media/includes/media_card.html" with object=content.content_object %} {% endif %} {% endfor %} diff --git a/app/templates/media/media/includes/media_card.html b/app/templates/media/media/includes/media_card.html index db774cb9..a7671a1a 100644 --- a/app/templates/media/media/includes/media_card.html +++ b/app/templates/media/media/includes/media_card.html @@ -1,14 +1,17 @@ -{% load mezzanine_tags keyword_tags i18n organization_tags staticfiles %} - +{% load i18n future mezzanine_tags event_tags keyword_tags disqus_tags organization_tags %}