From: yomguy Date: Thu, 17 Nov 2011 11:40:35 +0000 (+0100) Subject: import: overwrite mode, create collections, more conditions X-Git-Tag: 1.2.1~14 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=4d37d85892b3939c142f1348b499430da664a45f;p=telemeta.git import: overwrite mode, create collections, more conditions --- diff --git a/tools/scripts/telemeta-crem-import.py b/tools/scripts/telemeta-crem-import.py index 36597262..ebd7f86b 100755 --- a/tools/scripts/telemeta-crem-import.py +++ b/tools/scripts/telemeta-crem-import.py @@ -44,13 +44,12 @@ class TelemetaWavImport: self.logger = Logger(log_file) self.source_dir = source_dir self.collections = os.listdir(self.source_dir) - self.buffer_size = 0x1000 self.pattern = pattern self.user = User.objects.filter(username='admin') - def write_file(self, item, wav_file, user): + def write_file(self, item, wav_file, overwrite=False): if os.path.exists(wav_file): - if not item.file : + if not item.file or overwrite: f = open(wav_file, 'r') file_content = ContentFile(f.read()) item.file.save(filename, file_content) @@ -59,7 +58,7 @@ class TelemetaWavImport: item.save() item.set_revision(self.user) else: - msg = code + ' : fichier ' + wav_file + ' déjà ajouté !' + msg = code + ' : fichier ' + wav_file + ' déjà existant !' self.logger.error(collection, msg) else: msg = code + ' : fichier audio ' + wav_file + ' inexistant !' @@ -69,12 +68,22 @@ class TelemetaWavImport: from telemeta.models import MediaItem, MediaCollection for collection in self.collections: - collection_dir = self.source_dir + os.sep + collection + 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] c = MediaCollection.objects.filter(code=collection_name) - if not c: + if not c and collection + '.csv' in collection_files: sys.exit(msg = collection + ' collection NON présente dans la base de données, SORTIE ') + elif not c: + msg = 'collection NON présente dans la base de données, SORTIE ' + self.logger.info(collection, msg) + c = MediaCollection(code=collection_name) + c.save() + c.set_revision(self.user) + else: + msg = 'collection présente dans la base de données, CONTINUE ' + self.logger.info(collection, msg) for collection in self.collections: collection_dir = self.source_dir + os.sep + collection @@ -101,14 +110,15 @@ class TelemetaWavImport: code = filename.split('.')[0] items = MediaItem.objects.filter(code=code) if len(items) != 0: - msg = item.code+' : id = '+str(item.id)+" : title = "+item.title + msg = ' : id = '+str(item.id)+" : title = "+item.title+' SELECTION' + self.logger.info(item, msg) self.logger.info(collection, msg) item = items[0] else: msg = item.code + ' : item NON présent dans la base de données, CREATION' self.logger.info(item, msg) item = MediaItem(code=code, collection=c) - self.write_file(item, wav_file) + self.write_file(item, wav_file, True) else: c = csv.reader(open(self.source_dir + os.sep + collection + os.sep + collection + '.csv'), delimiter=';') @@ -122,9 +132,9 @@ class TelemetaWavImport: item = items[0] msg = item.old_code + ' : id = ' + str(item.id) + " : title = " + item.title self.logger.info(item, msg) - self.write_file(item, wav_file) + self.write_file(item, wav_file, True) else: - msg = old_ref + ' : item inexistant dans la base de données !' + msg = old_ref + ' : item inexistant dans la base de données ! PASS' self.logger.error(item, msg)