]> git.parisson.com Git - telemeta.git/commitdiff
add import script without copying, add processor release after streaming
authorGuillaume Pellerin <yomguy@parisson.com>
Wed, 22 Jan 2014 13:14:25 +0000 (14:14 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Wed, 22 Jan 2014 13:14:25 +0000 (14:14 +0100)
telemeta/management/commands/telemeta-import-items-without-copy.py [new file with mode: 0644]
telemeta/views/core.py

diff --git a/telemeta/management/commands/telemeta-import-items-without-copy.py b/telemeta/management/commands/telemeta-import-items-without-copy.py
new file mode 100644 (file)
index 0000000..f95a91f
--- /dev/null
@@ -0,0 +1,44 @@
+from optparse import make_option
+from django.conf import settings
+from django.core.management.base import BaseCommand, CommandError
+from django.core.files.base import ContentFile
+from telemeta.models import *
+from telemeta.util.unaccent import unaccent
+import os, sys
+
+
+class Command(BaseCommand):
+    help = "import media files from a directory in the media directory into a collection (no file copy)"
+    args = "collection_code media_dir"
+
+    def handle(self, *args, **options):
+        collection_code = args[-2]
+        media_dir = args[-1]
+
+        if not media_dir in settings.MEDIA_ROOT:
+            sys.exit('This directory is not in the MEDIA_ROOT directory')
+
+        collections = MediaCollection.objects.filter(code=collection_code)
+        if not collections:
+            collection = MediaCollection(code=collection_code, title=collection_code)
+            collection.public_access = 'full'
+            collection.save()
+            print 'collection created: ' + collection_code
+        else:
+            collection = collections[0]
+            print 'using collection: ' + collection.code
+
+        for root, dirs, files in os.walk(media_dir):
+            for filename in files:
+                path = root + os.sep + filename
+                name, ext = os.path.splitext(filename)
+                items = MediaItem.objects.filter(code=name)
+                if not items:
+                    item = MediaItem(collection=collection, code=name)
+                    item.title = name
+                    item.file.path = path
+                    item.public_access = 'full'
+                    item.save()
+                    print 'item created: ' + item.code
+                else:
+                    print 'item already exists: ' + items[0].code
index 8f51b1ee8dc1665fad196d174d400534c5249351..f0821fe61016c46fd3c0265ff119f5695c5e850f 100644 (file)
@@ -71,6 +71,7 @@ from django.contrib.syndication.views import Feed
 from django.core.servers.basehttp import FileWrapper
 from django.core.urlresolvers import reverse, reverse_lazy
 from django.contrib.contenttypes.models import ContentType
+from django.views.decorators.http import condition
 
 from telemeta.models import *
 import telemeta.models
@@ -130,6 +131,8 @@ def stream_from_processor(decoder, proc, flag, metadata=None):
         yield proc.chunk
     flag.value = True
     flag.save()
+    decoder.release()
+    proc.release()
 
 def stream_from_file(file):
     chunk_size = 0x100000