File: check.py

package info (click to toggle)
python-django 1.7.11-1%2Bdeb8u3
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 45,624 kB
  • sloc: python: 171,189; xml: 713; sh: 203; makefile: 199; sql: 11
file content (39 lines) | stat: -rw-r--r-- 1,406 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from optparse import make_option

from django.apps import apps
from django.core import checks
from django.core.checks.registry import registry
from django.core.management.base import BaseCommand, CommandError


class Command(BaseCommand):
    help = "Checks the entire Django project for potential problems."

    requires_system_checks = False

    option_list = BaseCommand.option_list + (
        make_option('--tag', '-t', action='append', dest='tags',
            help='Run only checks labeled with given tag.'),
        make_option('--list-tags', action='store_true', dest='list_tags',
            help='List available tags.'),
    )

    def handle(self, *app_labels, **options):
        if options.get('list_tags'):
            self.stdout.write('\n'.join(sorted(registry.tags_available())))
            return

        if app_labels:
            app_configs = [apps.get_app_config(app_label) for app_label in app_labels]
        else:
            app_configs = None

        tags = options.get('tags', None)
        if tags and any(not checks.tag_exists(tag) for tag in tags):
            invalid_tag = next(tag for tag in tags if not checks.tag_exists(tag))
            raise CommandError('There is no system check with the "%s" tag.' % invalid_tag)

        self.check(app_configs=app_configs, tags=tags, display_num_errors=True)