Ignore:
Timestamp:
Dec 7, 2011 3:32:19 PM (3 years ago)
Author:
yomguy <yomguy@…>
Branches:
master, crem, crem2, crem3, dev, dev2, diadems, dj1.6, feature/breadcrumbs, feature/ts-0.5, feature/ts-0.5.4, feature/writecache, forma, generic, instru_search, lam, lam2, mapsv3, merge, nlivemulti, prob, production, release/1.4.4, sabiod, search, security, server, social, storage, telecaster, test, video
Children:
06ce8dd
Parents:
40aa64b
git-author:
yomguy <yomguy@…> (07/12/2011 15:32:19)
git-committer:
yomguy <yomguy@…> (07/12/2011 15:32:19)
Message:

transcode flag only from source streaming, cleanup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • telemeta/models/media.py

    r33d177a rd511f9f  
    5151from django.db.models.fields import URLField 
    5252 
    53          
     53 
    5454collection_published_code_regex   = '[A-Za-z0-9._-]*' 
    5555collection_unpublished_code_regex = '[A-Za-z0-9._-]*' 
    56 collection_code_regex             = '(?:%s|%s)' % (collection_published_code_regex,  
     56collection_code_regex             = '(?:%s|%s)' % (collection_published_code_regex, 
    5757                                                    collection_unpublished_code_regex) 
    5858 
     
    7777    def set_revision(self, user): 
    7878        "Save a media object and add a revision" 
    79         Revision.touch(self, user)     
     79        Revision.touch(self, user) 
    8080 
    8181    def get_revision(self): 
     
    8787class MediaRelated(MediaResource): 
    8888    "Related media" 
    89      
     89 
    9090    element_type = 'media' 
    91      
     91 
    9292    title           = CharField(_('title')) 
    9393    date            = DateTimeField(_('date'), auto_now=True) 
     
    9797    credits         = CharField(_('credits')) 
    9898    file            = FileField(_('file'), upload_to='items/%Y/%m/%d', db_column="filename") 
    99      
     99 
    100100    def is_image(self): 
    101101        is_url_image = False 
     
    106106                    is_url_image = True 
    107107        return 'image' in self.mime_type or is_url_image 
    108          
     108 
    109109    def save(self, force_insert=False, force_update=False): 
    110110        super(MediaRelated, self).save(force_insert, force_update) 
    111          
     111 
    112112    def set_mime_type(self): 
    113113        if self.file: 
    114114            self.mime_type = mimetypes.guess_type(self.file.path)[0] 
    115      
     115 
    116116    def __unicode__(self): 
    117117        if self.title and not re.match('^ *N *$', self.title): 
     
    120120            title = unicode(self.item) 
    121121        return title 
    122      
     122 
    123123    class Meta: 
    124124        abstract = True 
     
    127127class MediaCorpus(MediaResource): 
    128128    "Describe a corpus of collections" 
    129      
     129 
    130130    element_type = 'corpus' 
    131131 
     
    135135    description           = CharField(_('description')) 
    136136    code                  = CharField(_('code'), unique=True, required=True) 
    137     public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES,  
     137    public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES, 
    138138                                      max_length=16, default="metadata") 
    139                                        
     139 
    140140    def __unicode__(self): 
    141141        return self.code 
     
    147147    def save(self, force_insert=False, force_update=False, user=None, code=None): 
    148148        super(MediaCorpus, self).save(force_insert, force_update) 
    149          
     149 
    150150    class Meta(MetaCore): 
    151151        db_table = 'media_corpus' 
     
    155155class MediaCorpusCollectionRelation(ModelCore): 
    156156    "Relations between Corpus and Collections" 
    157      
    158     collection        = ForeignKey('MediaCollection', related_name="parent_relation",  
     157 
     158    collection        = ForeignKey('MediaCollection', related_name="parent_relation", 
    159159                                   verbose_name=_('collection')) 
    160     corpus            = ForeignKey('MediaCorpus', related_name="child_relation",  
     160    corpus            = ForeignKey('MediaCorpus', related_name="child_relation", 
    161161                                   verbose_name=_('corpus')) 
    162162 
     
    164164        db_table = 'media_corpus_collection_relations' 
    165165        unique_together = (('collection', 'corpus'),) 
    166      
     166 
    167167    def __unicode__(self): 
    168168        sep = ' > ' 
    169169        return self.corpus.code + sep + self.collection.code 
    170170 
    171                                                          
     171 
    172172class MediaCollection(MediaResource): 
    173173    "Describe a collection of items" 
    174      
     174 
    175175    element_type = 'collection' 
    176176 
     
    180180        if not re.match(regex, value): 
    181181            raise ValidationError(u'%s is not a valid collection code' % value) 
    182      
     182 
    183183    # General informations 
    184184    reference             = CharField(_('reference'), unique=True, null=True) 
     
    186186    alt_title             = CharField(_('original title / translation')) 
    187187    creator               = CharField(_('depositor / contributor')) 
    188     recording_context     = WeakForeignKey('RecordingContext', related_name="collections",  
     188    recording_context     = WeakForeignKey('RecordingContext', related_name="collections", 
    189189                                           verbose_name=_('recording context')) 
    190190    recorded_from_year    = IntegerField(_('recording year (from)')) 
    191191    recorded_to_year      = IntegerField(_('recording year (until)')) 
    192192    year_published        = IntegerField(_('year published')) 
    193      
     193 
    194194    # Geographic and cultural informations 
    195195    ## See "countries" and "ethnic_groups" methods below 
     
    197197    # Legal notices 
    198198    collector             = CharField(_('recordist')) 
    199     publisher             = WeakForeignKey('Publisher', related_name="collections",  
    200                                            verbose_name=_('publisher / status'))      
    201     publisher_collection  = WeakForeignKey('PublisherCollection', related_name="collections",  
     199    publisher             = WeakForeignKey('Publisher', related_name="collections", 
     200                                           verbose_name=_('publisher / status')) 
     201    publisher_collection  = WeakForeignKey('PublisherCollection', related_name="collections", 
    202202                                            verbose_name=_('publisher collection')) 
    203203    publisher_serial      = CharField(_('publisher serial number')) 
     
    205205    external_references   = TextField(_('bibliographic references')) 
    206206    doctype_code          = IntegerField(_('document type')) 
    207     public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES,  
     207    public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES, 
    208208                                      max_length=16, default="metadata") 
    209     legal_rights          = WeakForeignKey('LegalRight', related_name="collections",  
     209    legal_rights          = WeakForeignKey('LegalRight', related_name="collections", 
    210210                                           verbose_name=_('legal rights')) 
    211      
     211 
    212212    # Archiving data 
    213     acquisition_mode      = WeakForeignKey('AcquisitionMode', related_name="collections",  
     213    acquisition_mode      = WeakForeignKey('AcquisitionMode', related_name="collections", 
    214214                                            verbose_name=_('mode of acquisition')) 
    215215    cnrs_contributor      = CharField(_('CNRS depositor')) 
    216     metadata_author       = WeakForeignKey('MetadataAuthor', related_name="collections",  
     216    metadata_author       = WeakForeignKey('MetadataAuthor', related_name="collections", 
    217217                                           verbose_name=_('record author')) 
    218218    booklet_description   = TextField(_('related documentation')) 
    219     publishing_status     = WeakForeignKey('PublishingStatus', related_name="collections",  
     219    publishing_status     = WeakForeignKey('PublishingStatus', related_name="collections", 
    220220                                           verbose_name=_('secondary edition')) 
    221221    alt_ids               = CharField(_('copies')) 
    222222    comment               = TextField(_('comment')) 
    223     metadata_writer       = WeakForeignKey('MetadataWriter', related_name="collections",  
     223    metadata_writer       = WeakForeignKey('MetadataWriter', related_name="collections", 
    224224                                           verbose_name=_('record writer')) 
    225225    travail               = CharField(_('archiver notes')) 
     
    228228    is_published          = BooleanField(_('published')) 
    229229    conservation_site     = CharField(_('conservation site')) 
    230      
     230 
    231231    # Technical data 
    232232    code                  = CharField(_('code'), unique=True, required=True, validators=[is_valid_collection_code]) 
     
    234234    approx_duration       = DurationField(_('approximative duration')) 
    235235    physical_items_num    = IntegerField(_('number of components (medium / piece)')) 
    236     physical_format       = WeakForeignKey('PhysicalFormat', related_name="collections",  
     236    physical_format       = WeakForeignKey('PhysicalFormat', related_name="collections", 
    237237                                           verbose_name=_('archive format')) 
    238     ad_conversion         = WeakForeignKey('AdConversion', related_name='collections',  
     238    ad_conversion         = WeakForeignKey('AdConversion', related_name='collections', 
    239239                                           verbose_name=_('digitization')) 
    240240    state                 = TextField(_('status')) 
    241241    a_informer_07_03      = CharField(_('a_informer_07_03')) 
    242      
     242 
    243243    # All 
    244244    objects               = MediaCollectionManager() 
    245          
     245 
    246246    def __unicode__(self): 
    247247        return self.code 
     
    250250    def public_id(self): 
    251251        return self.code 
    252      
     252 
    253253    @property 
    254254    def has_mediafile(self): 
     
    259259                return True 
    260260        return False 
    261      
     261 
    262262    def __name_cmp(self, obj1, obj2): 
    263263        return unaccent_icmp(obj1.name, obj2.name) 
     
    270270                if not country in countries: 
    271271                    countries.append(country) 
    272              
    273         countries.sort(self.__name_cmp)                 
     272 
     273        countries.sort(self.__name_cmp) 
    274274 
    275275        return countries 
     
    285285 
    286286        cmp = lambda a, b: unaccent_icmp(a.value, b.value) 
    287         groups.sort(cmp)                 
     287        groups.sort(cmp) 
    288288 
    289289        return groups 
     
    295295            duration += item.computed_duration() 
    296296        return duration 
    297          
    298     computed_duration.verbose_name = _('computed duration')         
    299              
     297 
     298    computed_duration.verbose_name = _('computed duration') 
     299 
    300300    def save(self, force_insert=False, force_update=False, user=None, code=None): 
    301301        super(MediaCollection, self).save(force_insert, force_update) 
    302          
     302 
    303303    class Meta(MetaCore): 
    304304        db_table = 'media_collections' 
     
    308308class MediaCollectionRelated(MediaRelated): 
    309309    "Collection related media" 
    310      
     310 
    311311    collection      = ForeignKey('MediaCollection', related_name="related", verbose_name=_('collection')) 
    312      
     312 
    313313    class Meta(MetaCore): 
    314314        db_table = 'media_collection_related' 
    315315 
    316          
     316 
    317317class MediaItem(MediaResource): 
    318318    "Describe an item" 
    319      
     319 
    320320    element_type = 'item' 
    321      
     321 
    322322    # Main Informations 
    323323    title                 = CharField(_('title')) 
    324324    alt_title             = CharField(_('original title / translation')) 
    325325    collector             = CharField(_('recordist')) 
    326     collection            = ForeignKey('MediaCollection', related_name="items",  
    327                                        verbose_name=_('collection'))     
     326    collection            = ForeignKey('MediaCollection', related_name="items", 
     327                                       verbose_name=_('collection')) 
    328328    recorded_from_date    = DateField(_('recording date (from)')) 
    329329    recorded_to_date      = DateField(_('recording date (until)')) 
    330      
     330 
    331331    # Geographic and cultural informations 
    332332    location              = WeakForeignKey('Location', verbose_name=_('location')) 
    333333    location_comment      = CharField(_('location details')) 
    334334    cultural_area         = CharField(_('cultural area')) 
    335     ethnic_group          = WeakForeignKey('EthnicGroup', related_name="items",  
     335    ethnic_group          = WeakForeignKey('EthnicGroup', related_name="items", 
    336336                                           verbose_name=_('population / social group')) 
    337337    language              = CharField(_('language')) 
    338338    context_comment       = TextField(_('comments / ethnographic context')) 
    339339    moda_execut           = CharField(_('moda_execut')) 
    340      
     340 
    341341    # Musical informations 
    342     vernacular_style      = WeakForeignKey('VernacularStyle', related_name="items",  
     342    vernacular_style      = WeakForeignKey('VernacularStyle', related_name="items", 
    343343                                           verbose_name=_('vernacular style')) 
    344     generic_style         = WeakForeignKey('GenericStyle', related_name="items",  
     344    generic_style         = WeakForeignKey('GenericStyle', related_name="items", 
    345345                                           verbose_name=_('generic style')) 
    346346    author                = CharField(_('author / compositor')) 
    347      
     347 
    348348    # General informations 
    349349    comment               = TextField(_('remarks')) 
    350350    collector_selection   = CharField(_('recordist selection')) 
    351351    collector_from_collection = BooleanField(_('recordist as in collection')) 
    352      
     352 
    353353    # Archiving data 
    354354    code                  = CharField(_('code'), unique=True, blank=True) 
     
    360360    public_access         = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES, max_length=16, default="metadata") 
    361361    file                  = FileField(_('file'), upload_to='items/%Y/%m/%d', db_column="filename") 
    362      
     362 
    363363    # Technical data 
    364364    approx_duration       = DurationField(_('approximative duration')) 
    365      
     365 
    366366    # All 
    367367    objects               = MediaItemManager() 
     
    379379    class Meta(MetaCore): 
    380380        db_table = 'media_items' 
    381         permissions = (("can_play_all_items", "Can play all media items"),  
     381        permissions = (("can_play_all_items", "Can play all media items"), 
    382382                       ("can_download_all_items", "Can download all media items"), ) 
    383383 
     
    396396    def clean(self): 
    397397        if self.code and not self.is_valid_code(self.code): 
    398             raise ValidationError("%s is not a valid item code for collection %s"  
     398            raise ValidationError("%s is not a valid item code for collection %s" 
    399399                                        % (self.code, self.collection.code)) 
    400                                          
     400 
    401401    def save(self, force_insert=False, force_update=False): 
    402402        super(MediaItem, self).save(force_insert, force_update) 
     
    406406        return self.approx_duration 
    407407 
    408     computed_duration.verbose_name = _('computed duration')         
     408    computed_duration.verbose_name = _('computed duration') 
    409409 
    410410    def __unicode__(self): 
     
    420420class MediaItemRelated(MediaRelated): 
    421421    "Item related media" 
    422      
     422 
    423423    item            = ForeignKey('MediaItem', related_name="related", verbose_name=_('item')) 
    424      
     424 
    425425    class Meta(MetaCore): 
    426426        db_table = 'media_item_related' 
     
    439439class MediaItemPerformance(ModelCore): 
    440440    "Item performance" 
    441     media_item      = ForeignKey('MediaItem', related_name="performances",  
     441    media_item      = ForeignKey('MediaItem', related_name="performances", 
    442442                                 verbose_name=_('item')) 
    443     instrument      = WeakForeignKey('Instrument', related_name="performances",  
     443    instrument      = WeakForeignKey('Instrument', related_name="performances", 
    444444                                     verbose_name=_('composition')) 
    445     alias           = WeakForeignKey('InstrumentAlias', related_name="performances",  
     445    alias           = WeakForeignKey('InstrumentAlias', related_name="performances", 
    446446                                     verbose_name=_('vernacular name')) 
    447447    instruments_num = CharField(_('number')) 
     
    455455    "Item analysis result computed by TimeSide" 
    456456 
    457     element_type = 'analysis'     
     457    element_type = 'analysis' 
    458458    item  = ForeignKey('MediaItem', related_name="analysis", verbose_name=_('item')) 
    459459    analyzer_id = CharField(_('id'), required=True) 
     
    461461    value = CharField(_('value')) 
    462462    unit = CharField(_('unit')) 
    463      
     463 
    464464    class Meta(MetaCore): 
    465465        db_table = 'media_analysis' 
    466466        ordering = ['name'] 
    467          
     467 
    468468    def to_dict(self): 
    469469        if self.analyzer_id == 'duration': 
     
    472472                self.value = '.'.join([value[0], value[1][:2]]) 
    473473        return {'id': self.analyzer_id, 'name': self.name, 'value': self.value, 'unit': self.unit} 
    474          
    475          
     474 
     475 
    476476class MediaPart(MediaResource): 
    477477    "Describe an item part" 
     
    481481    start = FloatField(_('start'), required=True) 
    482482    end   = FloatField(_('end'), required=True) 
    483      
     483 
    484484    class Meta(MetaCore): 
    485485        db_table = 'media_parts' 
     
    501501    def __unicode__(self): 
    502502        return self.title 
    503          
     503 
    504504 
    505505class PlaylistResource(ModelCore): 
     
    514514    class Meta(MetaCore): 
    515515        db_table = 'playlist_resources' 
    516          
    517          
     516 
     517 
    518518class MediaItemMarker(MediaResource): 
    519519    "2D marker object : text value vs. time" 
    520      
     520 
    521521    element_type = 'marker' 
    522      
     522 
    523523    item            = ForeignKey('MediaItem', related_name="markers", verbose_name=_('item')) 
    524524    public_id       = CharField(_('public_id'), required=True) 
     
    528528    description     = TextField(_('description')) 
    529529    author          = ForeignKey(User, related_name="markers", verbose_name=_('author')) 
    530      
     530 
    531531    class Meta(MetaCore): 
    532532        db_table = 'media_markers' 
     
    541541class MediaItemTranscodingFlag(ModelCore): 
    542542    "Item flag to know if the MediaItem has been transcoded to a given format" 
    543      
     543 
    544544    item            = ForeignKey('MediaItem', related_name="transcoding", verbose_name=_('item')) 
    545545    mime_type       = CharField(_('mime_type'), required=True) 
    546546    date            = DateTimeField(_('date'), auto_now=True) 
    547547    value           = BooleanField(_('transcoded')) 
    548      
     548 
    549549    class Meta(MetaCore): 
    550550        db_table = 'media_transcoding' 
    551          
    552          
     551 
     552 
    553553class Search(ModelCore): 
    554554    "Keywork search" 
    555      
     555 
    556556    element_type = 'search' 
    557      
     557 
    558558    username = ForeignKey(User, related_name="searches", db_column="username") 
    559559    keywords = CharField(_('keywords'), required=True) 
     
    568568 
    569569class DublinCoreToFormatMetadata(object): 
    570     """ a mapping class to get item DublinCore metadata dictionaries  
     570    """ a mapping class to get item DublinCore metadata dictionaries 
    571571    in various audio metadata format (MP3, OGG, etc...)""" 
    572      
     572 
    573573    #FIXME: should be given by timeside 
    574     unavailable_extensions = ['wav', 'aiff', 'aif'] 
    575      
    576     metadata_mapping = {  
     574    unavailable_extensions = ['wav', 'aiff', 'aif', 'flac'] 
     575 
     576    metadata_mapping = { 
    577577                    'mp3' : { 
    578578                         'title': 'TIT2', #title2 
     
    585585                         'date': 'TDRC', #year 
    586586#                         'coverage': 'COMM',  #comment 
    587                          },  
     587                         }, 
    588588                    'ogg': { 
    589589                        'creator': 'artist', 
    590                         'relation': 'album',  
    591                         'all': 'all',  
    592                        },  
     590                        'relation': 'album', 
     591                        'all': 'all', 
     592                       }, 
    593593                    'flac': { 
    594594                        'creator': 'artist', 
    595                         'relation': 'album',  
    596                         'all': 'all',  
    597                        },  
     595                        'relation': 'album', 
     596                        'all': 'all', 
     597                       }, 
    598598                    'wav': { 
    599599                        'creator': 'artist', 
    600                         'relation': 'album',  
    601                         'all': 'all',  
    602                        },  
     600                        'relation': 'album', 
     601                        'all': 'all', 
     602                       }, 
    603603                    } 
    604      
     604 
    605605    def __init__(self, format): 
    606606        self.format = format 
    607          
     607 
    608608    def get_metadata(self, dc_metadata): 
    609609        mapp = self.metadata_mapping[self.format] 
Note: See TracChangeset for help on using the changeset viewer.