Beispiel #1
0
def main_config():
    """
    django-develop-config CLI entry point.
    """
    if not utils.is_inside_virtual_env():
        _fail('Run django-develop-config inside a virtualenv')

    dd = _get_DjangoDevelop()  # type: DjangoDevelop
    try:
        [base_settings_module] = sys.argv[1:2]
    except ValueError:
        print('Usage: django-develop-config <base_settings_module>')
        print()

        # Show current configuration
        if dd.instance_path.exists():
            print('Instance directory: {}'.format(dd.instance_path))
            print()
        config = dd.read_config()
        base_settings_module = config.get('django-develop', 'base_settings_module', fallback=None)
        print('Current base settings module: {}'.format(
            utils.SUCCESS(base_settings_module) if base_settings_module else
            'not configured'))
        print()

        # TODO: Add CLI flag for include_problems?
        utils.print_candidate_settings()

        raise SystemExit(2)
    else:
        dd.init_instance(base_settings_module)
Beispiel #2
0
    def test_is_inside_virtual_env(self):
        """
        Check `utils.is_inside_virtual_env()` against various sets of sys prefix paths.
        """
        system = mock.sentinel.system
        virtual = mock.sentinel.virtual

        # These are the sets of sys module attributes that should be present or absent
        # with various versions of Python and virtualenv / venv.
        test_cases = {
            'py2_base': dict(prefix=system),
            # Python 3 (as of 3.3 / PEP 405) adds a sys.base_prefix attribute
            'py3_base': dict(base_prefix=system, prefix=system),
            'py3_venv': dict(base_prefix=system, prefix=virtual),
            # virtualenv saves sys.real_prefix, and changes the others
            'py2_virtualenv': dict(real_prefix=system, prefix=virtual),
            'py3_virtualenv': dict(real_prefix=system, prefix=virtual, base_prefix=virtual),
        }

        for (label, sys_attrs) in test_cases.items():
            with self.subTest(label=label):
                # Note: The spec=[] is important so that absent sys_attrs raise AttributeError
                # instead of returning mocks.
                with mock.patch('django_develop.utils.sys', spec=[], **sys_attrs):
                    expected = sys_attrs['prefix'] is virtual
                    self.assertEqual(utils.is_inside_virtual_env(), expected)
Beispiel #3
0
def main():
    """
    django-develop CLI entry point.
    """
    # XXX: Bail out early if being invoked for autocompletion.
    utility = ManagementUtility()
    utility.autocomplete()

    if not utils.is_inside_virtual_env():
        _fail('Run django-develop inside a virtualenv')

    dd = _get_DjangoDevelop()

    if not dd.instance_path.exists():
        _fail('django-develop not configured, try "django-develop-config"')
    else:
        # Set up and hand over to Django
        dd.activate_dev_settings()

        utility.execute()