From 79a772d49e7139851cc066ba613cb806616b92c2 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Tue, 28 Apr 2015 11:22:36 +0200 Subject: [PATCH] add auto file path detection while import --- .../telemeta-import-collection-from-dir.py | 33 ++++++++++--------- ... telemeta-import-collections-from-crem.py} | 26 +++++++-------- 2 files changed, 31 insertions(+), 28 deletions(-) rename telemeta/management/commands/{telemeta-import-collection-from-crem.py => telemeta-import-collections-from-crem.py} (94%) diff --git a/telemeta/management/commands/telemeta-import-collection-from-dir.py b/telemeta/management/commands/telemeta-import-collection-from-dir.py index 38b3e774..dda77a00 100644 --- a/telemeta/management/commands/telemeta-import-collection-from-dir.py +++ b/telemeta/management/commands/telemeta-import-collection-from-dir.py @@ -63,20 +63,22 @@ class Command(BaseCommand): filename = media.split(os.sep)[-1] if os.path.exists(media): if not item.file or self.force: - if not self.dry_run: - if not self.media_root in self.source_dir: - print "file not in MEDIA_ROOT, copying..." - f = open(media, 'r') + if not self.media_root in self.source_dir: + print "file not in MEDIA_ROOT, copying..." + f = open(media, 'r') + if not self.dry_run: file_content = ContentFile(f.read()) item.file.save(filename, file_content) - f.close() - else: - print "file in MEDIA_ROOT, linking..." - path = media[len(self.media_root)+1:] + item.save() + f.close() + else: + print "file in MEDIA_ROOT, linking..." + path = media[len(self.media_root)+1:] + if not self.dry_run: item.file = path - item.save() - if self.user: - item.set_revision(self.user) + item.save() + if self.user: + item.set_revision(self.user) def handle(self, *args, **options): self.source_dir = os.path.abspath(options.get('source_dir')) @@ -84,18 +86,19 @@ class Command(BaseCommand): self.collection_title = options.get('collection_title') self.dry_run = options.get('dry-run') self.user = None + self.pattern = options.get('pattern') + self.force = options.get('force') + users = User.objects.filter(username=options.get('username')) if users: self.user = users[0] - collections = MediaCollection.objects.filter(code=self.collection_code) - if not collections: - collection = MediaCollection(code=self.collection_code, title=self.collection_code) + collection, c = MediaCollection.objects.get_or_create(code=self.collection_code, title=self.collection_code) + if c: collection.public_access = 'full' collection.save() print 'Collection created: ' + self.collection_code else: - collection = collections[0] print 'Using collection: ' + collection.code for root, dirs, files in os.walk(self.source_dir): diff --git a/telemeta/management/commands/telemeta-import-collection-from-crem.py b/telemeta/management/commands/telemeta-import-collections-from-crem.py similarity index 94% rename from telemeta/management/commands/telemeta-import-collection-from-crem.py rename to telemeta/management/commands/telemeta-import-collections-from-crem.py index f73cd402..510e3bb3 100644 --- a/telemeta/management/commands/telemeta-import-collection-from-crem.py +++ b/telemeta/management/commands/telemeta-import-collections-from-crem.py @@ -80,25 +80,26 @@ class Command(BaseCommand): help='define the pattern'), ) - def write_file(self, item, media): filename = media.split(os.sep)[-1] if os.path.exists(media): if not item.file or self.force: - if not self.dry_run: - if not self.media_root in self.source_dir: - f = open(media, 'r') + if not self.media_root in self.source_dir: + print "file not in MEDIA_ROOT, copying..." + f = open(media, 'r') + if not self.dry_run: file_content = ContentFile(f.read()) item.file.save(filename, file_content) - f.close() - else: - path = media[len(self.media_root)+1:] + item.save() + f.close() + else: + print "file in MEDIA_ROOT, linking..." + path = media[len(self.media_root)+1:] + if not self.dry_run: item.file = path - item.save() + item.save() + if self.user: item.set_revision(self.user) - else: - msg = item.code + " : pas d'écriture, utiliser l'option --write " - self.logger.info('item', msg) else: msg = item.code + ' : fichier ' + item.file.name + ' deja inscrit dans la base de donnees et pas de forcage !' self.logger.info('item', msg) @@ -109,7 +110,7 @@ class Command(BaseCommand): def handle(self, *args, **kwargs): self.logger = Logger(kwargs.get('log')) self.pattern = kwargs.get('pattern') - self.source_dir = kwargs.get('source_dir') + self.source_dir = os.path.abspath(kwargs.get('source_dir')) self.dry_run = kwargs.get('dry-run') self.force = kwargs.get('force') @@ -122,7 +123,6 @@ class Command(BaseCommand): collection_dir = self.source_dir + os.sep + collection collection_files = os.listdir(collection_dir) - if not '/.' in collection_dir and self.pattern in collection_dir: collection_name = collection.split(os.sep)[-1] collections.append(collection_name) -- 2.39.5