示例#1
0
    def handle_label(self, project_name, **options):
        # Determine the project_name a bit naively -- by looking at the name of
        # the parent directory.
        directory = os.getcwd()

        try:
            proj_name = __import__(project_name)
            if proj_name:
                raise CommandError(
                    "%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name."
                    % project_name)
        except ImportError:
            if project_name in INVALID_PROJECT_NAMES:
                raise CommandError(
                    "%r contains an invalid project name. Please try another name."
                    % project_name)

        copy_helper(self.style, 'project', project_name, directory)

        # Create a random SECRET_KEY hash, and put it in the main settings.
        main_settings_file = os.path.join(directory, project_name,
                                          'settings.py')
        settings_contents = open(main_settings_file, 'r').read()
        fp = open(main_settings_file, 'w')
        secret_key = ''.join([
            choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
            for i in range(50)
        ])
        settings_contents = re.sub(r"(?<=SECRET_KEY = ')'", secret_key + "'",
                                   settings_contents)
        fp.write(settings_contents)
        fp.close()
示例#2
0
    def handle_label(self, project_name, **options):
        directory = os.getcwd()

        # Check that the project_name cannot be imported.
        try:
            import_module(project_name)
        except ImportError:
            pass
        else:
            raise CommandError(
                "%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name."
                % project_name)

        copy_helper(self.style, 'project', project_name, directory)

        # Create a random SECRET_KEY hash, and put it in the main settings.
        main_settings_file = os.path.join(directory, project_name,
                                          project_name, 'settings.py')
        settings_contents = open(main_settings_file, 'r').read()
        fp = open(main_settings_file, 'w')
        secret_key = ''.join([
            choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
            for i in range(50)
        ])
        settings_contents = re.sub(r"(?<=SECRET_KEY = ')'", secret_key + "'",
                                   settings_contents)
        fp.write(settings_contents)
        fp.close()
示例#3
0
文件: initapp.py 项目: igudym/twango
    def handle_label(self, app_name, directory=None, **options):
        package = app_name.split('.')
        app_name = package.pop()
         
        if directory is None:
            directory = os.getcwd() + '/apps/'
            
            for pdir in package:
                directory += pdir + '/'
                if not os.path.exists(directory):
                    os.mkdir(directory)
                    init = open(directory+'__init__.py', 'w')
                    init.close()
                
            print directory

        # Determine the project_name by using the basename of directory,
        # which should be the full path of the project directory (or the
        # current directory if no directory was passed).
        project_name = os.path.basename(directory)
        if app_name == project_name:
            raise CommandError("You cannot create an app with the same name"
                               " (%r) as your project." % app_name)

        # Check that the app_name cannot be imported.
        try:
            import_module(app_name)
        except ImportError:
            pass
        else:
            raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name." % app_name)

        copy_helper(self.style, 'app', app_name, directory, project_name)
        update_configuration(package,app_name)
示例#4
0
    def handle_label(self, app_name, directory=None, **options):
        # Temporarily adjust django path to that of appenginepatcher, so we
        # use our own template
        import django
        old_path = django.__path__
        django.__path__ = appenginepatcher.__path__
        if directory is None:
            directory = os.getcwd()

        # Determine the project_name by using the basename of directory,
        # which should be the full path of the project directory (or the
        # current directory if no directory was passed).
        project_name = os.path.basename(directory)
        if app_name == project_name:
            raise CommandError("You cannot create an app with the same name"
                               " (%r) as your project." % app_name)

        # Check that the app_name cannot be imported.
        try:
            __import__(app_name)
        except ImportError:
            pass
        else:
            raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name." % app_name)

        copy_helper(self.style, 'app', app_name, directory, project_name)
        django.__path__ = old_path
示例#5
0
    def handle_label(self, project_name, **options):
        # Determine the project_name a bit naively -- by looking at the name of
        # the parent directory.
        directory = os.getcwd()

        # Check that the project_name cannot be imported.
        try:
            import_module(project_name)
        except ImportError:
            pass
        else:
            raise CommandError(
                "%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name."
                % project_name
            )

        copy_helper(self.style, "project", project_name, directory)

        # Create a random SECRET_KEY hash, and put it in the main settings.
        main_settings_file = os.path.join(directory, project_name, "settings.py")
        settings_contents = open(main_settings_file, "r").read()
        fp = open(main_settings_file, "w")
        secret_key = "".join([choice("abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)") for i in range(50)])
        settings_contents = re.sub(r"(?<=SECRET_KEY = ')'", secret_key + "'", settings_contents)
        fp.write(settings_contents)
        fp.close()
示例#6
0
 def handle_label(self, app_name, directory=None, **options):
     if directory is None:
         directory = os.getcwd()
     # Determine the project_name by using the basename of directory,
     # which should be the full path of the project directory (or the
     # current directory if no directory was passed).
     project_name = os.path.basename(directory)
     if app_name == project_name:
         raise CommandError("You cannot create an app with the same name"
                            " (%r) as your project." % app_name)
     copy_helper(self.style, 'app', app_name, directory, project_name)
示例#7
0
 def app(self, path=None, key=None):
     """
     Creates the standard Django app layout at the given path using key as the
     app name.
     """
     path = self._get_usable_path(path)
     key = self._contextualize(key)
     pparts = os.path.split(path)
     if key in pparts[1]:
         path = pparts[0]
     self.empty(path)
     copy_helper(color_style(), 'app', key, path, self.context["project"])
示例#8
0
    def handle_label(self, app_name, directory=None, **options):
        if directory is None:
            directory = os.getcwd()

        # Check that the app_name cannot be imported.
        try:
            import_module(app_name)
        except ImportError:
            pass
        else:
            raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name." % app_name)

        copy_helper(self.style, 'app', app_name, directory)
示例#9
0
    def handle_label(self, app_name, directory=None, **options):
        if directory is None:
            directory = os.getcwd()

        # Check that the app_name cannot be imported.
        try:
            import_module(app_name)
        except ImportError:
            pass
        else:
            raise CommandError(
                "%r conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name."
                % app_name)

        copy_helper(self.style, 'app', app_name, directory)
    def handle_label(self, project_name, **options):
        # Determine the project_name a bit naively -- by looking at the name of
        # the parent directory.
        directory = os.getcwd()

        # Check that the project_name cannot be imported.
        try:
            import_module(project_name)
        except ImportError:
            pass
        else:
            raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name." % project_name)

        copy_helper(self.style, 'project', project_name, directory)

        # Create a random SECRET_KEY hash, and put it in the main settings.
        main_settings_file = os.path.join(directory, project_name, 'settings.py')
        settings_contents = open(main_settings_file, 'r').read()
        fp = open(main_settings_file, 'w')
        secret_key = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])
        settings_contents = re.sub(r"(?<=SECRET_KEY = ')'", secret_key + "'", settings_contents)
#       fp.write(settings_contents)
        fp.write(PREPEND_SETTINGS + settings_contents + APPEND_SETTINGS)
        fp.close()
        
        # Create directory structure and make it pyton module
        os.mkdir(os.path.join(directory, project_name, 'config'))
        open(os.path.join(directory, project_name, 'config', '__init__.py'), 'w').close()
        os.mkdir(os.path.join(directory, project_name, 'config', 'settings'))
        open(os.path.join(directory, project_name, 'config', 'settings', '__init__.py'), 'w').close()
        os.mkdir(os.path.join(directory, project_name, 'config', 'wsgi'))
        os.mkdir(os.path.join(directory, project_name, 'db'))
        os.mkdir(os.path.join(directory, project_name, 'lib'))
        # Default settings override
        fp = open(os.path.join(directory, project_name, 'config', 'settings','default.py'), 'w')
        fp.write(settings_contents)
        fp.close()
        # Create environtment spesific settings at <project_name>/config/settings/      
        open(os.path.join(directory, project_name, 'config', 'settings','development.py'), 'w').close()
        open(os.path.join(directory, project_name, 'config', 'settings','test.py'), 'w').close()
        open(os.path.join(directory, project_name, 'config', 'settings','production.py'), 'w').close()
示例#11
0
    def handle_label(self, app_name, directory=None, **options):
        if directory is None:
            directory = os.getcwd()

        # Determine the project_name by using the basename of directory,
        # which should be the full path of the project directory (or the
        # current directory if no directory was passed).
        project_name = os.path.basename(directory)
        if app_name == project_name:
            raise CommandError("You cannot create an app with the same name"
                               " (%r) as your project." % app_name)

        # Check that the app_name cannot be imported.
        try:
            import_module(app_name)
        except ImportError:
            pass
        else:
            raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name." % app_name)

        copy_helper(self.style, 'app', app_name, join(directory, self.directory_sufix), project_name)
示例#12
0
    def handle_label(self, project_name, **options):
        # Determine the project_name a bit naively -- by looking at the name of
        # the parent directory.
        directory = os.getcwd()

        try:
            proj_name = __import__(project_name)
            if proj_name:
                raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name." % project_name)
        except ImportError:
            if project_name in INVALID_PROJECT_NAMES:
                raise CommandError("%r contains an invalid project name. Please try another name." % project_name)

        copy_helper(self.style, 'project', project_name, directory)

        # Create a random SECRET_KEY hash, and put it in the main settings.
        main_settings_file = os.path.join(directory, project_name, 'settings.py')
        settings_contents = open(main_settings_file, 'r').read()
        fp = open(main_settings_file, 'w')
        secret_key = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])
        settings_contents = re.sub(r"(?<=SECRET_KEY = ')'", secret_key + "'", settings_contents)
        fp.write(settings_contents)
        fp.close()
示例#13
0
    def handle_label(self, app_name, directory=None, **options):
        package = app_name.split('.')
        app_name = package.pop()

        if directory is None:
            directory = os.getcwd() + '/apps/'

            for pdir in package:
                directory += pdir + '/'
                if not os.path.exists(directory):
                    os.mkdir(directory)
                    init = open(directory + '__init__.py', 'w')
                    init.close()

            print directory

        # Determine the project_name by using the basename of directory,
        # which should be the full path of the project directory (or the
        # current directory if no directory was passed).
        project_name = os.path.basename(directory)
        if app_name == project_name:
            raise CommandError("You cannot create an app with the same name"
                               " (%r) as your project." % app_name)

        # Check that the app_name cannot be imported.
        try:
            import_module(app_name)
        except ImportError:
            pass
        else:
            raise CommandError(
                "%r conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name."
                % app_name)

        copy_helper(self.style, 'app', app_name, directory, project_name)
        update_configuration(package, app_name)