# HG changeset patch # User Alexandre Segura # Date 1493134888 -7200 # Node ID 4ef381cd86ea87a966f09499700624eb276970b5 # Parent f34b7f73777c749ccd7901291ad232e254b44d11 Add option to extract folder name/number, folder regexp & metadata. diff -r f34b7f73777c -r 4ef381cd86ea src/iconolab/management/commands/importimages.py --- a/src/iconolab/management/commands/importimages.py Tue Apr 25 16:58:01 2017 +0200 +++ b/src/iconolab/management/commands/importimages.py Tue Apr 25 17:41:28 2017 +0200 @@ -84,6 +84,26 @@ default=r'[\.\-_].*', help='regexp suffix to properly parse image names with info from csv. The pattern should describe the part after the filename identifier string, default is [\.\-_].*' ) + parser.add_argument( + '--folders', + dest='import_folders', + default=False, + action='store_const', + const=True, + help='option to create folders' + ) + parser.add_argument( + '--folders-regexp', + dest='folders_regexp', + default=False, + help='regexp used to extract the folder name/number' + ) + parser.add_argument( + '--folders-metadata', + dest='folders_metadata', + default='INV', + help='metadata from which to extract the folder name/number' + ) def handle(self, *args, **options): """ Step-by-step for import: @@ -154,6 +174,9 @@ if metacategory.get('label', None) is None: raise ValueError('!!! Metacategory without label !!!') + if options['import_folders'] and not options['folders_regexp']: + raise ValueError('!!! No regexp specified to extract folder name !!!') + # We read the csv delimiter = options.get('csv_delimiter') if delimiter == '#9': @@ -283,25 +306,27 @@ if ItemMetadata.objects.filter(item__collection = collection, inventory_number = item_inventory_number).exists(): print('#### An item with '+item['INV']+' for inventory number, already exists in database in the import collection') - # Extract folder name from inventory number - m = re.search('^.*\.(.*)\..*$', item['INV']) - folder_id = m.group(1) + if options['import_folders']: + + # Extract folder name from inventory number + m = re.search(options['folders_regexp'], item[options['folders_metadata']]) + folder_id = m.group(1) - if not Folder.objects.filter(original_id=folder_id).exists(): - print('#### Creating folder "'+folder_id+'"') - folder = Folder.objects.create( - collection = collection, - name = 'Dossier '+folder_id, - original_id = folder_id - ) - else: - print('#### Folder "'+folder_id+'" already exists') - folder = Folder.objects.get(original_id=folder_id) + if not Folder.objects.filter(original_id=folder_id).exists(): + print('#### Creating folder "'+folder_id+'"') + folder = Folder.objects.create( + collection = collection, + name = 'Dossier '+folder_id, + original_id = folder_id + ) + else: + print('#### Folder "'+folder_id+'" already exists') + folder = Folder.objects.get(original_id=folder_id) - item_metadata = ItemMetadata.objects.get(item__collection = collection, inventory_number = item_inventory_number) - item = item_metadata.item + item_metadata = ItemMetadata.objects.get(item__collection = collection, inventory_number = item_inventory_number) + item = item_metadata.item - item.folders.add(folder) + item.folders.add(folder) else: print('#### Creating item '+item['INV']+' (inv number) in database')