From: Guillaume Pellerin Date: Mon, 20 Jan 2014 22:08:33 +0000 (+0100) Subject: Merge branch 'dev' into crem2 X-Git-Tag: 1.5.0rc3~8 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=6e8f97d6596467e2ebd3ca18ba6e57c675bb4d97;p=telemeta.git Merge branch 'dev' into crem2 Conflicts: example/sandbox/settings.py setup.py telemeta/views/collection.py telemeta/views/core.py telemeta/views/item.py --- 6e8f97d6596467e2ebd3ca18ba6e57c675bb4d97 diff --cc example/sandbox/settings.py index f50a60fc,24d6552b..5bd692c6 --- a/example/sandbox/settings.py +++ b/example/sandbox/settings.py @@@ -162,5 -165,4 +165,3 @@@ LOGIN_REDIRECT_URL = reverse_lazy('tele EMAIL_HOST = 'localhost' DEFAULT_FROM_EMAIL = 'webmaster@parisson.com' -- - FILE_UPLOAD_TEMP_DIR = '/tmp' diff --cc telemeta/urls.py index bcbf6a15,f91b992f..f17310a3 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@@ -360,6 -360,10 +360,10 @@@ urlpatterns = patterns('' 'document_root': settings.TELEMETA_CACHE_DIR,}), url(r'^', include('jqchat.urls')), - ) + ) + if settings.DEBUG: + import debug_toolbar + urlpatterns += patterns('', - url(r'^__debug__/', include(debug_toolbar.urls)),) ++ url(r'^__debug__/', include(debug_toolbar.urls)),) diff --cc telemeta/views/collection.py index c40ccb12,a0aa61cb..1ba08754 --- a/telemeta/views/collection.py +++ b/telemeta/views/collection.py @@@ -167,7 -167,40 +167,37 @@@ class CollectionPackageView(View) def get_object(self): return MediaCollection.objects.get(public_id=self.kwargs['public_id']) - def get(self, request, *args, **kwargs): + def get_stream(self, request, *args, **kwargs): + """ + Stream a ZIP file of collection data + without loading the whole file into memory. + Based on ZipStream + """ + from telemeta.views import MarkerView + from telemeta.backup import CollectionSerializer + import json + import zipstream + + z = zipstream.ZipFile() + collection = MediaCollection.objects.get(public_id=public_id) + z.write(collection.code) + + for item in collection.items.all(): + z.write(item.file.path) + + try: + from django.http import StreamingHttpResponse + response = StreamingHttpResponse(z, content_type='application/zip') + except: + response = HttpResponse(z, content_type='application/zip') + + response['Content-Disposition'] = "attachment; filename=%s.%s" % \ + (item.code, 'zip') + return response + + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super(CollectionPackageView, self).dispatch(*args, **kwargs) - - - """ Create a ZIP file on disk and transmit it in chunks of 8KB, without loading the whole file into memory. A similar approach can diff --cc telemeta/views/item.py index c7e9c49d,5a9bb215..f2f0cbe6 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@@ -347,7 -347,8 +348,8 @@@ class ItemView(object) def item_analyze(self, item): analyses = MediaItemAnalysis.objects.filter(item=item) + mime_type = '' - + if analyses: for analysis in analyses: if not item.approx_duration and analysis.analyzer_id == 'duration': @@@ -395,20 -417,21 +397,23 @@@ analyzer_id='duration', unit='s', value=unicode(datetime.timedelta(0,decoder.input_duration))) analysis.save() - + for analyzer in analyzers_sub: - value = analyzer.result() - analysis = MediaItemAnalysis(item=item, name=analyzer.name(), - analyzer_id=analyzer.id(), - unit=analyzer.unit(), value=str(value)) - analysis.save() + for key in analyzer.results.keys(): + result = analyzer.results[key] + value = result.data_object.value + if value.shape[0] == 1: + value = value[0] + analysis = MediaItemAnalysis(item=item, name=result.name, + analyzer_id=result.id, unit=result.unit, value = unicode(value)) + analysis.save() -# FIXME: parse tags on first load + analyses = MediaItemAnalysis.objects.filter(item=item) + +# TODO: parse tags on first load # tags = decoder.tags - return mime_type + return analyses def item_analyze_xml(self, request, public_id): item = MediaItem.objects.get(public_id=public_id)