From 31f17b4f6a27eda4b58ed251bc50657e606f5dcd Mon Sep 17 00:00:00 2001 From: olivier <> Date: Fri, 12 Feb 2010 12:25:46 +0000 Subject: [PATCH] allow to override flatpages in the project telemeta-pages/ subdirectory ; turn defaut home text into a generic one --- INSTALL | 2 +- telemeta/htdocs/css/telemeta.css | 12 +++++- telemeta/pages/default/parts/home.rst | 25 +++++++---- telemeta/pages/default/parts/home_img.jpg | Bin 21799 -> 0 bytes telemeta/pages/fr/parts/home.rst | 16 -------- telemeta/web/base.py | 2 +- telemeta/web/pages.py | 48 +++++++++++++++------- 7 files changed, 62 insertions(+), 43 deletions(-) delete mode 100644 telemeta/pages/default/parts/home_img.jpg delete mode 100644 telemeta/pages/fr/parts/home.rst diff --git a/INSTALL b/INSTALL index 11db013d..3f517d34 100644 --- a/INSTALL +++ b/INSTALL @@ -14,7 +14,7 @@ The following third party applications or libraries are required: libsndfile1 (>= 1.0.17), python-numpy, python-ctypes (>= 1.0.1), python-scikits-audiolab (>= 0.10), python-setuptools (>= 0.6b3), python-support (>= 0.3), python-scipy, lame (>= 3.98.2), - geopy >= 0.93 (http://code.google.com/p/geopy) + python-docutils (>= 0.5), geopy >= 0.93 (http://code.google.com/p/geopy) :optional: ecasound, festival, par2 diff --git a/telemeta/htdocs/css/telemeta.css b/telemeta/htdocs/css/telemeta.css index a9708264..abd74b7a 100644 --- a/telemeta/htdocs/css/telemeta.css +++ b/telemeta/htdocs/css/telemeta.css @@ -621,7 +621,15 @@ table.listing tbody tr:hover { background: #f7f8fa !important } margin-top: 0.8em; } -img.home-image { - margin: 0 1.5em 1.5em 0; +.rst-content img { + margin: 0 1.5em 1.5em 1.5em; float: left; } + +.rst-content img.align-left { + margin-left: 0 +} + +.rst-content img.align-right { + margin-right: 0 +} diff --git a/telemeta/pages/default/parts/home.rst b/telemeta/pages/default/parts/home.rst index 76d944e2..091f6db1 100644 --- a/telemeta/pages/default/parts/home.rst +++ b/telemeta/pages/default/parts/home.rst @@ -1,16 +1,23 @@ -=================================================== -Archives du Centre de Recherche en Ethnomusicologie -=================================================== +====================================================================================================== +Telemeta : a web frontend to backup, analyse, transcode and stream any audio content with its metadata +====================================================================================================== -Le Centre de Recherche en Ethnomusicologie fait partie du Laboratoire d'Ethnologie et de Sociologie Comparative (UMR 7186). Il se consacre à l'étude des pratiques et des savoirs musicaux, conçus autant comme processus de différentiation socio-culturelle que comme forme d'expression commune à l'Homme. +Telemeta is a web audio archiving program which introduces useful and secure methods to backup, index, transcode, analyse and publish any digitalized audio file with its metadata. It is dedicated to professionnals who wants to easily backup and publish documented sounds from collections of vinyls, magnetic tapes or audio CDs over a strong database, in accordance with open standards. -Cette approche, fondée sur un recueil raisonné des données musicales et un travail simultané d'enquête ethnographique, s'inscrit dans une anthropologie du fait musical envisagé dans ses dimensions socio-culturelles, esthétiques, formelles, acoustiques, kinésiques et finalement cognitives. +Here are the main features of Telemeta: -.. image:: home_img.jpg - :class: home-image +* Secure archiving, editing and publishing of audio files over internet. +* User friendly web frontend including workflows and high level search methods +* Smart dynamical and skinnable audio player (thanks to Timeside and soundmanager2) +* "On the fly" analyzing, transcoding and metadata embedding based on an easy plugin architecture +* Multi-format support : FLAC, OGG, MP3, WAV and more +* GEO Navigator for audio geolocalization +* DublinCore compatibility +* OAI-PMH data provider +* XML serialized backup +* Strong SQL backend -Le Centre investit par ailleurs de nouveaux objets encore peu explorés de la discipline comme le geste musical et chorégraphique, la construction culturelle et cognitive de l'émotion, ou encore les représentations du sonore. Les thématiques développées par les chercheurs, soit individuellement, soit dans le cadre de groupes de recherche, sont régulièrement exposées dans le cadre d'un séminaire interne. +The Telemeta data model is based on 'collections' and 'items'. A collection is described by its metadata and includes original audio items (sounds) and its own metadata. This existing model has been designed to fit the one of the French Centre of Etnomusicology (CREM) but could be easily adapted/overrided to suit other data structures. -Le CREM gère un vaste fonds documentaire (archives musicales et livres) de la plus haute valeur patrimoniale et consulté par un public international. Il est éditeur d'une importante collection de disques. diff --git a/telemeta/pages/default/parts/home_img.jpg b/telemeta/pages/default/parts/home_img.jpg deleted file mode 100644 index 8373834273d8d2bec371950a97f82d8cae42e85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21799 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 G5&zk*7tPTC diff --git a/telemeta/pages/fr/parts/home.rst b/telemeta/pages/fr/parts/home.rst deleted file mode 100644 index 76d944e2..00000000 --- a/telemeta/pages/fr/parts/home.rst +++ /dev/null @@ -1,16 +0,0 @@ -=================================================== -Archives du Centre de Recherche en Ethnomusicologie -=================================================== - -Le Centre de Recherche en Ethnomusicologie fait partie du Laboratoire d'Ethnologie et de Sociologie Comparative (UMR 7186). Il se consacre à l'étude des pratiques et des savoirs musicaux, conçus autant comme processus de différentiation socio-culturelle que comme forme d'expression commune à l'Homme. - -Cette approche, fondée sur un recueil raisonné des données musicales et un travail simultané d'enquête ethnographique, s'inscrit dans une anthropologie du fait musical envisagé dans ses dimensions socio-culturelles, esthétiques, formelles, acoustiques, kinésiques et finalement cognitives. - -.. image:: home_img.jpg - :class: home-image - -Le Centre investit par ailleurs de nouveaux objets encore peu explorés de la discipline comme le geste musical et chorégraphique, la construction culturelle et cognitive de l'émotion, ou encore les représentations du sonore. Les thématiques développées par les chercheurs, soit individuellement, soit dans le cadre de groupes de recherche, sont régulièrement exposées dans le cadre d'un séminaire interne. - -Le CREM gère un vaste fonds documentaire (archives musicales et livres) de la plus haute valeur patrimoniale et consulté par un public international. Il est éditeur d'une importante collection de disques. - - diff --git a/telemeta/web/base.py b/telemeta/web/base.py index 3f5154c6..d40cc8d6 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -69,7 +69,7 @@ class WebView(Component): """Render the homepage""" template = loader.get_template('telemeta/index.html') - context = Context({'page_content': pages.get_page_content(request, 'parts/home', True)}) + context = Context({'page_content': pages.get_page_content(request, 'parts/home', ignore_slash_issue=True)}) return HttpResponse(template.render(context)) def collection_detail(self, request, public_id, template=''): diff --git a/telemeta/web/pages.py b/telemeta/web/pages.py index 930b4324..ee091fbd 100644 --- a/telemeta/web/pages.py +++ b/telemeta/web/pages.py @@ -1,10 +1,10 @@ from django.conf import settings import re +import os import telemeta -from os import path import mimetypes -PAGES_ROOT = path.join(path.dirname(telemeta.__file__), 'pages') +PAGES_ROOT = os.path.join(os.path.dirname(telemeta.__file__), 'pages') class PageTextContent(object): def __init__(self, filename, path): @@ -49,35 +49,47 @@ def language_code(request=None): code = cut[0] return code.lower() -def resolve_page_file(language_code, relative_path, ignore_slash_issue=False): - root = path.realpath(path.join(PAGES_ROOT, language_code)) +def project_dir(): + import settings as settings_mod + if '__init__.py' in settings_mod.__file__: + p = os.path.dirname(settings_mod.__file__) + else: + p = settings_mod.__file__ + project_directory, settings_filename = os.path.split(p) + if project_directory == os.curdir or not project_directory: + project_directory = os.getcwd() + + return project_directory + +def resolve_page_file(root, relative_path, ignore_slash_issue=False): + root = os.path.realpath(root) filename = None current = root is_attachment = False for node in relative_path.split('/'): if not node: continue - current = path.join(current, node) + current = os.path.join(current, node) rst = current + '.rst' - if path.isfile(rst): + if os.path.isfile(rst): filename = rst break - elif path.isfile(current): + elif os.path.isfile(current): filename = current is_attachment = True - elif not path.isdir(current): + elif not os.path.isdir(current): break - if not filename and path.isdir(current): - rst = path.join(current, 'index.rst') - if path.isfile(rst): + if not filename and os.path.isdir(current): + rst = os.path.join(current, 'index.rst') + if os.path.isfile(rst): if not ignore_slash_issue and relative_path[-1:] != '/': - raise MalformedPagePath("The relative page path must end with a slash when " + raise MalformedPagePath("The relative page os.path must end with a slash when " "resolving an implicit directory index") filename = rst if filename: - filename = path.realpath(filename) + filename = os.path.realpath(filename) if filename.index(root) != 0: filename = None @@ -91,7 +103,15 @@ def resolve_page_file(language_code, relative_path, ignore_slash_issue=False): def get_page_content(request, relative_path, ignore_slash_issue=False): lang = language_code(request) - return resolve_page_file(lang, relative_path) or resolve_page_file('default', relative_path) + userroot = os.path.join(project_dir(), 'telemeta-pages') + rootlist = [os.path.join(userroot, lang), os.path.join(userroot, 'default'), + os.path.join(PAGES_ROOT, lang), os.path.join(PAGES_ROOT, 'default')] + for root in rootlist: + content = resolve_page_file(root, relative_path, ignore_slash_issue=ignore_slash_issue) + if content: + return content + + return None class MalformedPagePath(Exception): pass -- 2.39.5