Changeset 29e319b


Ignore:
Timestamp:
Jun 7, 2011 12:39:08 PM (4 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:
6950984, bc4fa89
Parents:
fac4a3b
git-author:
yomguy <yomguy@…> (07/06/2011 12:39:08)
git-committer:
yomguy <yomguy@…> (07/06/2011 12:39:08)
Message:

Analyzers are now managed though the DB. Please syncdb before continue.

Location:
telemeta
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • telemeta/cache.py

    r8e62947 r29e319b  
    106106    def write_analyzer_xml(self, data_list, file): 
    107107        path = self.dir + os.sep + file 
     108        data = self.get_analyzer_xml(data_list) 
     109        f = open(path, "w") 
     110        f.write(data) 
     111        f.close() 
     112 
     113    def get_analyzer_xml(self, data_list): 
    108114        doc = xml.dom.minidom.Document() 
    109115        root = doc.createElement('telemeta') 
     
    120126            node.setAttribute('value', str(value)) 
    121127            root.appendChild(node) 
    122         f = open(path, "w") 
    123         f.write(xml.dom.minidom.Document.toprettyxml(doc)) 
    124         f.close() 
     128        return xml.dom.minidom.Document.toprettyxml(doc) 
  • telemeta/models/media.py

    rfac4a3b r29e319b  
    370370    item  = ForeignKey('MediaItem', related_name="analysis", verbose_name=_('item')) 
    371371    analyzer_id = CharField(_('id'), required=True) 
    372     analyzer_name = CharField(_('name')) 
    373     analyzer_value = CharField(_('value')) 
    374     analyzer_unit = CharField(_('unit')) 
     372    name = CharField(_('name')) 
     373    value = CharField(_('value')) 
     374    unit = CharField(_('unit')) 
    375375     
    376376    class Meta(MetaCore): 
    377377        db_table = 'media_analysis' 
     378        ordering = ['name'] 
     379         
     380    def to_dict(self): 
     381        return {'id': self.analyzer_id, 'name': self.name, 'value': self.value, 'unit': self.unit} 
    378382         
    379383         
  • telemeta/web/base.py

    rfac4a3b r29e319b  
    271271         
    272272        previous, next = self.item_previous_next(item) 
    273         analyzers = self.item_analyze(item) 
     273        self.item_analyze(item) 
    274274        playlists = self.get_playlists(request) 
    275275        public_access = self.get_public_access(item.public_access, item.recorded_from_date, item.recorded_to_date) 
     
    277277        return render(request, template, 
    278278                    {'item': item, 'export_formats': formats, 
    279                     'visualizers': graphers, 'visualizer_id': grapher_id,'analysers': analyzers, 
     279                    'visualizers': graphers, 'visualizer_id': grapher_id, 
    280280                    'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True), 
    281281                    'previous' : previous, 'next' : next, 'marker': marker_id, 'playlists' : playlists,  
     
    322322         
    323323        previous, next = self.item_previous_next(item) 
    324         analyzers = self.item_analyze(item) 
     324        self.item_analyze(item) 
    325325         
    326326        if request.method == 'POST': 
     
    392392         
    393393    def item_analyze(self, item): 
    394         public_id = str(item.public_id) 
    395         analyze_file = public_id + '.xml' 
    396          
    397         if self.cache_data.exists(analyze_file): 
    398             analyzers = self.cache_data.read_analyzer_xml(analyze_file) 
     394        analyses = MediaItemAnalysis.objects.filter(item=item) 
     395         
     396        if analyses: 
    399397            if not item.approx_duration: 
    400                 for analyzer in analyzers: 
    401                     if analyzer['id'] == 'duration': 
    402                         value = analyzer['value'] 
     398                for analysis in analyses: 
     399                    if analysis.id == 'duration': 
     400                        value = analysis.value 
    403401                        time = value.split(':') 
    404402                        time[2] = time[2].split('.')[0] 
     
    419417 
    420418                mime_type = decoder.format() 
    421                 analyzers.append({'name': 'Mime type', 'id': 'mime_type', 'unit': '', 'value': mime_type}) 
    422                 analyzers.append({'name': 'Channels', 'id': 'channels', 'unit': '', 'value': decoder.channels()}) 
     419                analysis = MediaItemAnalysis(item=item, name='MimeType', analyzer_id='mime_type', unit='', value=mime_type) 
     420                analysis.save() 
     421                analysis = MediaItemAnalysis(item=item, name='Channels', analyzer_id='channels', unit='', value=decoder.channels()) 
     422                analysis.save() 
    423423                 
    424424                for analyzer in analyzers_sub: 
     
    433433                        value = datetime.timedelta(0,value) 
    434434                     
    435                     analyzers.append({'name':analyzer.name(), 
    436                                       'id':analyzer.id(), 
    437                                       'unit':analyzer.unit(), 
    438                                       'value':str(value)}) 
    439                    
    440                 self.cache_data.write_analyzer_xml(analyzers, analyze_file) 
    441              
    442         return analyzers 
    443      
     435                    analysis = MediaItemAnalysis(item=item, name=analyzer.name(), analyzer_id=analyzer.id(),  
     436                                                 unit=analyzer.unit(), value=str(value)) 
     437                    analysis.save() 
     438         
    444439    def item_analyze_xml(self, request, public_id): 
    445440        item = MediaItem.objects.get(public_id=public_id) 
    446         analyze_file = public_id + '.xml' 
    447         if not self.cache_data.exists(analyze_file): 
    448             self.item_analyze(item) 
     441        analyses = MediaItemAnalysis.objects.filter(item=item) 
     442        analyzers = [] 
     443        for analysis in analyses: 
     444            analyzers.append(analysis.to_dict()) 
    449445        mime_type = 'text/xml' 
    450         response = HttpResponse(self.cache_data.read_stream_bin(analyze_file), mimetype=mime_type) 
     446        response = HttpResponse(self.cache_data.get_analyzer_xml(analyzers), mimetype=mime_type) 
    451447        response['Content-Disposition'] = 'attachment; filename='+public_id+'.xml'         
    452448        return response         
Note: See TracChangeset for help on using the changeset viewer.