From: Guillaume Pellerin Date: Thu, 21 Apr 2016 09:42:03 +0000 (+0200) Subject: add video category list X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=d75a810cba528c36fe90ba6e408207914499a1b0;p=mezzo.git add video category list --- diff --git a/app/festival/admin.py b/app/festival/admin.py index 45593b33..b8b7cd5c 100644 --- a/app/festival/admin.py +++ b/app/festival/admin.py @@ -50,12 +50,6 @@ class PlaylistAdmin(admin.ModelAdmin): list_display = ('__unicode__',) filter_horizontal = ['audios'] -class PageCategoryAdmin(admin.ModelAdmin): - - model = PageCategory - list_display = ('__unicode__',) - - class FeaturedAdmin(admin.ModelAdmin): @@ -64,9 +58,9 @@ class FeaturedAdmin(admin.ModelAdmin): filter_horizontal = ['artists', 'events', 'videos', 'pages', 'blogposts', 'pages', 'playlists'] -admin.site.register(PageCategory, PageCategoryAdmin) admin.site.register(Artist, ArtistAdminDisplayable) admin.site.register(Video, VideoAdminDisplayable) admin.site.register(Audio, AudioAdminDisplayable) admin.site.register(Playlist, PlaylistAdmin) admin.site.register(Featured, FeaturedAdmin) +admin.site.register(VideoCategory) diff --git a/app/festival/migrations/0020_auto_20160421_1034.py b/app/festival/migrations/0020_auto_20160421_1034.py deleted file mode 100644 index 6e46ffdd..00000000 --- a/app/festival/migrations/0020_auto_20160421_1034.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.2 on 2016-04-21 08:34 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('festival', '0019_auto_20160410_2148'), - ] - - operations = [ - migrations.CreateModel( - name='VideoCategory', - 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': 'video category', - 'db_table': 'festival_video_category', - }, - ), - migrations.AddField( - model_name='video', - name='category', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='videos', to='festival.VideoCategory', verbose_name='category'), - ), - ] diff --git a/app/festival/migrations/0020_auto_20160421_1059.py b/app/festival/migrations/0020_auto_20160421_1059.py new file mode 100644 index 00000000..176f87d8 --- /dev/null +++ b/app/festival/migrations/0020_auto_20160421_1059.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-21 08:59 +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'), + ('festival', '0019_auto_20160410_2148'), + ] + + operations = [ + migrations.CreateModel( + name='VideoCategory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=500, verbose_name='Title')), + ('slug', 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')), + ('site', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')), + ], + options={ + 'verbose_name': 'video category', + 'db_table': 'festival_video_category', + }, + ), + migrations.AddField( + model_name='video', + name='category', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='videos', to='festival.VideoCategory', verbose_name='category'), + ), + ] diff --git a/app/festival/migrations/0021_delete_pagecategory.py b/app/festival/migrations/0021_delete_pagecategory.py new file mode 100644 index 00000000..3cc91743 --- /dev/null +++ b/app/festival/migrations/0021_delete_pagecategory.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.2 on 2016-04-21 09:23 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('festival', '0020_auto_20160421_1059'), + ] + + operations = [ + migrations.DeleteModel( + name='PageCategory', + ), + ] diff --git a/app/festival/models.py b/app/festival/models.py index e0b42f97..fbc28aac 100644 --- a/app/festival/models.py +++ b/app/festival/models.py @@ -3,7 +3,7 @@ from django.utils.translation import ugettext_lazy as _ from django.core.urlresolvers import reverse, reverse_lazy from django.conf import settings -from mezzanine.core.models import RichText, Displayable +from mezzanine.core.models import RichText, Displayable, Slugged from mezzanine.core.fields import RichTextField, OrderField, FileField from mezzanine.utils.models import AdminThumbMixin, upload_to from mezzanine.blog.models import BlogPost @@ -53,17 +53,6 @@ class BaseTitleModel(models.Model): return self.title -class PageCategory(BaseNameModel): - """Page Category""" - - class Meta(MetaCore): - verbose_name = _('page category') - db_table = app_label + '_page_category' - - def __unicode__(self): - return self.name - - class Artist(Displayable, RichText, AdminThumbMixin): """Artist""" @@ -220,12 +209,12 @@ class Featured(BaseNameModel): return self.name -class VideoCategory(BaseNameModel): +class VideoCategory(Slugged): """Video Category""" class Meta(MetaCore): verbose_name = _('video category') db_table = app_label + '_video_category' - def __str__(self): - return self.name + def count(self): + return self.videos.all().count() diff --git a/app/festival/templates/festival/video_list.html b/app/festival/templates/festival/video_list.html index a738d2d1..e971c2ca 100644 --- a/app/festival/templates/festival/video_list.html +++ b/app/festival/templates/festival/video_list.html @@ -1,12 +1,23 @@ {% extends "base.html" %} {% load i18n %} -{% load mezzanine_tags keyword_tags %} +{% load mezzanine_tags keyword_tags festival_tags %} {% block title %} {% trans "Videos" %} {% endblock %} {% block main %} + +{% if categories %} +

{% trans "Categories" %} : +{% for category in categories %} +{{ category }} ({{ category.count }}){% if not forloop.last and categories|length > 1 %} | {% endif %} +{% endfor %} +

+{% elif category %} +

{% trans "Videos for the category" %} : {{ category }}

+{% endif %} +
{% for video in object_list %} diff --git a/app/festival/urls.py b/app/festival/urls.py index 686b4770..a02323cb 100644 --- a/app/festival/urls.py +++ b/app/festival/urls.py @@ -11,7 +11,8 @@ from festival.views import * urlpatterns = [ url(r'^artists/$', ArtistListView.as_view(), name="festival-artist-list"), - url(r'^artists/(?P.*)/$', ArtistDetailView.as_view(), name="festival-artist-detail"), + url(r'^artists/detail/(?P.*)/$', ArtistDetailView.as_view(), name="festival-artist-detail"), url(r'^videos/$', VideoListView.as_view(), name="festival-video-list"), - url(r'^videos/(?P.*)/$', VideoDetailView.as_view(), name="festival-video-detail"), + 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/festival/views.py b/app/festival/views.py index cb494191..90b94589 100644 --- a/app/festival/views.py +++ b/app/festival/views.py @@ -42,6 +42,7 @@ class VideoListView(ListView): def get_context_data(self, **kwargs): context = super(VideoListView, self).get_context_data(**kwargs) + context['categories'] = VideoCategory.objects.all() return context @@ -54,3 +55,15 @@ class VideoDetailView(SlugMixin, DetailView): def get_context_data(self, **kwargs): context = super(VideoDetailView, self).get_context_data(**kwargs) return context + + +class VideoListCategoryView(VideoListView): + + def get_queryset(self): + self.category = VideoCategory.objects.get(slug=self.kwargs['slug']) + return self.model.objects.filter(category=self.category) + + def get_context_data(self, **kwargs): + context = super(VideoListView, self).get_context_data(**kwargs) + context['category'] = self.category + return context diff --git a/app/locale/fr/LC_MESSAGES/django.mo b/app/locale/fr/LC_MESSAGES/django.mo index d4e8d0a1..9a60f99d 100644 Binary files a/app/locale/fr/LC_MESSAGES/django.mo and b/app/locale/fr/LC_MESSAGES/django.mo differ diff --git a/app/locale/fr/LC_MESSAGES/django.po b/app/locale/fr/LC_MESSAGES/django.po index 3cf9a47c..c27d13f7 100644 --- a/app/locale/fr/LC_MESSAGES/django.po +++ b/app/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-04-19 18:53+0200\n" +"POT-Creation-Date: 2016-04-21 11:39+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -38,106 +38,113 @@ msgstr "" msgid "title" msgstr "titre" -#: festival/models.py:60 -msgid "page category" -msgstr "catégorie de page" - -#: festival/models.py:70 +#: festival/models.py:59 msgid "first name" msgstr "" -#: festival/models.py:71 +#: festival/models.py:60 msgid "last name" msgstr "" -#: festival/models.py:72 +#: festival/models.py:61 msgid "biography" msgstr "biographie" -#: festival/models.py:73 +#: festival/models.py:62 msgid "photo" msgstr "" -#: festival/models.py:74 +#: festival/models.py:63 msgid "photo credits" msgstr "crédits photo" -#: festival/models.py:75 +#: festival/models.py:64 msgid "photo alignment" msgstr "alignement photo" -#: festival/models.py:76 +#: festival/models.py:65 msgid "photo description" msgstr "" -#: festival/models.py:77 +#: festival/models.py:66 msgid "photo featured" msgstr "" -#: festival/models.py:78 +#: festival/models.py:67 msgid "photo featured credits" msgstr "" -#: festival/models.py:79 festival/models.py:212 +#: festival/models.py:68 festival/models.py:202 msgid "events" msgstr "événements" -#: festival/models.py:84 +#: festival/models.py:73 msgid "artist" msgstr "artiste" -#: festival/models.py:129 +#: festival/models.py:118 msgid "media id" msgstr "" -#: festival/models.py:130 +#: festival/models.py:119 msgid "open source URL" msgstr "" -#: festival/models.py:131 +#: festival/models.py:120 msgid "closed source URL" msgstr "" -#: festival/models.py:132 +#: festival/models.py:121 msgid "poster" msgstr "" -#: festival/models.py:167 festival/models.py:183 festival/models.py:202 +#: festival/models.py:156 festival/models.py:172 festival/models.py:192 msgid "event" msgstr "événement" -#: festival/models.py:170 +#: festival/models.py:159 msgid "audio" msgstr "" -#: festival/models.py:186 +#: festival/models.py:173 +#, fuzzy +#| msgid "Category:" +msgid "category" +msgstr "Catégorie:" + +#: festival/models.py:176 msgid "video" msgstr "" -#: festival/models.py:201 +#: festival/models.py:191 msgid "audios" msgstr "" -#: festival/models.py:211 templates/index.html:42 +#: festival/models.py:201 templates/index.html:42 msgid "artists" msgstr "artistes" -#: festival/models.py:213 templates/index.html:50 +#: festival/models.py:203 templates/index.html:50 msgid "videos" msgstr "vidéos" -#: festival/models.py:214 +#: festival/models.py:204 msgid "blog posts" msgstr "articles" -#: festival/models.py:215 +#: festival/models.py:205 msgid "pages" msgstr "pages" -#: festival/models.py:216 +#: festival/models.py:206 msgid "playlists" msgstr "" +#: festival/models.py:216 +#| msgid "page category" +msgid "video category" +msgstr "catégorie de vidéo" + #: festival/templates/festival/artist_detail.html:27 #: festival/templates/festival/video_detail.html:27 #: templates/agenda/event_detail.html:157 @@ -156,6 +163,17 @@ msgstr "Jouer la vidéo" msgid "Videos" msgstr "Vidéos" +#: festival/templates/festival/video_list.html:12 +#: templates/blog/blog_post_list.html:72 +#: templates/blog/includes/filter_panel.html:43 +msgid "Categories" +msgstr "Catégories" + +#: festival/templates/festival/video_list.html:18 +#| msgid "Viewing posts for the category" +msgid "Videos for the category" +msgstr "Les vidéos de la catégorie" + #: local_settings.py:81 msgid "Content" msgstr "" @@ -403,11 +421,6 @@ msgstr "Les articles postés depuis" msgid "Viewing posts by" msgstr "" -#: templates/blog/blog_post_list.html:72 -#: templates/blog/includes/filter_panel.html:43 -msgid "Categories" -msgstr "" - #: templates/blog/includes/filter_panel.html:6 msgid "Recent Posts" msgstr ""