Changeset 1eb6b294


Ignore:
Timestamp:
Nov 18, 2011 1:15:23 PM (3 years ago)
Author:
yomguy <yomguy@…>
Branches:
master, crem, crem2, crem3, dev, dev2, diadems, dj1.6, feature/breadcrumbs, feature/ts-0.5, feature/ts-0.5.4, feature/writecache, forma, generic, instru_search, lam, lam2, mapsv3, merge, nlivemulti, prob, production, release/1.4.4, sabiod, search, security, server, social, storage, telecaster, test, video
Children:
d4c2dd3, e878904
Parents:
ffb0268
git-author:
yomguy <yomguy@…> (18/11/2011 13:15:23)
git-committer:
yomguy <yomguy@…> (18/11/2011 13:15:23)
Message:

collection edit: fix null doc_type
import crem: add special cases, simplify

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • telemeta/models/media.py

    rdf08f22 r1eb6b294  
    218218    class Meta: 
    219219        model = MediaCollection 
     220    def clean_doctype_code(self): 
     221        return self.cleaned_data['doctype_code'] or 0 
    220222         
    221223 
  • tools/scripts/telemeta-crem-import.py

    rffb0268 r1eb6b294  
    6969        for collection in self.collections: 
    7070            collection_dir = self.source_dir + os.sep + collection  
    71             collection_files = os.listdir(collection_dir) 
     71            collections = [] 
    7272             
    7373            if not '/.' in collection_dir and self.pattern in collection_dir: 
    7474                collection_name = collection.split(os.sep)[-1] 
     75                collections.append(collection_name) 
    7576                c = MediaCollection.objects.filter(code=collection_name) 
    7677                 
     
    8990                    self.logger.info(collection, msg) 
    9091                     
    91         for collection in self.collections: 
     92        for collection in collections: 
    9293            collection_dir = self.source_dir + os.sep + collection 
     94            collection_name = collection 
     95            collection_files = os.listdir(collection_dir) 
     96            msg = '************************ ' + collection + ' ******************************' 
     97            self.logger.info(collection, msg[:70]) 
     98            overwrite = True 
     99            csv_file = '' 
     100            rows = {} 
    93101             
    94             if not '/.' in collection_dir and self.pattern in collection_dir: 
    95                 collection_name = collection.split(os.sep)[-1] 
    96                 msg = '************************ ' + collection + ' ******************************' 
     102            if collection + '.csv' in collection_files: 
     103                csv_file = self.source_dir + os.sep + collection + os.sep + collection + '.csv' 
     104                csv_data = csv.reader(open(csv_file), delimiter=';') 
     105                for row in csv_data: 
     106                    rows[row[1]] = row[0] 
     107                msg = collection + ' import du fichier CSV de la collection' 
    97108                self.logger.info(collection, msg[:70]) 
    98                 collection_files = os.listdir(collection_dir) 
     109            else: 
     110                msg = collection + ' pas de fichier CSV dans la collection' 
     111                self.logger.info(collection, msg[:70]) 
     112             
     113            c = MediaCollection.objects.filter(code=collection_name) 
     114            if not c: 
     115                c = MediaCollection(code=collection_name) 
     116                c.save() 
     117                msg = ' collection NON présente dans la BDD, CREATION ' 
     118                self.logger.info(c.code, msg) 
     119            else: 
     120                c = c[0] 
     121                msg = ' id = '+str(c.id) 
     122                self.logger.info(c.code, msg) 
     123             
     124            audio_files = [] 
     125            for file in collection_files: 
     126                ext = ['WAV', 'wav'] 
     127                if file.split('.')[-1] in ext: 
     128                    audio_files.append(file) 
     129             
     130            audio_files.sort() 
     131            nb_items = c.items.count() 
     132            counter = 0 
     133             
     134            for file in audio_files: 
     135                code = file.split('.')[0] 
     136                wav_file = self.source_dir + os.sep + collection + os.sep + file 
    99137                 
    100                 if not collection + '.csv' in collection_files: 
    101                     overwrite = False 
    102                     msg = collection + ' pas de fichier CSV dans la collection' 
    103                     self.logger.info(collection, msg[:70]) 
    104                     c = MediaCollection.objects.filter(code=collection_name) 
     138                if len(audio_files) <= nb_items: 
     139                    items = MediaItem.objects.filter(code=code) 
    105140                     
    106                     if not c: 
    107                         c = MediaCollection(code=collection_name) 
    108                         c.save() 
    109                         msg = ' collection NON présente dans la BDD, CREATION ' 
    110                         self.logger.info(c.code, msg) 
     141                    if code in rows and not items: 
     142                        old_ref = rows[code] 
     143                        items = MediaItem.objects.filter(old_code=old_ref) 
    111144                         
     145                    if items: 
     146                        item = items[0] 
     147                        msg = item.old_code + ' : Cas 1 ou 2 : id = ' + str(item.id) 
     148                        self.logger.info('item', msg) 
     149                        item.code = code 
     150                        item.save() 
    112151                    else: 
    113                         c = c[0] 
    114                         msg = ' id = '+str(c.id) 
    115                         self.logger.info(c.code, msg) 
    116                          
    117                     for filename in collection_files: 
    118                         wav_file = self.source_dir + os.sep + collection + os.sep + filename 
    119                         code = filename.split('.')[0] 
    120                         items = MediaItem.objects.filter(code=code) 
    121                          
    122                         if len(items) != 0: 
    123                             item = items[0] 
    124                             msg = item.code + ' : id = '+str(item.id) 
    125                             self.logger.info('item', msg) 
    126                         else: 
    127                             item = MediaItem(code=code, collection=c) 
    128                             msg = item.code + ' : item NON présent dans la base de données, CREATION' 
    129                             self.logger.info('item', msg) 
    130                              
     152                        item = MediaItem(code=code, collection=c) 
     153                        msg = item.code + ' : Cas 1 ou 2 : item NON présent dans la base de données, CREATION' 
     154                        self.logger.info('item', msg) 
     155                     
     156                    self.write_file(item, wav_file, overwrite) 
     157                     
     158                elif nb_items == 1 and len(audio_files) > 1: 
     159                    if counter == 0: 
     160                        msg = code + ' : Cas 3a : item n°01 présent dans la base de données, PASSE' 
     161                        self.logger.info('item', msg) 
     162                    else: 
     163                        item = MediaItem(code=code, collection=c) 
     164                        msg = item.code + ' : Cas 3a : item NON présent dans la base de données, CREATION' 
     165                        self.logger.info('item', msg) 
    131166                        self.write_file(item, wav_file, overwrite) 
     167                 
     168                elif nb_items > 1 and nb_items < len(audio_files): 
     169                    msg = code + ' : Cas 3b : nb items < nb de fichiers audio, PAS de creation' 
     170                    self.logger.info('item', msg) 
    132171 
    133                 else: 
    134                     overwrite = False 
    135                     csv_file = self.source_dir + os.sep + collection + os.sep + collection + '.csv' 
    136                     c = csv.reader(open(csv_file), delimiter=';') 
    137                      
    138                     for row in c: 
    139                         old_ref = row[0] 
    140                         new_ref = row[1] 
    141                         filename = new_ref + '.wav' 
    142                         wav_file = self.source_dir + os.sep + collection + os.sep + filename 
    143                         items = MediaItem.objects.filter(old_code=old_ref) 
    144                  
    145                         if items: 
    146                             item = items[0] 
    147                             msg = item.old_code + ' : id = ' + str(item.id) 
    148                             self.logger.info('item', msg) 
    149                             self.write_file(item, wav_file, overwrite) 
    150                             item.code = new_ref 
    151                             item.save() 
    152                         else: 
    153                             msg = old_ref + ' : item inexistant dans la base de données !' 
    154                             self.logger.error('item', msg) 
    155  
     172                counter += 1 
    156173 
    157174def print_usage(tool_name): 
Note: See TracChangeset for help on using the changeset viewer.