From fdfee51b25979bc7ccda5ab43fce18185549f612 Mon Sep 17 00:00:00 2001 From: yomguy Date: Mon, 16 May 2011 17:55:57 +0200 Subject: [PATCH] reorder models like in templates for edit mode, fix some alt images, go to 0.9 ! --- INSTALL | 2 +- setup.py | 7 +- telemeta/__init__.py | 4 +- telemeta/models/media.py | 121 ++++++++++-------- .../telemeta_default/collection_add.html | 2 +- .../telemeta_default/collection_edit.html | 2 +- .../telemeta_default/mediaitem_add.html | 2 +- .../telemeta_default/mediaitem_copy.html | 2 +- .../telemeta_default/mediaitem_edit.html | 2 +- .../mediaitem_keywords_edit.html | 2 +- 10 files changed, 84 insertions(+), 62 deletions(-) diff --git a/INSTALL b/INSTALL index f733097f..0a01a965 100644 --- 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:: diff --git a/setup.py b/setup.py index ca12b0ce..d0510d2c 100644 --- 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 diff --git a/telemeta/__init__.py b/telemeta/__init__.py index d83fcaca..aed0d18b 100644 --- a/telemeta/__init__.py +++ b/telemeta/__init__.py @@ -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) + 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 * - diff --git a/telemeta/models/media.py b/telemeta/models/media.py index 29aeace1..4138c068 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -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): diff --git a/telemeta/templates/telemeta_default/collection_add.html b/telemeta/templates/telemeta_default/collection_add.html index df9c6269..121453ba 100644 --- a/telemeta/templates/telemeta_default/collection_add.html +++ b/telemeta/templates/telemeta_default/collection_add.html @@ -12,7 +12,7 @@ {% block infos %}
-
{% csrf_token %} + {% csrf_token %} {% for field in form %} diff --git a/telemeta/templates/telemeta_default/collection_edit.html b/telemeta/templates/telemeta_default/collection_edit.html index 9182bbc8..42e3601f 100644 --- a/telemeta/templates/telemeta_default/collection_edit.html +++ b/telemeta/templates/telemeta_default/collection_edit.html @@ -11,7 +11,7 @@ {% block infos %}
- {% csrf_token %} + {% csrf_token %}
{% for error in form.non_field_errors %}
  • {{ error }}
  • {% endfor %}
    {% for field in form %} diff --git a/telemeta/templates/telemeta_default/mediaitem_add.html b/telemeta/templates/telemeta_default/mediaitem_add.html index 5c43621f..5998b0fb 100644 --- a/telemeta/templates/telemeta_default/mediaitem_add.html +++ b/telemeta/templates/telemeta_default/mediaitem_add.html @@ -19,7 +19,7 @@ {% block content %} {% block infos %}
    - {% csrf_token %} + {% csrf_token %}
      {% for error in form.non_field_errors %}
    • {{ error }}
    • {% endfor %}
    {% for error in form.non_field_errors %}
  • {{ error }}
  • {% endfor %}
    {% for field in form %} diff --git a/telemeta/templates/telemeta_default/mediaitem_copy.html b/telemeta/templates/telemeta_default/mediaitem_copy.html index a0720a96..5fee7118 100644 --- a/telemeta/templates/telemeta_default/mediaitem_copy.html +++ b/telemeta/templates/telemeta_default/mediaitem_copy.html @@ -20,7 +20,7 @@ {% block content %} {% block infos %}
    - {% csrf_token %} + {% csrf_token %}
      {% for error in form.non_field_errors %}
    • {{ error }}
    • {% endfor %}
    {% for field in form %} diff --git a/telemeta/templates/telemeta_default/mediaitem_edit.html b/telemeta/templates/telemeta_default/mediaitem_edit.html index eca8d5ef..1dc70251 100644 --- a/telemeta/templates/telemeta_default/mediaitem_edit.html +++ b/telemeta/templates/telemeta_default/mediaitem_edit.html @@ -12,7 +12,7 @@ {% block infos %}
    - {% csrf_token %} + {% csrf_token %}
    {% for field in form %} diff --git a/telemeta/templates/telemeta_default/mediaitem_keywords_edit.html b/telemeta/templates/telemeta_default/mediaitem_keywords_edit.html index 3eab3990..b357f051 100644 --- a/telemeta/templates/telemeta_default/mediaitem_keywords_edit.html +++ b/telemeta/templates/telemeta_default/mediaitem_keywords_edit.html @@ -6,7 +6,7 @@ {% endblock %} {% block title %} -

    Item : {{ item }}

    + item

    Item : {{ item }}

    {% endblock %} {% block title_buttons %} {% trans "Cancel" %} -- 2.39.5
    {% for error in form.non_field_errors %}
  • {{ error }}
  • {% endfor %}