From 1c95903ca92efffac66e1f2084958b4174acfefe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 25 Nov 2011 11:27:51 +0100 Subject: [PATCH] publish m3u --- tabellio/agenda/parlevent.py | 27 ++++++++++++++++++--- tabellio/agenda/parlevent_templates/view.pt | 2 +- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/tabellio/agenda/parlevent.py b/tabellio/agenda/parlevent.py index e2be48a..72cf503 100644 --- a/tabellio/agenda/parlevent.py +++ b/tabellio/agenda/parlevent.py @@ -1,5 +1,7 @@ +import os + from five import grok -from zope import schema +from zope import schema, component from zope.interface import implements from z3c.relationfield.schema import RelationChoice from Products.CMFCore.utils import getToolByName @@ -11,6 +13,8 @@ from themis.fields import LegisSession from plone.app.textfield import RichText from themis.datatypes.commission import ICommission +from plone.registry.interfaces import IRegistry +from tabellio.config.interfaces import ITabellioSettings from tabellio.agenda.interfaces import MessageFactory as _ from event import IBaseEvent, BaseEvent, EventBaseView @@ -42,11 +46,28 @@ class ParlEventBaseView(EventBaseView): portal_type=('tabellio.agenda.parlevent', 'tabellio.agenda.comevent')) + def get_stream_name(self): + filename = '%04d%02d%02d%02d-SEAN.mp3' % ( + self.context.start.year, self.context.start.month, + self.context.start.day, self.context.start.hour) + return filename + def has_stream(self): - # XXX - return False + settings = component.getUtility(IRegistry).forInterface(ITabellioSettings, False) + if not settings.audiofiles_path: + return False + return os.path.exists(os.path.join(settings.audiofiles_path, self.get_stream_name())) class View(grok.View, ParlEventBaseView): grok.context(IParlEvent) grok.require('zope2.View') +class M3U(grok.View, ParlEventBaseView): + grok.context(IParlEvent) + grok.require('zope2.View') + grok.name('m3u') + + def render(self): + portal_url = getToolByName(self.context, 'portal_url').getPortalObject().absolute_url() + self.request.response.setHeader('Content-type', 'audio/x-mpegurl') + return portal_url + '/mp3/' + self.get_stream_name() diff --git a/tabellio/agenda/parlevent_templates/view.pt b/tabellio/agenda/parlevent_templates/view.pt index a0b0e17..230a478 100644 --- a/tabellio/agenda/parlevent_templates/view.pt +++ b/tabellio/agenda/parlevent_templates/view.pt @@ -41,7 +41,7 @@
  • Compte-rendu intégral Compte-rendu intégral (non disponible)
  • -
  • Streaming +
  • Streaming Streaming (non disponible)