]> git.parisson.com Git - telemeta.git/commitdiff
reorder models like in templates for edit mode, fix some alt images, go to 0.9 !
authoryomguy <yomguy@parisson.com>
Mon, 16 May 2011 15:55:57 +0000 (17:55 +0200)
committeryomguy <yomguy@parisson.com>
Mon, 16 May 2011 15:55:57 +0000 (17:55 +0200)
INSTALL
setup.py
telemeta/__init__.py
telemeta/models/media.py
telemeta/templates/telemeta_default/collection_add.html
telemeta/templates/telemeta_default/collection_edit.html
telemeta/templates/telemeta_default/mediaitem_add.html
telemeta/templates/telemeta_default/mediaitem_copy.html
telemeta/templates/telemeta_default/mediaitem_edit.html
telemeta/templates/telemeta_default/mediaitem_keywords_edit.html

diff --git a/INSTALL b/INSTALL
index f733097f3f9fe01c9449096f77de87c4572cb208..0a01a9659ff5638e3c1868e93fd2dd796dcb1eb7 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -25,7 +25,7 @@ Install the dependencies
        
         sudo aptitude install python python-django python-xml python-mysqldb mysql-server \
                               python-ctypes python-setuptools python-support python-docutils \
-                              python-libxml2 
+                              python-libxml2 python-django-registration
 
     To get MP3 reading and writing, just add these lines to your /etc/apt/sources-list::
 
index ca12b0cea5f437ee20b0223e4c6c16460170b3ed..d0510d2c1232f4e3c6bb6dea93c1534313d65374 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -63,11 +63,14 @@ Here are the main features of Telemeta:
  * 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
+ * Temporal indexation with fast user marker management
+ * User management with individual profiles and rights
+ * Playlist management for users with CSV data export
+ * Geo-Navigator for audio geolocalization
  * DublinCore compatibility
  * OAI-PMH data provider
  * XML serialized backup
- * Strong SQL backend
+ * Strong SQL or Oracle backend
 
 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
index d83fcaca50e712a8363a5112522b87d59ad5b524..aed0d18bd9bd951ed4ba1725feb08f855427534f 100644 (file)
@@ -12,7 +12,7 @@ U{http://telemeta.org}
 """
 
 __docformat__ = 'epytext en'
-__version__ = '0.8'
+__version__ = '0.9'
 __url__ = 'http://telemeta.org'
 __copyright__ = '(C) 2007-2011 Parisson'
 __license__ = 'CeCILL-2'
@@ -21,6 +21,7 @@ Copyright Parisson SARL (2007-2011)
 
 <yomguy@parisson.com>
 <olivier@samalyse.com>
+<riccardo.zaccarelli@gmail.com>
 
 This software is a computer program whose purpose is to backup, analyse, 
 transcode and stream any audio content with its metadata.
@@ -55,4 +56,3 @@ knowledge of the CeCILL license and that you accept its terms.
 from models import *
 from util import *
 
-
index 29aeace111ce15062a7cbad19ca2941315a51d29..4138c06812c91f6645cefa0ce85eb55c05f04a8b 100644 (file)
@@ -88,62 +88,69 @@ class MediaCollection(MediaResource):
         if not re.match(regex, value):
             raise ValidationError(u'%s is not a valid collection code' % value)
     
-    code                  = CharField(_('code'), unique=True, required=True, validators=[is_valid_collection_code])
-    old_code              = CharField(_('old code'), unique=True, null=True)
+    # General informations
     reference             = CharField(_('reference'), unique=True, null=True)
     title                 = CharField(_('title'), required=True)
     alt_title             = CharField(_('original title / translation'))
-    physical_format       = WeakForeignKey('PhysicalFormat', related_name="collections", 
-                                           verbose_name=_('archive format'))
-    
-    physical_items_num    = IntegerField(_('number of components (medium / piece)'))
-    publishing_status     = WeakForeignKey('PublishingStatus', related_name="collections", 
-                                           verbose_name=_('secondary edition'))
     creator               = CharField(_('depositor / contributor'))
-    booklet_author        = CharField(_('author of published notice'))
-    booklet_description   = TextField(_('related documentation'))
+    recording_context     = WeakForeignKey('RecordingContext', related_name="collections", 
+                                           verbose_name=_('recording context'))
+    recorded_from_year    = IntegerField(_('recording year (from)'))
+    recorded_to_year      = IntegerField(_('recording year (until)'))
+    year_published        = IntegerField(_('year published'))
+    
+    # Geographic and cultural informations
+    ## See "countries" and "ethnic_groups" methods below
+
+    # Legal notices
     collector             = CharField(_('recordist'))
-    collector_is_creator  = BooleanField(_('recordist identical to depositor'))
     publisher             = WeakForeignKey('Publisher', related_name="collections", 
                                            verbose_name=_('publisher / status'))     
-    is_published          = BooleanField(_('published'))
-    year_published        = IntegerField(_('year published'))
     publisher_collection  = WeakForeignKey('PublisherCollection', related_name="collections", 
                                             verbose_name=_('publisher collection'))
     publisher_serial      = CharField(_('publisher serial number'))
+    booklet_author        = CharField(_('author of published notice'))
     external_references   = TextField(_('bibliographic references'))
+    doctype_code          = IntegerField(_('document type'))
+    public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES, 
+                                      max_length=16, default="metadata")
+    legal_rights          = WeakForeignKey('LegalRight', related_name="collections", 
+                                           verbose_name=_('legal rights'))
+    
+    # Archiving data
     acquisition_mode      = WeakForeignKey('AcquisitionMode', related_name="collections", 
                                             verbose_name=_('mode of acquisition'))
-    comment               = TextField(_('comment'))
+    cnrs_contributor      = CharField(_('CNRS depositor'))
     metadata_author       = WeakForeignKey('MetadataAuthor', related_name="collections", 
                                            verbose_name=_('record author'))
+    booklet_description   = TextField(_('related documentation'))
+    publishing_status     = WeakForeignKey('PublishingStatus', related_name="collections", 
+                                           verbose_name=_('secondary edition'))
+    alt_ids               = CharField(_('copies'))
+    comment               = TextField(_('comment'))
     metadata_writer       = WeakForeignKey('MetadataWriter', related_name="collections", 
                                            verbose_name=_('record writer'))
-    legal_rights          = WeakForeignKey('LegalRight', related_name="collections", 
-                                           verbose_name=_('legal rights'))
-    alt_ids               = CharField(_('copies'))
-    recorded_from_year    = IntegerField(_('recording year (from)'))
-    recorded_to_year      = IntegerField(_('recording year (until)'))
-    recording_context     = WeakForeignKey('RecordingContext', related_name="collections", 
-                                           verbose_name=_('recording context'))
-    approx_duration       = DurationField(_('approximative duration'))
-    doctype_code          = IntegerField(_('document type'))
     travail               = CharField(_('archiver notes'))
-    state                 = TextField(_('status'))
-    cnrs_contributor      = CharField(_('CNRS depositor'))
     items_done            = CharField(_('items finished'))
-    a_informer_07_03      = CharField(_('a_informer_07_03'))
+    collector_is_creator  = BooleanField(_('recordist identical to depositor'))
+    is_published          = BooleanField(_('published'))
+    
+    # Technical data
+    code                  = CharField(_('code'), unique=True, required=True, validators=[is_valid_collection_code])
+    old_code              = CharField(_('old code'), unique=True, null=True)
+    approx_duration       = DurationField(_('approximative duration'))
+    physical_items_num    = IntegerField(_('number of components (medium / piece)'))
+    physical_format       = WeakForeignKey('PhysicalFormat', related_name="collections", 
+                                           verbose_name=_('archive format'))
     ad_conversion         = WeakForeignKey('AdConversion', related_name='collections', 
                                            verbose_name=_('digitization'))
-    public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES, 
-                                      max_length=16, default="metadata")
-
+    state                 = TextField(_('status'))
+    a_informer_07_03      = CharField(_('a_informer_07_03'))
+    
+    # All
     objects               = MediaCollectionManager()
 
     def __unicode__(self):
-#        if self.title:
-#            return self.title
-
         return self.code
 
     @property
@@ -215,39 +222,51 @@ class MediaItem(MediaResource):
     "Describe an item"
     element_type = 'item'
     PUBLIC_ACCESS_CHOICES = (('none', 'none'), ('metadata', 'metadata'), ('full', 'full'))
-
-    collection            = ForeignKey('MediaCollection', related_name="items", 
-                                       verbose_name=_('collection'))
+    
+    # Main Informations
     title                 = CharField(_('title'))
-    track                 = CharField(_('item number'))
-    old_code              = CharField(_('old code'), unique=True, null=True)
-    code                  = CharField(_('code'), unique=True, null=True)
-    approx_duration       = DurationField(_('approximative duration'))
+    alt_title             = CharField(_('original title / translation'))
+    collector             = CharField(_('recordist'))
+    collection            = ForeignKey('MediaCollection', related_name="items", 
+                                       verbose_name=_('collection'))    
     recorded_from_date    = DateField(_('recording date (from)'))
     recorded_to_date      = DateField(_('recording date (until)'))
+    
+    # Geographic and cultural informations
     location              = WeakForeignKey('Location', verbose_name=_('location'))
     location_comment      = CharField(_('location details'))
+    cultural_area         = CharField(_('cultural area'))
     ethnic_group          = WeakForeignKey('EthnicGroup', related_name="items", 
                                            verbose_name=_('population / social group'))
-    alt_title             = CharField(_('original title / translation'))
-    author                = CharField(_('author / compositor'))
+    context_comment       = TextField(_('comments'))
+    moda_execut           = CharField(_('moda_execut'))
+    
+    # Musical informations
     vernacular_style      = WeakForeignKey('VernacularStyle', related_name="items", 
                                            verbose_name=_('vernacular style'))
-    external_references   = TextField(_('published reference'))
-    moda_execut           = CharField(_('moda_execut'))
-    copied_from_item      = WeakForeignKey('self', related_name="copies", verbose_name=_('copy of'))
-    collector             = CharField(_('recordist'))
-    collector_from_collection = BooleanField(_('recordist as in collection'))
-    cultural_area         = CharField(_('cultural area'))
     generic_style         = WeakForeignKey('GenericStyle', related_name="items", 
                                            verbose_name=_('generic style'))
+    author                = CharField(_('author / compositor'))
+    
+    # General informations
+    comment               = TextField(_('remarks'))
     collector_selection   = CharField(_('recordist selection'))
+    collector_from_collection = BooleanField(_('recordist as in collection'))
+    
+    # Archiving data
+    code                  = CharField(_('code'), unique=True, null=True)
+    old_code              = CharField(_('old code'), unique=True, null=True)
+    track                 = CharField(_('item number'))
     creator_reference     = CharField(_('reference'))
-    context_comment       = TextField(_('comments'))
-    comment               = TextField(_('remarks'))
-    file                  = FileField(_('file'), upload_to='items/%Y/%m/%d', db_column="filename")
+    external_references   = TextField(_('published reference'))
+    copied_from_item      = WeakForeignKey('self', related_name="copies", verbose_name=_('copy of'))
     public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES, max_length=16, default="metadata")
-
+    file                  = FileField(_('file'), upload_to='items/%Y/%m/%d', db_column="filename")
+    
+    # Technical data
+    approx_duration       = DurationField(_('approximative duration'))
+    
+    # All
     objects               = MediaItemManager()
 
     def keywords(self):
index df9c62694bb6b9d51469a0ff3a24aa87622d5298..121453ba8007c01a14a915140afc06fd15b17ad8 100644 (file)
@@ -12,7 +12,7 @@
 
 {% block infos %}
         <div class="infos">
-        <form method="POST" id ="_addCollectionForm" action="">{% csrf_token %}
+        <form method="post" id ="_addCollectionForm" action="">{% csrf_token %}
         <table>
         <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
         {% for field in form %}
index 9182bbc8cd4471974c5120c025f933457653c9c9..42e3601f691438a85e4957e48d680dcb5b5373c8 100644 (file)
@@ -11,7 +11,7 @@
 
 {% block infos %}
      <div class="infos">
-      <form method="POST" id="_editCollectionForm" action="">{% csrf_token %}
+      <form method="post" id="_editCollectionForm" action="">{% csrf_token %}
        <table>
        <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
        {% for field in form %}
index 5c43621fb8076db095b44655c264d21037671614..5998b0fb53335371cb297af8cee68baddf5155cc 100644 (file)
@@ -19,7 +19,7 @@
 {% block content %}
     {% block infos %}
     <div class="infos">
-     <form method="POST" id="_addItemForm" action="" enctype="multipart/form-data">{% csrf_token %}
+     <form method="post" id="_addItemForm" action="" enctype="multipart/form-data">{% csrf_token %}
        <ul>{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</ul>
        <table>
        {% for field in form %}
index a0720a96c9a1375863fb82565c03f6f46662e001..5fee7118642cef9bdc4b51c5c666c2de69e563f5 100644 (file)
@@ -20,7 +20,7 @@
 {% block content %}
   {% block infos %}    
     <div class="infos">
-     <form enctype="multipart/form-data" id="_mediaItemCopyForm" method="POST" action="">{% csrf_token %}
+     <form enctype="multipart/form-data" id="_mediaItemCopyForm" method="post" action="">{% csrf_token %}
      <ul>{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</ul>
       <table>
        {% for field in form %}
index eca8d5ef661869c5c3358d85a9642d388bc1192a..1dc702519be6ee2f0f13107c115ae583b2516af3 100644 (file)
@@ -12,7 +12,7 @@
 
 {% block infos %}    
 <div class="infos">
-    <form enctype="multipart/form-data" id="_editItemForm" method="POST" action="">{% csrf_token %}   
+    <form enctype="multipart/form-data" id="_editItemForm" method="post" action="">{% csrf_token %}   
     <table>
     <tr><td colspan="2">{% for error in form.non_field_errors %}<li class="error">{{ error }}</li>{% endfor %}</td></tr>
     {% for field in form %}
index 3eab3990893c877f037449e5523bf6bc3e7a379b..b357f05134011e3a30c9559da6791a4c12fe4399 100644 (file)
@@ -6,7 +6,7 @@
 {% endblock %}
 
   {% block title %}
-    <img src="images/item.png" style="vertical-align:middle" /> <h1>Item : {{ item }}</h1>
+    <img src="images/item.png" alt="item" style="vertical-align:middle" /> <h1>Item : {{ item }}</h1>
   {% endblock %}
   {% block title_buttons %}
    <a href="{% url telemeta-item-detail item.public_id %}" class="component_icon button icon_cancel">{% trans "Cancel" %}</a>