• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mozilla / fx-private-relay / 20fdad42-28a5-47cf-a496-b03bf8e9bb6b

09 May 2024 06:22PM CUT coverage: 84.08% (-0.6%) from 84.64%
20fdad42-28a5-47cf-a496-b03bf8e9bb6b

push

circleci

web-flow
Merge pull request #4684 from mozilla/enable-flak8-bandit-checks-mpp-3802

fix MPP-3802: stop ignoring bandit security checks

3602 of 4734 branches covered (76.09%)

Branch coverage included in aggregate %.

74 of 158 new or added lines in 24 files covered. (46.84%)

4 existing lines in 4 files now uncovered.

14687 of 17018 relevant lines covered (86.3%)

10.86 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

82.76
/emails/management/command_from_django_settings.py
1
"""
2
CommandFromDjangoSettings is a base class for commands that get parameters from Django
3
settings.
4
"""
5

6
import textwrap
1✔
7
from argparse import RawDescriptionHelpFormatter
1✔
8
from collections import namedtuple
1✔
9
from shutil import get_terminal_size
1✔
10

11
from django.conf import settings
1✔
12
from django.core.management.base import BaseCommand, CommandError, DjangoHelpFormatter
1✔
13

14

15
class RawDescriptionDjangoHelpFormatter(
1✔
16
    DjangoHelpFormatter, RawDescriptionHelpFormatter
17
):
18
    """DjangoHelpFormatter, but don't reflow the epilog."""
19

20
    pass
1✔
21

22

23
SettingToLocal = namedtuple(
1✔
24
    "SettingToLocal", ["setting_key", "local_name", "help_str", "validator"]
25
)
26

27

28
class CommandFromDjangoSettings(BaseCommand):
1✔
29
    """A Command that gets settings from Django settings."""
30

31
    settings_to_locals: list[SettingToLocal]
1✔
32

33
    def create_parser(self, prog_name, subcommand, **kwargs):
1✔
34
        """
35
        Customize the default parser.
36

37
        * Add the Django settings and their values to the command help
38
        * Override the verbosity from an environment variable
39
        """
40
        if not self.settings_to_locals:
1!
NEW
41
            raise ValueError("self.settings_to_locals must be truthy value.")
×
42
        epilog_lines = [
1✔
43
            (
44
                "Parameters are read from Django settings and the related environment"
45
                " variable:"
46
            ),
47
            "",
48
        ]
49
        verbosity_override = None
1✔
50

51
        for setting_key, local_name, help_str, _ in self.settings_to_locals:
1✔
52
            raw = (
1✔
53
                f"settings.{setting_key}={getattr(settings, setting_key)!r}"
54
                f" : {help_str}"
55
            )
56
            epilog_lines.extend(
1✔
57
                textwrap.wrap(
58
                    raw,
59
                    width=get_terminal_size().columns,
60
                    initial_indent="  ",
61
                    subsequent_indent="      ",
62
                )
63
            )
64
            if local_name == "verbosity":
1✔
65
                verbosity_override = getattr(settings, setting_key)
1✔
66
        epilog = "\n".join(epilog_lines)
1✔
67

68
        parser = super().create_parser(prog_name, subcommand, epilog=epilog, **kwargs)
1✔
69
        if parser.formatter_class != DjangoHelpFormatter:
1!
NEW
70
            raise TypeError("parser.formatter_class must be DjangoHelpFormatter")
×
71
        parser.formatter_class = RawDescriptionDjangoHelpFormatter
1✔
72
        if verbosity_override is None:
1!
NEW
73
            raise ValueError("verbosity_override must not be None.")
×
74
        parser.set_defaults(verbosity=verbosity_override)
1✔
75
        return parser
1✔
76

77
    def init_from_settings(self, verbosity):
1✔
78
        """Initialize local variables from settings"""
79
        if not self.settings_to_locals:
1!
NEW
80
            raise ValueError("self.settings_to_locals must be truthy value.")
×
81
        for setting_key, local_name, help_str, validator in self.settings_to_locals:
1✔
82
            value = getattr(settings, setting_key)
1✔
83
            if not validator(value):
1!
84
                raise CommandError(
×
85
                    f"settings.{setting_key} has invalid value {value!r}."
86
                )
87
            if local_name == "verbosity":
1✔
88
                # The setting overrides the default, but use the command-line value
89
                self.verbosity = verbosity
1✔
90
            else:
91
                setattr(self, local_name, getattr(settings, setting_key))
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc