]> git.parisson.com Git - telemeta.git/commitdiff
allow to override flatpages in the project telemeta-pages/ subdirectory ; turn defaut...
authorolivier <>
Fri, 12 Feb 2010 12:25:46 +0000 (12:25 +0000)
committerolivier <>
Fri, 12 Feb 2010 12:25:46 +0000 (12:25 +0000)
INSTALL
telemeta/htdocs/css/telemeta.css
telemeta/pages/default/parts/home.rst
telemeta/pages/default/parts/home_img.jpg [deleted file]
telemeta/pages/fr/parts/home.rst [deleted file]
telemeta/web/base.py
telemeta/web/pages.py

diff --git a/INSTALL b/INSTALL
index 11db013d5a5f3d1d2f330a526d049359c2979d87..3f517d3409ad042652e5ca3c8db8ff9a69cbe2dd 100644 (file)
--- 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
 
index a9708264326bfc926489febc25df248d9fac2bfc..abd74b7ad6cd7c01b674250243ee47417e7e01d5 100644 (file)
@@ -621,7 +621,15 @@ table.listing tbody tr:hover { background: #f7f8fa !important }
     margin-top: 0.8em;\r
 }\r
 \r
-img.home-image {\r
-    margin: 0 1.5em 1.5em 0;\r
+.rst-content img {\r
+    margin: 0 1.5em 1.5em 1.5em;\r
     float: left;\r
 }\r
+\r
+.rst-content img.align-left {\r
+    margin-left: 0\r
+}\r
+    \r
+.rst-content img.align-right {\r
+    margin-right: 0\r
+}\r
index 76d944e2b1dcc9a690f6bc4afe115efa77212a1e..091f6db1799887fadcef1fed751a03fb72e928ff 100644 (file)
@@ -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 (file)
index 8373834..0000000
Binary files a/telemeta/pages/default/parts/home_img.jpg and /dev/null differ
diff --git a/telemeta/pages/fr/parts/home.rst b/telemeta/pages/fr/parts/home.rst
deleted file mode 100644 (file)
index 76d944e..0000000
+++ /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.
-
-
index 3f5154c67ae232af3d995f3e5c0c6cf77c36bd94..d40cc8d6804bbef2ab649d2ceb8ba12eba0ce819 100644 (file)
@@ -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=''):
index 930b4324ba507ce27136cf2d162a9cb9e27c2e06..ee091fbd0eb6d3d19ca8e18844a57d3a953a2d85 100644 (file)
@@ -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