Python · 1787 bytes Raw Blame History
1 # apps/trees/management/commands/populate_trees.py
2 from django.core.management.base import BaseCommand
3 from apps.trees.models import FileSystemTree
4
5
6 class Command(BaseCommand):
7 help = 'Create sample filesystem trees for testing'
8
9 def add_arguments(self, parser):
10 parser.add_argument(
11 '--count',
12 type=int,
13 default=3,
14 help='Number of trees to create'
15 )
16
17 def handle(self, *args, **options):
18 count = options['count']
19
20 self.stdout.write('Creating sample filesystem trees...')
21
22 difficulties = [
23 {'name': 'Beginner Tree', 'max_depth': 3, 'dirs_per_level': 2},
24 {'name': 'Intermediate Tree', 'max_depth': 4, 'dirs_per_level': 3},
25 {'name': 'Advanced Tree', 'max_depth': 5, 'dirs_per_level': 4},
26 {'name': 'Expert Tree', 'max_depth': 6, 'dirs_per_level': 5},
27 ]
28
29 created_count = 0
30 for i in range(count):
31 difficulty = difficulties[i % len(difficulties)]
32
33 tree = FileSystemTree.objects.create(
34 name=f"{difficulty['name']} #{i+1}"
35 )
36 tree.generate_tree(
37 max_depth=difficulty['max_depth'],
38 directories_per_level=difficulty['dirs_per_level']
39 )
40
41 created_count += 1
42 self.stdout.write(
43 self.style.SUCCESS(
44 f"Created tree: {tree.name} with {tree.nodes.count()} directories"
45 )
46 )
47 self.stdout.write(f" Mole hidden at: {tree.mole_location}")
48
49 self.stdout.write(
50 self.style.SUCCESS(f'Successfully created {created_count} filesystem trees')
51 )