From: Guillaume Pellerin Date: Wed, 22 Jan 2014 13:14:25 +0000 (+0100) Subject: add import script without copying, add processor release after streaming X-Git-Tag: 1.4.6~8^2~9 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=856645b29c21594bae4ed217b0ab0a4e7a179bc0;p=telemeta.git add import script without copying, add processor release after streaming --- 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 index 00000000..f95a91fe --- /dev/null +++ b/telemeta/management/commands/telemeta-import-items-without-copy.py @@ -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 diff --git a/telemeta/views/core.py b/telemeta/views/core.py index 8f51b1ee..f0821fe6 100644 --- a/telemeta/views/core.py +++ b/telemeta/views/core.py @@ -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