diff --git a/docs/developing-locally-docker.rst b/docs/developing-locally-docker.rst
index 8be28c66..379bc810 100644
--- a/docs/developing-locally-docker.rst
+++ b/docs/developing-locally-docker.rst
@@ -6,8 +6,6 @@ Getting Up and Running Locally With Docker
The steps below will get you up and running with a local development environment.
All of these commands assume you are in the root of your generated project.
-.. _devlocdocker-prereq:
-
Prerequisites
-------------
@@ -33,9 +31,6 @@ Currently PostgreSQL (``psycopg2`` python package) is not installed inside Docke
Doing this will prevent the project from being installed in an Windows-only environment (thus without usage of Docker). If you want to use this project without Docker, make sure to remove ``psycopg2`` from the requirements again.
-
-.. _devlocdocker-build-the-stack:
-
Build the Stack
---------------
@@ -46,9 +41,6 @@ on your development system::
If you want to build the production environment you don't have to pass an argument -f, it will automatically use docker-compose.yml.
-
-.. _devlocdocker-boot-the-system:
-
Boot the System
---------------
diff --git a/docs/gulp-with-docker.rst b/docs/gulp-with-docker.rst
deleted file mode 100644
index 1e9b2a18..00000000
--- a/docs/gulp-with-docker.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-Gulp with Docker
-================
-
-.. index:: gulp, gulpjs, gulpfile, gulpfilejs, docker, docker-compose
-
-`Gulp`_ support is provided out-of-the-box, ready for use as-is, or with any kind of customizations suiting the specific needs of the project.
-
-.. _`Gulp`: http://gulpjs.com/
-
-*All paths are relative to the generated project's root.*
-
-
-Prerequisites
--------------
-
-- These :ref:`nodewithdocker-prereq` are satisfied.
-
-
-Overview
---------
-
-:ref:`nodewithdocker-overview` Node.js integration details first to get the whole picture.
-
-Essential aspects of Gulp integration are
-
-- :code:`./gulpfile.js` with Gulp tasks defined;
-- :code:`./{{ cookiecutter.project_slug }}/static/build/` (build directory) with static assets built via Gulp.
-
-Let us take a closer look at :code:`./gulpfile.js`:
-
-- paths to static assets are provided by :code:`pathsConfig()`;
-- for clarity, related tasks are grouped by :code:`region`:
- - :code:`images`:
- - :code:`images`: run image-related tasks in parallel, namely:
- - :code:`favicons-images`: process favicon images only;
- - :code:`nonfavicons-images`: process all images except for favicons.
- - :code:`scripts`:
- - :code:`scripts`: run script-related tasks in sequence, namely:
- - :code:`js-scripts`: process js scripts.
- - :code:`styles`:
- - :code:`styles`: run script-related tasks in sequence, namely:
- - :code:`sass-styles`: process SCSS styles;
- - :code:`css-styles`: process CSS styles.
- - :code:`build`:
- - :code:`build`: run :code:`images`, :code:`scripts`, and :code:`styles` in parallel;
- - :code:`clean-build`: clean up build directory:
-- the :code:`default` task runs the following ones in sequence:
- - :code:`build`;
- - :code:`init-browserSync`: initialize `BrowserSync`_;
- - :code:`watch`: watch static asset files/directories changes, running BrowserSync on any changes.
-
-.. _`BrowserSync`: https://www.browsersync.io/
-
-
-Workflow
---------
-
-#. [*skip if done*] :ref:`devlocdocker-build-the-stack`;
-#. :ref:`devlocdocker-boot-the-system`.
-
-By default, :code:`gulp` command gets executed immediately after :code:`node`
-container startup (see :code:`./dev.yml` for details) which in turn invokes
-the :code:`default` task, so generally one would not need to run any
-of the aforementioned tasks manually. However, should the need arise,
-oftentimes just a few of the tasks listed above will be used to, for instance,
-straightforwardly :code:`build` all assets
-
-.. code-block:: bash
-
- $ docker-compose -f dev.yml exec node gulp build
-
-or build :code:`scripts` selectively
-
-.. code-block:: bash
-
- $ docker-compose -f dev.yml exec node gulp scripts
diff --git a/docs/index.rst b/docs/index.rst
index 70b8264c..3b0a268c 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -17,8 +17,6 @@ Contents:
developing-locally-docker
settings
linters
- nodejs-with-docker
- gulp-with-docker
live-reloading-and-sass-compilation
deployment-on-pythonanywhere
deployment-on-heroku
diff --git a/docs/nodejs-with-docker.rst b/docs/nodejs-with-docker.rst
deleted file mode 100644
index 468c5408..00000000
--- a/docs/nodejs-with-docker.rst
+++ /dev/null
@@ -1,45 +0,0 @@
-Node.js with Docker
-===================
-
-.. index:: node, nodejs, docker, docker-compose
-
-`Node.js`_ support is provided out-of-the-box, ready for use as-is, or with any kind of customizations suiting the specific needs of the project.
-
-.. _`Node.js`: https://nodejs.org/en/
-
-*All paths are relative to the generated project's root.*
-
-
-.. _nodewithdocker-prereq:
-
-Prerequisites
--------------
-
-- The project was generated with :code:`use_docker` set to :code:`y`.
-- These :ref:`devlocdocker-prereq` are met as well.
-
-
-.. _nodewithdocker-overview:
-
-Overview
---------
-
-Essential aspects of Node.js integration are
-
-- node docker-compose service (:code:`node`) definition in :code:`./dev.yml`;
-- :code:`./compose/node/Dockerfile-dev` defining the :code:`node` image;
-- :code:`./node_modules/` 'overlayed' with :code:`/app/node_modules/`, its counterpart from the running instance of :code:`node`.
-
-
-Workflow
---------
-
-#. [*skip if done*] :ref:`devlocdocker-build-the-stack`:
- - when building :code:`node` image from scratch, dependencies from :code:`package.json` are installed.
-#. :ref:`devlocdocker-boot-the-system`.
-
-To log the running :code:`node` container's activity,
-
-.. code-block:: bash
-
- $ docker-compose -f dev.yml logs node
diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py
index c005d9e7..5e1eff9b 100644
--- a/hooks/post_gen_project.py
+++ b/hooks/post_gen_project.py
@@ -256,6 +256,7 @@ elif '{{ cookiecutter.js_task_runner}}'.lower() == 'grunt':
else:
remove_gulp_files()
remove_grunt_files()
+ remove_packageJSON_file()
# 7. Removes all certbot/letsencrypt files if it isn't going to be used
if '{{ cookiecutter.use_lets_encrypt }}'.lower() != 'y':
@@ -263,10 +264,11 @@ if '{{ cookiecutter.use_lets_encrypt }}'.lower() != 'y':
# 8. Display a warning if use_docker and use_grunt are selected. Grunt isn't
# supported by our docker config atm.
-if '{{ cookiecutter.js_task_runner }}'.lower() in ['grunt'] and '{{ cookiecutter.use_docker }}'.lower() == 'y':
+if '{{ cookiecutter.js_task_runner }}'.lower() in ['grunt', 'gulp'] and '{{ cookiecutter.use_docker }}'.lower() == 'y':
print(
- "You selected to use Docker and Grunt task runner. This is NOT supported out of the box for now. You "
- "can continue to use the project like you normally would, but you will need to setup Grunt manually."
+ "You selected to use docker and a JS task runner. This is NOT supported out of the box for now. You "
+ "can continue to use the project like you normally would, but you will need to add a "
+ "js task runner service to your docker configuration manually."
)
# 9. Removes the certbot/letsencrypt files and display a warning if use_lets_encrypt is selected and use_docker isn't.
diff --git a/{{cookiecutter.project_slug}}/.gitignore b/{{cookiecutter.project_slug}}/.gitignore
index 710ba625..6a0a3029 100644
--- a/{{cookiecutter.project_slug}}/.gitignore
+++ b/{{cookiecutter.project_slug}}/.gitignore
@@ -79,4 +79,3 @@ staticfiles/
.cache/
-{{ cookiecutter.project_slug }}/static/build/
diff --git a/{{cookiecutter.project_slug}}/compose/node/Dockerfile-dev b/{{cookiecutter.project_slug}}/compose/node/Dockerfile-dev
deleted file mode 100644
index e53fb504..00000000
--- a/{{cookiecutter.project_slug}}/compose/node/Dockerfile-dev
+++ /dev/null
@@ -1,11 +0,0 @@
-FROM node:7.10-slim
-
-RUN mkdir -p /app
-
-COPY ./package.json /app
-
-WORKDIR /app
-
-RUN npm install && npm cache clean
-
-ENV PATH ./node_modules/.bin/:$PATH
diff --git a/{{cookiecutter.project_slug}}/config/settings/base.py b/{{cookiecutter.project_slug}}/config/settings/base.py
index 5b07086d..274e2806 100644
--- a/{{cookiecutter.project_slug}}/config/settings/base.py
+++ b/{{cookiecutter.project_slug}}/config/settings/base.py
@@ -184,10 +184,9 @@ STATIC_ROOT = str(ROOT_DIR('staticfiles'))
# See: https://docs.djangoproject.com/en/dev/ref/settings/#static-url
STATIC_URL = '/static/'
-_STATIC_BUILD_ROOT_DIR_NAME = 'build'
# See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS
STATICFILES_DIRS = [
- (_STATIC_BUILD_ROOT_DIR_NAME, str(APPS_DIR.path('static').path(_STATIC_BUILD_ROOT_DIR_NAME))),
+ str(APPS_DIR.path('static')),
]
# See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders
diff --git a/{{cookiecutter.project_slug}}/dev.yml b/{{cookiecutter.project_slug}}/dev.yml
index 715b35d9..dbd321c8 100644
--- a/{{cookiecutter.project_slug}}/dev.yml
+++ b/{{cookiecutter.project_slug}}/dev.yml
@@ -21,7 +21,6 @@ services:
depends_on:
- postgres{% if cookiecutter.use_mailhog == 'y' %}
- mailhog{% endif %}
- - node
environment:
- POSTGRES_USER={{cookiecutter.project_slug}}
- USE_DOCKER=yes
@@ -49,19 +48,3 @@ services:
ports:
- "8025:8025"
{% endif %}
-
- node:
- build:
- context: .
- dockerfile: ./compose/node/Dockerfile-dev
- volumes:
- - .:/app
- # http://jdlm.info/articles/2016/03/06/lessons-building-node-app-docker.html
- - /app/node_modules
- command: "gulp"
- ports:
- # BrowserSync port.
- - "3000:3000"
- # BrowserSync UI port.
- - "3001:3001"
-
diff --git a/{{cookiecutter.project_slug}}/gulpfile.js b/{{cookiecutter.project_slug}}/gulpfile.js
index f3278afe..b67a7bee 100644
--- a/{{cookiecutter.project_slug}}/gulpfile.js
+++ b/{{cookiecutter.project_slug}}/gulpfile.js
@@ -1,139 +1,105 @@
-const gulp = require('gulp')
-const pump = require('pump')
-const sass = require('gulp-sass')
-const pjson = require('./package.json')
-const autoprefixer = require('gulp-autoprefixer')
-const cleanCSS = require('gulp-clean-css')
-const rename = require('gulp-rename')
-const pixrem = require('gulp-pixrem')
-const concat = require('gulp-concat')
-const uglify = require('gulp-uglify')
-const imagemin = require('gulp-imagemin')
-const clean = require('gulp-clean')
-const spawn = require('child_process').spawn
-const runSequence = require('run-sequence')
-const browserSync = require('browser-sync').create()
-const pathsConfig = function (appName) {
- this.paths = {}
- this.paths['app'] = './' + (appName || pjson.name)
+////////////////////////////////
+ //Setup//
+////////////////////////////////
- this.paths['static'] = this.paths['app'] + '/static'
+// Plugins
+var gulp = require('gulp'),
+ pjson = require('./package.json'),
+ gutil = require('gulp-util'),
+ sass = require('gulp-sass'),
+ autoprefixer = require('gulp-autoprefixer'),
+ cssnano = require('gulp-cssnano'),
+ rename = require('gulp-rename'),
+ del = require('del'),
+ plumber = require('gulp-plumber'),
+ pixrem = require('gulp-pixrem'),
+ uglify = require('gulp-uglify'),
+ imagemin = require('gulp-imagemin'),
+ spawn = require('child_process').spawn,
+ runSequence = require('run-sequence'),
+ browserSync = require('browser-sync').create(),
+ reload = browserSync.reload;
- this.paths['build'] = this.paths['static'] + '/build'
- this.paths['buildImages'] = this.paths['build'] + '/images'
- this.paths['images'] = this.paths['static'] + '/images'
- this.paths['images_files'] = this.paths['images'] + '/*'
- this.paths['buildImagesFavicons'] = this.paths['buildImages'] + '/favicons'
- this.paths['imagesFavicons'] = this.paths['images'] + '/favicons'
- this.paths['imagesFavicons_files'] = this.paths['imagesFavicons'] + '/*'
+// Relative paths function
+var pathsConfig = function (appName) {
+ this.app = "./" + (appName || pjson.name);
- this.paths['build_scriptsFileName'] = 'scripts.js'
- this.paths['scripts'] = this.paths['static'] + '/scripts'
- this.paths['scripts_files'] = this.paths['scripts'] + '/**/*'
- this.paths['scriptsJs'] = this.paths['scripts'] + '/js'
- this.paths['scriptsJs_files'] = this.paths['scriptsJs'] + '/*.js'
+ return {
+ app: this.app,
+ templates: this.app + '/templates',
+ css: this.app + '/static/css',
+ sass: this.app + '/static/sass',
+ fonts: this.app + '/static/fonts',
+ images: this.app + '/static/images',
+ js: this.app + '/static/js',
+ }
+};
- this.paths['build_stylesFileName'] = 'styles.css'
- this.paths['styles'] = this.paths['static'] + '/styles'
- this.paths['styles_files'] = this.paths['styles'] + '/**/*'
- this.paths['stylesSass'] = this.paths['styles'] + '/sass'
- this.paths['stylesSass_files'] = this.paths['stylesSass'] + '/*.scss'
- this.paths['stylesCss'] = this.paths['styles'] + '/css'
- this.paths['stylesCss_files'] = this.paths['stylesCss'] + '/*.css'
+var paths = pathsConfig();
- this.paths['templates'] = this.paths['app'] + '/templates'
- this.paths['templates_files'] = this.paths['templates'] + '/**/*.html'
+////////////////////////////////
+ //Tasks//
+////////////////////////////////
- return this.paths
-}
-const paths = pathsConfig()
+// Styles autoprefixing and minification
+gulp.task('styles', function() {
+ return gulp.src(paths.sass + '/project.scss')
+ .pipe(sass().on('error', sass.logError))
+ .pipe(plumber()) // Checks for errors
+ .pipe(autoprefixer({browsers: ['last 2 versions']})) // Adds vendor prefixes
+ .pipe(pixrem()) // add fallbacks for rem units
+ .pipe(gulp.dest(paths.css))
+ .pipe(rename({ suffix: '.min' }))
+ .pipe(cssnano()) // Minifies the result
+ .pipe(gulp.dest(paths.css));
+});
-// region images
-gulp.task('favicons-images', function (cb) {
- pump([gulp.src(paths.imagesFavicons_files),
- gulp.dest(paths.buildImagesFavicons)],
- cb)
-})
+// Javascript minification
+gulp.task('scripts', function() {
+ return gulp.src(paths.js + '/project.js')
+ .pipe(plumber()) // Checks for errors
+ .pipe(uglify()) // Minifies the js
+ .pipe(rename({ suffix: '.min' }))
+ .pipe(gulp.dest(paths.js));
+});
-gulp.task('nonfavicons-images', function (cb) {
- pump([gulp.src(paths.images_files),
- imagemin(),
- gulp.dest(paths.buildImages)],
- cb)
-})
+// Image compression
+gulp.task('imgCompression', function(){
+ return gulp.src(paths.images + '/*')
+ .pipe(imagemin()) // Compresses PNG, JPEG, GIF and SVG images
+ .pipe(gulp.dest(paths.images))
+});
-gulp.task('images', function () {
- runSequence(['favicons-images', 'nonfavicons-images'])
-})
-// endregion
+// Run django server
+gulp.task('runServer', function(cb) {
+ var cmd = spawn('python', ['manage.py', 'runserver'], {stdio: 'inherit'});
+ cmd.on('close', function(code) {
+ console.log('runServer exited with code ' + code);
+ cb(code);
+ });
+});
-// region scripts
-gulp.task('js-scripts', function (cb) {
- pump([gulp.src(paths.scriptsJs_files),
- concat(paths.build_scriptsFileName),
- uglify(),
- rename({suffix: '.min'}),
- gulp.dest(paths.build)],
- cb)
-})
+// Browser sync server for live reload
+gulp.task('browserSync', function() {
+ browserSync.init(
+ [paths.css + "/*.css", paths.js + "*.js", paths.templates + '*.html'], {
+ proxy: "localhost:8000"
+ });
+});
-gulp.task('scripts', function () {
- runSequence('js-scripts')
-})
-// endregion
+// Watch
+gulp.task('watch', function() {
-// region styles
-gulp.task('sass-styles', function (cb) {
- pump([gulp.src(paths.stylesSass_files),
- sass(),
- gulp.dest(paths.stylesCss)],
- cb
- )
-})
+ gulp.watch(paths.sass + '/*.scss', ['styles']);
+ gulp.watch(paths.js + '/*.js', ['scripts']).on("change", reload);
+ gulp.watch(paths.images + '/*', ['imgCompression']);
+ gulp.watch(paths.templates + '/**/*.html').on("change", reload);
-gulp.task('css-styles', function (cb) {
- pump([gulp.src(paths.stylesCss_files),
- concat(paths.build_stylesFileName),
- autoprefixer({browsers: ['last 2 versions']}),
- pixrem(),
- cleanCSS({rebaseTo: '../../'}),
- rename({suffix: '.min'}),
- gulp.dest(paths.build)],
- cb)
-})
+});
-gulp.task('styles', function () {
- runSequence('sass-styles', 'css-styles')
-})
-// endregion
-
-// region build
-gulp.task('build', function () {
- runSequence(['images', 'scripts', 'styles'])
-})
-
-gulp.task('clean-build', function (cb) {
- pump([gulp.src(paths.build),
- clean()],
- cb)
-})
-// endregion
-
-gulp.task('init-browserSync', function () {
- browserSync.init({
- host: 'localhost:8000'
- })
-})
-
-gulp.task('watch', function () {
- gulp.watch(paths.images_files, ['images']).on('change', browserSync.reload)
- gulp.watch(paths.scripts_files, ['scripts']).on('change', browserSync.reload)
- gulp.watch(paths.styles_files, ['styles']).on('change', browserSync.reload)
- gulp.watch(paths.templates_files).on('change', browserSync.reload)
-})
-
-gulp.task('default', function () {
- runSequence('build', 'init-browserSync', 'watch')
-})
+// Default task
+gulp.task('default', function() {
+ runSequence(['styles', 'scripts', 'imgCompression'], 'runServer', 'browserSync', 'watch');
+});
diff --git a/{{cookiecutter.project_slug}}/package.json b/{{cookiecutter.project_slug}}/package.json
index 5a15270d..0c8af427 100644
--- a/{{cookiecutter.project_slug}}/package.json
+++ b/{{cookiecutter.project_slug}}/package.json
@@ -16,18 +16,18 @@
"pixrem": "~1.3.1",
"time-grunt": "~1.2.1"
{% elif cookiecutter.js_task_runner == 'Gulp' %}
- "browser-sync": "^2.18.8",
+ "browser-sync": "^2.14.0",
+ "del": "^2.2.2",
"gulp": "^3.9.1",
"gulp-autoprefixer": "^3.1.1",
- "gulp-clean": "^0.3.2",
- "gulp-clean-css": "^3.0.4",
- "gulp-concat": "^2.6.1",
- "gulp-imagemin": "^3.1.1",
+ "gulp-cssnano": "^2.1.2",
+ "gulp-imagemin": "^3.0.3",
"gulp-pixrem": "^1.0.0",
+ "gulp-plumber": "^1.1.0",
"gulp-rename": "^1.2.2",
- "gulp-sass": "^3.1.0",
- "gulp-uglify": "^2.1.2",
- "pump": "^1.0.2",
+ "gulp-sass": "^2.3.2",
+ "gulp-uglify": "^2.0.0",
+ "gulp-util": "^3.0.7",
"run-sequence": "^1.2.2"
{% endif %}
},
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/.gitkeep b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/css/project.css b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/css/project.css
new file mode 100644
index 00000000..5f23c427
--- /dev/null
+++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/css/project.css
@@ -0,0 +1,38 @@
+/* These styles are generated from project.scss. */
+
+.alert-debug {
+ color: black;
+ background-color: white;
+ border-color: #d6e9c6;
+}
+
+.alert-error {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+/* This is a fix for the bootstrap4 alpha release */
+@media (max-width: 47.9em) {
+ .navbar-nav .nav-item {
+ float: none;
+ width: 100%;
+ display: inline-block;
+ }
+
+ .navbar-nav .nav-item + .nav-item {
+ margin-left: 0;
+ }
+
+ .nav.navbar-nav.pull-xs-right {
+ float: none !important;
+ }
+}
+
+/* Display django-debug-toolbar.
+ See https://github.com/django-debug-toolbar/django-debug-toolbar/issues/742
+ and https://github.com/pydanny/cookiecutter-django/issues/317
+*/
+[hidden][style="display: block;"] {
+ display: block !important;
+}
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/images/.gitkeep b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/images/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/js/project.js b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/js/project.js
new file mode 100644
index 00000000..91ab9e2d
--- /dev/null
+++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/js/project.js
@@ -0,0 +1,21 @@
+/* Project specific Javascript goes here. */
+
+/*
+Formatting hack to get around crispy-forms unfortunate hardcoding
+in helpers.FormHelper:
+
+ if template_pack == 'bootstrap4':
+ grid_colum_matcher = re.compile('\w*col-(xs|sm|md|lg|xl)-\d+\w*')
+ using_grid_layout = (grid_colum_matcher.match(self.label_class) or
+ grid_colum_matcher.match(self.field_class))
+ if using_grid_layout:
+ items['using_grid_layout'] = True
+
+Issues with the above approach:
+
+1. Fragile: Assumes Bootstrap 4's API doesn't change (it does)
+2. Unforgiving: Doesn't allow for any variation in template design
+3. Really Unforgiving: No way to override this behavior
+4. Undocumented: No mention in the documentation, or it's too hard for me to find
+*/
+$('.form-group').removeClass('row');
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/scripts/.gitkeep b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/scripts/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/scripts/js/project.js b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/scripts/js/project.js
deleted file mode 100644
index 36017799..00000000
--- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/scripts/js/project.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Project specific Javascript goes here. */
-
-/*
- Formatting hack to get around crispy-forms unfortunate hardcoding
- in helpers.FormHelper:
-
- if template_pack == 'bootstrap4':
- grid_colum_matcher = re.compile('\w*col-(xs|sm|md|lg|xl)-\d+\w*')
- using_grid_layout = (grid_colum_matcher.match(self.label_class) or
- grid_colum_matcher.match(self.field_class))
- if using_grid_layout:
- items['using_grid_layout'] = True
-
- Issues with the above approach:
-
- 1. Fragile: Assumes Bootstrap 4's API doesn't change (it does)
- 2. Unforgiving: Doesn't allow for any variation in template design
- 3. Really Unforgiving: No way to override this behavior
- 4. Undocumented: No mention in the documentation, or it's too hard for me to find
- */
-$('.form-group').removeClass('row')
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/styles/.gitkeep b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/styles/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/styles/css/project.css b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/styles/css/project.css
deleted file mode 100644
index 6b20fb3d..00000000
--- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/styles/css/project.css
+++ /dev/null
@@ -1,26 +0,0 @@
-.alert-debug {
- background-color: #fff;
- border-color: #d6e9c6;
- color: #000; }
-
-.alert-error {
- background-color: #f2dede;
- border-color: #eed3d7;
- color: #b94a48; }
-
-.navbar {
- border-radius: 0px; }
-
-@media (max-width: 47.9em) {
- .navbar-nav .nav-item {
- display: inline-block;
- float: none;
- width: 100%; }
- .navbar-nav .nav-item + .nav-item {
- margin-left: 0; }
- .nav.navbar-nav.pull-xs-right {
- float: none !important; } }
-
-[hidden][style="display: block;"] {
- display: block !important; }
-
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/styles/sass/project.scss b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/styles/sass/project.scss
deleted file mode 100644
index cc30bfcb..00000000
--- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/static/styles/sass/project.scss
+++ /dev/null
@@ -1,71 +0,0 @@
-// project specific CSS goes here
-
-////////////////////////////////
-//Variables//
-////////////////////////////////
-
-// Alert colors
-
-$white: #fff;
-$mint-green: #d6e9c6;
-$black: #000;
-$pink: #f2dede;
-$dark-pink: #eed3d7;
-$red: #b94a48;
-
-////////////////////////////////
-//Alerts//
-////////////////////////////////
-
-// bootstrap alert CSS, translated to the django-standard levels of
-// debug, info, success, warning, error
-
-.alert-debug {
- background-color: $white;
- border-color: $mint-green;
- color: $black;
-}
-
-.alert-error {
- background-color: $pink;
- border-color: $dark-pink;
- color: $red;
-}
-
-////////////////////////////////
-//Navbar//
-////////////////////////////////
-
-// This is a fix for the bootstrap4 alpha release
-
-.navbar {
- border-radius: 0px;
-}
-
-@media (max-width: 47.9em) {
- .navbar-nav .nav-item {
- display: inline-block;
- float: none;
- width: 100%;
- }
-
- .navbar-nav .nav-item + .nav-item {
- margin-left: 0;
- }
-
- .nav.navbar-nav.pull-xs-right {
- float: none !important;
- }
-}
-
-////////////////////////////////
-//Django Toolbar//
-////////////////////////////////
-
-// Display django-debug-toolbar.
-// See https://github.com/django-debug-toolbar/django-debug-toolbar/issues/742
-// and https://github.com/pydanny/cookiecutter-django/issues/317
-
-[hidden][style="display: block;"] {
- display: block !important;
-}
diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/templates/base.html b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/templates/base.html
index e49aaa21..e947da5b 100644
--- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/templates/base.html
+++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/templates/base.html
@@ -20,7 +20,7 @@
{% endraw %}{% if cookiecutter.use_compressor == "y" %}{% raw %}{% compress css %}{% endraw %}{% endif %}{% raw %}
-
+
{% endraw %}{% if cookiecutter.use_compressor == "y" %}{% raw %}{% endcompress %}{% endraw %}{% endif %}{% raw %}
{% endblock %}
@@ -88,13 +88,6 @@
================================================== -->
{% block javascript %}
-
- {% if debug %}
-
- {% endif %}
-
@@ -104,7 +97,7 @@
{% endraw %}{% if cookiecutter.use_compressor == "y" %}{% raw %}{% compress js %}{% endraw %}{% endif %}{% raw %}
-
+
{% endraw %}{% if cookiecutter.use_compressor == "y" %}{% raw %}{% endcompress %}{% endraw %}{% endif %}{% raw %}
{% endblock javascript %}