]> git.parisson.com Git - telemeta.git/commitdiff
import: overwrite mode, create collections, more conditions
authoryomguy <yomguy@parisson.com>
Thu, 17 Nov 2011 11:40:35 +0000 (12:40 +0100)
committeryomguy <yomguy@parisson.com>
Thu, 17 Nov 2011 11:40:35 +0000 (12:40 +0100)
tools/scripts/telemeta-crem-import.py

index 365972629c80c554af2c1b613033087a90f14620..ebd7f86b8b49bad7c74dfd91fb2a4a164a77737d 100755 (executable)
@@ -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)