view sat_website/media.py @ 126:90d5f6a80c4e

update specifications page with the new plugins implemented in version 0.6
author souliane <souliane@mailoo.org>
date Tue, 01 Dec 2015 19:59:24 +0100
parents 14080acdf896
children 82cec659362b
line wrap: on
line source

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
SàT website: Salut à Toi's presentation website
Copyright (C) 2012  Jérôme Poisson (goffi@goffi.org)

This file is part of SàT website.

SàT website is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Foobar is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
"""
from django.utils.translation import get_language, ugettext_lazy as _
from django.conf import settings
from collections import namedtuple, OrderedDict
import os.path

ImageDesc = namedtuple("ImageDesc", "path description data")

class VideoDesc(namedtuple("VideoDesc", "paths description poster data")):
    @property
    def subtitles(self):
        key = "subtitles"
        if key not in self.data:
            return {}
        result = OrderedDict()

        # put the current lang first
        current_lang = get_language()
        langs = [current_lang] if current_lang in self.data[key] else []
        langs.extend([lang for lang in self.data[key] if lang != current_lang])

        for lang in langs:
            try:
                result[lang] = os.path.splitext(self.paths[lang])[0] + '.vtt'
            except IndexError:
                # FIXME: subtitles for a lang that is not in self.paths are ignored
                pass
        return result

screencasts = os.path.join(settings.MEDIA_EXTERNAL_URL, "screencasts") + "/"
video = os.path.join(settings.MEDIA_EXTERNAL_URL, "video") + "/"

#list the pictures

media = [

    # use OrderedDict when more than one language, the first item is the default one
    VideoDesc(OrderedDict({"en": video + "libervia_adhesion_2015_en.webm",
                           "fr": video + "libervia_adhesion_2015_fr.webm"}),
              _(u"Membership campaign for Libervia"),
              video + "posters/libervia_adhesion_2015.png",
              {_(u"version"): "0.5", _(u"year"): "2015", "subtitles": ("en", "fr")}),

    VideoDesc({"en": screencasts + "2015_screencast_blog.mp4"},
              _(u"Demo of the blogging feature"),
              screencasts + "posters/2015_screencast_blog.png",
              {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2015"}),

    ImageDesc("images/screenshots/0.5_campagne/public_blog_3.png", _(u"Public blog message"),
              {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2015"}),
    ImageDesc("images/screenshots/0.5/overview_libervia.png", _(u"Overview"),
              {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2014"}),
    ImageDesc("images/screenshots/0.5/http_unsecure_warning.png", _(u"Optional security check"),
              {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2014"}),
    ImageDesc("images/screenshots/0.4/sat_wysiwyg.png", _(u"Rich text editor"),
              {_(u"frontend"): "libervia", _(u"version"): "0.4", _(u"year"): "2014"}),

    VideoDesc({"fr": screencasts + "présentation_SàT_5_radio_collective.webm"},
              _(u"Demo of the new Libervia UI, and of the collective radio feature"),
              screencasts + "posters/radiocol.jpg",
              {_(u"frontend"): "libervia", _(u"version"): "0.3D", _(u"year"): "2012"}),

    ImageDesc("images/screenshots/libervia/libervia_login.png", _(u"Libervia's login page"),
              {_(u"frontend"): "libervia", _(u"version"): "0.3D", _(u"year"): "2011"}),
    ImageDesc("images/screenshots/libervia/libervia_discussions.png", _(u"Libervia's main view"),
              {_(u"frontend"): "libervia", _(u"version"): "0.3D", _(u"year"): "2011"}),
    ImageDesc("images/screenshots/wix/wix_tarot.png", _(u"Wix showing a french Tarot play"),
              {_(u"frontend"): "wix", _(u"version"): "0.2", _(u"year"): "2011"}),

    VideoDesc({"fr": screencasts + "présentation_SàT_3.webm"},
              _(u"This video focuses on Libervia. The UI is really outdated, but we can see some features"),
              screencasts + "posters/présentation_SàT_3.jpg",
              {_(u"frontend"): "libervia", _(u"version"): "0.2", _(u"year"): "2011"}),
    ]

media_tech = [
    VideoDesc({"en": screencasts + "2015_screencast_otr.mp4"},
              _(u"Demo of the end-to-end chat encryption feature"),
              screencasts + "posters/2015_screencast_otr.png",
              {_(u"frontend"): ("libervia", "primitivus"), _(u"version"): "0.5", _(u"year"): "2015"}),

    VideoDesc({"en": screencasts + "2015_screencast_tarot.mp4"},
              _(u"Demo of the tarot game"),
              screencasts + "posters/2015_screencast_tarot.png",
              {_(u"frontend"): ("libervia", "primitivus"), _(u"version"): "0.5", _(u"year"): "2015"}),

    ImageDesc("images/screenshots/0.5/adhoc_administration.png", _(u"Server administration from the web frontend Libervia."),
              {_(u"frontend"): "libervia", _(u"version"): "0.5", _(u"year"): "2014"}),

    VideoDesc({"fr": screencasts + "présentation_SàT_7_télécommande_universelle.webm"},
              _(u"Use ad-hoc commands to control a VLC player from Libervia"),
              screencasts + "posters/présentation_SàT_7_télécommande_universelle.png",
              {_(u"version"): "0.4", _(u"year"): "2014"}),

    VideoDesc({"fr": screencasts + "présentation_SàT_6_export_commande.webm"},
              _(u"Exporting a command: an FTP client is exported to a Gajim contact"),
              screencasts + "posters/présentation_SàT_6_export_commande.jpg",
              {_(u"version"): "0.4D", _(u"year"): "2013"}),

    VideoDesc({"fr": screencasts + "présentation_SàT_4_copie_et_pipe.webm"},
              _(u"How to copy and pipe streams over XMPP"),
              screencasts + "posters/présentation_SàT_4.png",
              {_(u"version"): "0.3D", _(u"year"): "2011", _(u"language"): "fr"}),

    ImageDesc("images/screenshots/jp/jp.png", _(u"Cowsay sent in conversation through jp"),
              {_(u"version"): "0.2", _(u"year"): "2011"}),
    ImageDesc("images/screenshots/primitivus/primitivus_tarot.png", _(u"Primitivus showing a french Tarot play"),
              {_(u"frontend"): "primitivus", _(u"version"): "0.2", _(u"year"): "2011"}),

    VideoDesc({"fr": screencasts + "présentation_SàT_2.webm"},
              _(u"This video shows french Tarot game, and how to use Thunderbird with SàT"),
              screencasts + "posters/présentation_SàT_2.jpg",
              {_(u"version"): "0.2", _(u"year"): "2011"}),

    VideoDesc({"fr": screencasts + "présentation_SàT.webm"},
              _(u"The first video shows wix, primitivus and jp"),
              screencasts + "posters/présentation_SàT.jpg",
              {_(u"version"): "0.2", _(u"year"): "2011"}),
    ]