From 5ae011626f0d613dc7ca667c25c95d9cc4a1ab47 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 13 Jan 2021 15:18:30 +0100 Subject: [PATCH] Enhancement for pack command. --- src/catalogue/management/commands/pack.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/catalogue/management/commands/pack.py b/src/catalogue/management/commands/pack.py index 181c2e6c2..22b36e985 100644 --- a/src/catalogue/management/commands/pack.py +++ b/src/catalogue/management/commands/pack.py @@ -20,6 +20,8 @@ class Command(BaseCommand): parser.add_argument( '-e', '--exclude', dest='exclude', metavar='SLUG,...', help='Exclude specific books by slug') + parser.add_argument( + '--top-level', dest='top_level', action='store_true') parser.add_argument('ftype', metavar='|'.join(Book.formats)) parser.add_argument('path', metavar='output_path.zip') @@ -31,6 +33,7 @@ class Command(BaseCommand): tags = options.get('tags') include = options.get('include') exclude = options.get('exclude') + top_level = options.get('top_level') if ftype in Book.formats: field = "%s_file" % ftype @@ -46,7 +49,10 @@ class Command(BaseCommand): if tags: books += list(Book.tagged.with_all(Tag.objects.filter(slug__in=tags.split(','))).only('slug', field)) elif not include: - books = list(Book.objects.all().only('slug', field)) + books = Book.objects.all() + if top_level: + books = books.filter(parent=None) + books = list(books.only('slug', field)) if exclude: books = [book for book in books if book.slug not in exclude.split(',')] -- 2.20.1