mirror of
				https://github.com/cookiecutter/cookiecutter-django.git
				synced 2025-10-31 07:57:42 +03:00 
			
		
		
		
	* Fix inconsistent line length and move config to pyproject.toml Fix #2720 * Fix running tox with AUTOFIXABLE_STYLES * Adjust some styles * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Adjust more styles * Split isort and flake8 tests --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| NOTE:
 | |
|     the below code is to be maintained Python 2.x-compatible
 | |
|     as the whole Cookiecutter Django project initialization
 | |
|     can potentially be run in Python 2.x environment.
 | |
| 
 | |
| TODO: restrict Cookiecutter Django project initialization
 | |
|       to Python 3.x environments only
 | |
| """
 | |
| from __future__ import print_function
 | |
| 
 | |
| import sys
 | |
| 
 | |
| TERMINATOR = "\x1b[0m"
 | |
| WARNING = "\x1b[1;33m [WARNING]: "
 | |
| INFO = "\x1b[1;33m [INFO]: "
 | |
| HINT = "\x1b[3;33m"
 | |
| SUCCESS = "\x1b[1;32m [SUCCESS]: "
 | |
| 
 | |
| # The content of this string is evaluated by Jinja, and plays an important role.
 | |
| # It updates the cookiecutter context to trim leading and trailing spaces
 | |
| # from domain/email values
 | |
| """
 | |
| {{ cookiecutter.update({ "domain_name": cookiecutter.domain_name | trim }) }}
 | |
| {{ cookiecutter.update({ "email": cookiecutter.email | trim }) }}
 | |
| """
 | |
| 
 | |
| project_slug = "{{ cookiecutter.project_slug }}"
 | |
| if hasattr(project_slug, "isidentifier"):
 | |
|     assert project_slug.isidentifier(), "'{}' project slug is not a valid Python identifier.".format(project_slug)
 | |
| 
 | |
| assert project_slug == project_slug.lower(), "'{}' project slug should be all lowercase".format(project_slug)
 | |
| 
 | |
| assert "\\" not in "{{ cookiecutter.author_name }}", "Don't include backslashes in author name."
 | |
| 
 | |
| if "{{ cookiecutter.use_docker }}".lower() == "n":
 | |
|     python_major_version = sys.version_info[0]
 | |
|     if python_major_version == 2:
 | |
|         print(
 | |
|             WARNING + "You're running cookiecutter under Python 2, but the generated "
 | |
|             "project requires Python 3.11+. Do you want to proceed (y/n)? " + TERMINATOR
 | |
|         )
 | |
|         yes_options, no_options = frozenset(["y"]), frozenset(["n"])
 | |
|         while True:
 | |
|             choice = raw_input().lower()  # noqa: F821
 | |
|             if choice in yes_options:
 | |
|                 break
 | |
| 
 | |
|             elif choice in no_options:
 | |
|                 print(INFO + "Generation process stopped as requested." + TERMINATOR)
 | |
|                 sys.exit(1)
 | |
|             else:
 | |
|                 print(
 | |
|                     HINT
 | |
|                     + "Please respond with {} or {}: ".format(
 | |
|                         ", ".join(["'{}'".format(o) for o in yes_options if not o == ""]),
 | |
|                         ", ".join(["'{}'".format(o) for o in no_options if not o == ""]),
 | |
|                     )
 | |
|                     + TERMINATOR
 | |
|                 )
 | |
| 
 | |
| if "{{ cookiecutter.use_whitenoise }}".lower() == "n" and "{{ cookiecutter.cloud_provider }}" == "None":
 | |
|     print("You should either use Whitenoise or select a " "Cloud Provider to serve static files")
 | |
|     sys.exit(1)
 | |
| 
 | |
| if "{{ cookiecutter.mail_service }}" == "Amazon SES" and "{{ cookiecutter.cloud_provider }}" != "AWS":
 | |
|     print("You should either use AWS or select a different " "Mail Service for sending emails.")
 | |
|     sys.exit(1)
 |