]> git.parisson.com Git - timeside.git/commitdiff
server: add a streaming function to ResultGrapherView
authorGuillaume Pellerin <yomguy@parisson.com>
Tue, 29 Apr 2014 13:26:21 +0000 (15:26 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Tue, 29 Apr 2014 13:26:21 +0000 (15:26 +0200)
timeside/server/models.py
timeside/server/views.py

index 0266d515d9d262ba8af6847d9c28c68ec4a4fa28..a378e62b3100fefe39b5b00475801236858a5626 100644 (file)
@@ -237,6 +237,14 @@ class Task(BaseResource):
                     proc.render(output=result.file.path)
                     result.status_setter(4)
                 
+                if proc.type == 'encoder':
+                    parameters = {}
+                    preset, c = Preset.objects.get_or_create(processor=processor, parameters=unicode(parameters))
+                    result, c = Result.objects.get_or_create(preset=preset, item=item)
+                    result.file = path + str(result.uuid) + '.' + proc.file_extension
+                    proc.render(output=result.file.path)
+                    result.status_setter(4)
+
                 del proc
             
             # except:
index 9cea65c7761316d37e6e5fa7879d807882a59344..141b76f064c0bc5e829161e70704daf75a8fe31d 100644 (file)
@@ -10,6 +10,17 @@ from timeside.server.models import *
 from timeside.server.serializers import *
 
 
+def stream_from_file(file):
+    chunk_size = 0x10000
+    f = open(file, 'r')
+    while True:
+        chunk = f.read(chunk_size)
+        if not len(chunk):
+            f.close()
+            break
+        yield chunk
+
+
 class SelectionViewSet(viewsets.ModelViewSet):
 
     model = Selection
@@ -84,8 +95,8 @@ class ResultAnalyzerView(View):
 
 class ResultGrapherView(View):
 
-    model = Item
+    model = Result
 
     def get(self, request, *args, **kwargs):
         result = Result.objects.get(pk=kwargs['pk'])
-        return HttpResponse(result.file, mimetype='image/png')
+        return HttpResponse(stream_from_file(result.file.path), mimetype='image/png')