-# coding: utf-8
-
import os
-import yaml
-import textile
-from pytz import timezone
+import textile
+import yaml
from django.core.files import File
from django.core.management.base import BaseCommand, CommandError
from django.utils.timezone import make_naive, utc
+from emissions.models import Diffusion, Emission, Episode, SoundFile
+from pytz import timezone
-from emissions.models import Emission, Episode, SoundFile, Diffusion
def construct_ruby_object(loader, suffix, node):
return loader.construct_yaml_map(node)
+
def construct_ruby_sym(loader, node):
return loader.construct_yaml_str(node)
-yaml.add_multi_constructor(u"!ruby/object:", construct_ruby_object)
-yaml.add_constructor(u"!ruby/sym", construct_ruby_sym)
+
+yaml.add_multi_constructor("!ruby/object:", construct_ruby_object)
+yaml.add_constructor("!ruby/sym", construct_ruby_sym)
+
def get_as_html(text):
return textile.textile(text)
+
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--dirname', metavar='DIRNAME')
def handle(self, dirname, edition, *args, **kwargs):
print(dirname, edition)
emission, created = Emission.objects.get_or_create(
- slug='edition-%s' % edition,
- defaults={
- 'title': u'Édition %s' % edition,
- 'text': u'<p>Une bien belle année.</p>'
- })
+ slug='edition-%s' % edition,
+ defaults={'title': 'Édition %s' % edition, 'text': '<p>Une bien belle année.</p>'},
+ )
show = yaml.load(open(os.path.join(dirname, 'show.yaml')))
emission.title = show['attributes']['name']
emission.text = get_as_html(show['attributes']['description'])
episodes = yaml.load(open(os.path.join(dirname, 'episodes.yaml')))
images = {}
for image_data in yaml.load(open(os.path.join(dirname, 'images.yaml'))):
- images[image_data['attributes']['id']] = image_data['attributes']['content_uid'].encode('raw_unicode_escape').decode('utf-8')
+ images[image_data['attributes']['id']] = (
+ image_data['attributes']['content_uid'].encode('raw_unicode_escape').decode('utf-8')
+ )
episode_ids = {}
for episode_data in episodes:
episode, created = Episode.objects.get_or_create(
- slug=episode_data['attributes']['slug'],
- emission=emission,
- defaults={
- 'title': episode_data['attributes']['title'],
- })
+ slug=episode_data['attributes']['slug'],
+ emission=emission,
+ defaults={
+ 'title': episode_data['attributes']['title'],
+ },
+ )
episode.diffusions().delete()
- broadcasted_at = utc.localize(episode_data['attributes']['broadcasted_at']).astimezone(europe_brussels)
+ broadcasted_at = utc.localize(episode_data['attributes']['broadcasted_at']).astimezone(
+ europe_brussels
+ )
Diffusion(episode=episode, datetime=make_naive(broadcasted_at)).save()
episode.text = get_as_html(episode_data['attributes']['description'])
if not episode.image and episode_data['attributes'].get('image_id'):
- episode.image = File(open(os.path.join(dirname, 'images', images[episode_data['attributes']['image_id']])))
+ episode.image = File(
+ open(os.path.join(dirname, 'images', images[episode_data['attributes']['image_id']]))
+ )
episode.save()
episode_ids[episode_data['attributes']['id']] = episode.id
continue
episode = episode_ids[soundfile_data['attributes']['episode_id']]
soundfile, created = SoundFile.objects.get_or_create(
- episode_id=episode,
- title=soundfile_data['attributes']['name'],
- fragment=not(soundfile_data['attributes']['principal']))
+ episode_id=episode,
+ title=soundfile_data['attributes']['name'],
+ fragment=not (soundfile_data['attributes']['principal']),
+ )
soundfile.podcastable = True
soundfile.file = File(open(filepath))
soundfile.save()
import datetime
+from combo.data.models import Page
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.views.generic.base import TemplateView
-
from emissions.models import Diffusion, Emission, Episode, NewsItem
-from combo.data.models import Page
import panikweb.views
# force detour-vers-le-futur to go first
detour = [x for x in context['emissions'] if x.slug == 'detour-vers-le-futur']
context['emissions'] = detour + [x for x in context['emissions'] if x.slug != 'detour-vers-le-futur']
- context['newsitems'] = NewsItem.objects.exclude(date__gt=datetime.date.today()
- ).exclude(expiration_date__lt=datetime.date.today()).order_by('-date')[:3]
+ context['newsitems'] = (
+ NewsItem.objects.exclude(date__gt=datetime.date.today())
+ .exclude(expiration_date__lt=datetime.date.today())
+ .order_by('-date')[:3]
+ )
context['extra_pages'] = Page.objects.filter(exclude_from_navigation=False)
return context
else:
episodes_queryset = episodes_queryset.filter(emission=emission)
- context['all_episodes'] = episodes_queryset.filter(
- creation_timestamp__gt=current_year
- ).extra(select={
- 'first_diffusion': 'emissions_diffusion.datetime',
- },
- select_params=(False, True),
- where=['''datetime = (SELECT MIN(datetime)
+ context['all_episodes'] = (
+ episodes_queryset.filter(creation_timestamp__gt=current_year)
+ .extra(
+ select={
+ 'first_diffusion': 'emissions_diffusion.datetime',
+ },
+ select_params=(False, True),
+ where=[
+ '''datetime = (SELECT MIN(datetime)
FROM emissions_diffusion
WHERE episode_id = emissions_episode.id
- )'''],
- tables=['emissions_diffusion'],
- ).order_by('first_diffusion').distinct()
+ )'''
+ ],
+ tables=['emissions_diffusion'],
+ )
+ .order_by('first_diffusion')
+ .distinct()
+ )
return context