diff --git a/cookiecutter.json b/cookiecutter.json index 0bc2b90e2..f2739a89a 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -9,6 +9,7 @@ "timezone": "UTC", "use_whitenoise": "y", "use_celery": "n", + "use_domain_driven_design": "n", "use_mailhog": "n", "use_sentry_for_error_reporting": "y", "use_opbeat": "n", diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py index 4a9d14e2f..044541019 100644 --- a/hooks/post_gen_project.py +++ b/hooks/post_gen_project.py @@ -202,6 +202,15 @@ def remove_elasticbeanstalk(): PROJECT_DIRECTORY, filename )) +def remove_domain_app(project_directory): + """Removes the domain app if Domain-Driven Design (DDD) isn't going to be used.""" + # Determine the local_setting_file_location + domain_app_location = os.path.join( + PROJECT_DIRECTORY, + '{{ cookiecutter.project_slug }}/domain' + ) + shutil.rmtree(domain_app_location) + # IN PROGRESS # def copy_doc_files(project_directory): # cookiecutters_dir = DEFAULT_CONFIG['cookiecutters_dir'] @@ -284,3 +293,7 @@ if '{{ cookiecutter.open_source_license}}' != 'GPLv3': # 12. Remove Elastic Beanstalk files if '{{ cookiecutter.use_elasticbeanstalk_experimental }}'.lower() != 'y': remove_elasticbeanstalk() + +# 13. Removes the domain app if Domain-Driven Design (DDD) isn't going to be used. +if '{{ cookiecutter.use_domain_driven_design }}'.lower() == 'n': + remove_domain_app(PROJECT_DIRECTORY) diff --git a/{{cookiecutter.project_slug}}/config/settings/base.py b/{{cookiecutter.project_slug}}/config/settings/base.py index 3ff7e1091..48eca2812 100644 --- a/{{cookiecutter.project_slug}}/config/settings/base.py +++ b/{{cookiecutter.project_slug}}/config/settings/base.py @@ -57,7 +57,8 @@ THIRD_PARTY_APPS = [ # Apps specific for this project go here. LOCAL_APPS = [ # custom users app - '{{ cookiecutter.project_slug }}.users.apps.UsersConfig', + '{{ cookiecutter.project_slug }}.users.apps.UsersConfig',{% if cookiecutter.use_domain_driven_design == 'y' %} + '{{ cookiecutter.project_slug }}.domain.apps.DomainConfig',{% endif %} # Your stuff: custom apps go here ] diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/__init__.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/apps.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/apps.py new file mode 100644 index 000000000..2315726a4 --- /dev/null +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/apps.py @@ -0,0 +1,13 @@ +from django.apps import AppConfig + + +class DomainConfig(AppConfig): + name = '{{cookiecutter.project_slug}}.domain' + verbose_name = "Domain" + + def ready(self): + """Override this to put in: + Users system checks + Users signal registration + """ + pass diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/models.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/models.py new file mode 100644 index 000000000..e69de29bb diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/tests.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/domain/tests.py new file mode 100644 index 000000000..e69de29bb