123456789101112131415161718192021222324252627282930313233343536 |
- # -*- coding: utf-8 -*-
- import fnmatch
- import os
- import py_compile
- from os.path import join as _j
- from django.conf import settings
- from django.core.management.base import BaseCommand, CommandError
- from django_extensions.management.utils import signalcommand
- class Command(BaseCommand):
- help = "Compile python bytecode files for the project."
- requires_system_checks = False
- def add_arguments(self, parser):
- parser.add_argument('--path', '-p', action='store', dest='path',
- help='Specify path to recurse into')
- @signalcommand
- def handle(self, *args, **options):
- project_root = options["path"]
- if not project_root:
- project_root = getattr(settings, 'BASE_DIR', None)
- verbosity = options["verbosity"]
- if not project_root:
- raise CommandError("No --path specified and settings.py does not contain BASE_DIR")
- for root, dirs, filenames in os.walk(project_root):
- for filename in fnmatch.filter(filenames, '*.py'):
- full_path = _j(root, filename)
- if verbosity > 1:
- self.stdout.write("Compiling %s...\n" % full_path)
- py_compile.compile(full_path)
|