# Make it a function, so that it works with `source`
start_project() {
-local DJANGO_REQ='Django>=1.7,<1.8'
+local DJANGO_REQ='Django>=1.8,<1.9'
local DJANGO_ROOT='src'
local PYPI='https://py.mdrn.pl:8443/simple'
local DEFAULT_PYTHON="`which python3.4`"
chmod +x "$DJANGO_ROOT"/manage.py
mv _gitignore .gitignore
+cp etc/local_settings.py.sample etc/local_settings.py
+cp etc/local_settings_test.py.sample etc/local_settings_test.py
+ln -s ../../../etc/local_settings.py ../../../etc/local_settings_test.py $DJANGO_ROOT/$PROJECT/settings/
echo -e "${strong}Installing requirements...${normal}"
-pip install -i "$PYPI" -r requirements.txt
-echo -e "${strong}Installing developer requirements...${normal}"
-pip install -i "$PYPI" -r requirements-dev.txt
-echo -e "${strong}Running syncdb...${normal}"
-"$DJANGO_ROOT"/manage.py syncdb --noinput
+pip install -i "$PYPI" -r requirements/dev.txt
+echo -e "${strong}Running migrate...${normal}"
+"$DJANGO_ROOT"/manage.py migrate #--noinput
echo -e "${strong}Starting new git repository...${normal}"
git init
/var
-localsettings.py
+etc/local_settings*.py
*~
*.orig
*.log
--- /dev/null
+from .dev import *
+
+ADMINS = [
+ # ('Your Name', 'your_email@domain.com'),
+]
+++ /dev/null
--i https://py.mdrn.pl:8443/simple
-
-fnpdeploy
+++ /dev/null
--i https://py.mdrn.pl:8443/simple
-
-Django>=1.7,<1.8
-django-pipeline>=1.3,<1.4
-django-piwik
-#pyScss
-#git+git://github.com/Kronuz/pyScss.git@d8f4da23a3c87696a75b3830ed4ab49b75550a93#egg=pyScss
-#TODO: pyScss support, for now just install sass
-
-django_cas_ng>=3.4,<3.5
-fnpdjango>=0.2,<0.3
-
-ipython
--- /dev/null
+-i https://py.mdrn.pl:8443/simple
+
+Django>=1.8,<1.9
+django-pipeline>=1.3,<1.4
+django-piwik
+#pyScss
+#git+git://github.com/Kronuz/pyScss.git@d8f4da23a3c87696a75b3830ed4ab49b75550a93#egg=pyScss
+#TODO: pyScss support, for now just install sass
+
+django_cas_ng>=3.4,<3.5
+fnpdjango>=0.2,<0.3
+
+ipython
--- /dev/null
+-r base.txt
+
+fnpdeploy
+++ /dev/null
-DEBUG = True
-ADMINS = MANAGERS = [
- ('Admin', 'admin@example.com'),
-]
-EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
-
-if False:
- INSTALLED_APPS += ('debug_toolbar',)
- MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
- INTERNAL_IPS = ('127.0.0.1',)
-
-SECRET_KEY = 'secret_key'
-from .paths import *
-from .basic import *
-from .apps import *
-from .locale import *
-from .auth import *
-from .context import *
-from .middleware import *
-from .static import *
-from .logging import *
-from .contrib import *
-from .custom import *
+# -*- coding: utf-8 -*-
+# Settings loader for {{ project_name }} project.
+from __future__ import unicode_literals
+import sys
-# Load localsettings, if they exist
-try:
- from ..localsettings import *
-except ImportError:
- pass
+
+if len(sys.argv) > 1 and sys.argv[1] == 'test':
+ try:
+ from .local_settings_test import *
+ except ImportError:
+ from os import path
+ local_settings_path = path.dirname(__file__) + '/local_settings_test.py'
+ if not path.exists(local_settings_path):
+ # No local test settings.
+ from .test import *
+ else:
+ # Error in local test settings - propagate.
+ raise
+else:
+ try:
+ from .local_settings import *
+ except ImportError:
+ from os import path
+ local_settings_path = path.dirname(__file__) + '/local_settings.py'
+ if not path.exists(local_settings_path):
+ # No local settings file.
+ # Assuming dev mode, because the file would've been created during deployment.
+ from warnings import warn
+ warn("File '%s' does not exist. Loading dev settings as a fallback." % local_settings_path)
+ from .dev import *
+ else:
+ # Error in local settings - propagate.
+ raise
+++ /dev/null
-INSTALLED_APPS = (
- '{{ project_name }}',
- 'fnpdjango',
- 'pipeline',
- # Disable, if not using Piwik.
- 'piwik',
-
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'django.contrib.admin',
- 'django.contrib.admindocs',
-)
+++ /dev/null
-# Remove if not using CAS.
-AUTHENTICATION_BACKENDS = (
- 'django.contrib.auth.backends.ModelBackend',
- 'django_cas_ng.backends.CASBackend',
-)
-
--- /dev/null
+# -*- coding: utf-8 -*-
+# Base settings for {{ project_name }} project.
+from __future__ import unicode_literals
+
+from os import path
+
+PROJECT_DIR = path.dirname(path.dirname(path.dirname(path.abspath(path.dirname(__file__)))))
+
+
+# =============
+# DJANGO CORE
+# =============
+
+INSTALLED_APPS = (
+ '{{ project_name }}',
+ 'fnpdjango',
+ 'pipeline',
+ # Disable, if not using Piwik.
+ 'piwik',
+
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.messages',
+ 'django.contrib.sessions',
+ 'django.contrib.staticfiles',
+)
+
+LANGUAGE_CODE = 'pl'
+
+LANGUAGES = (
+ ('pl', u'polski'),
+# ('en', u'English'),
+)
+
+MEDIA_ROOT = path.join(PROJECT_DIR, 'var/media/')
+MEDIA_URL = '/media/'
+
+MIDDLEWARE_CLASSES = [
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ #'django.middleware.locale.LocaleMiddleware',
+ 'fnpdjango.middleware.URLLocaleMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django_cas_ng.middleware.CASMiddleware', # Remove if not using CAS.
+ 'django.contrib.messages.middleware.MessageMiddleware',
+ 'fnpdjango.middleware.SetRemoteAddrFromXRealIP'
+]
+
+ROOT_URLCONF = '{{ project_name }}.urls'
+
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ 'django.template.context_processors.i18n',
+ ],
+ },
+ },
+]
+
+
+TIME_ZONE = 'Europe/Warsaw'
+USE_I18N = True
+USE_L10N = True
+USE_TZ = True
+WSGI_APPLICATION = '{{ project_name }}.wsgi.application'
+
+
+# =============
+# DJANGO AUTH
+# =============
+
+# Remove if not using CAS.
+AUTHENTICATION_BACKENDS = (
+ 'django.contrib.auth.backends.ModelBackend',
+ 'django_cas_ng.backends.CASBackend',
+)
+
+# ===============
+# DJANGO STATIC
+# ===============
+
+STATIC_ROOT = path.join(PROJECT_DIR, 'var/static/')
+STATIC_URL = '/static/'
+STATICFILES_STORAGE = 'fnpdjango.utils.pipeline_storage.GzipPipelineCachedStorage'
+
+STATICFILES_FINDERS = [
+ 'django.contrib.staticfiles.finders.FileSystemFinder',
+ 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
+ 'pipeline.finders.PipelineFinder',
+]
+
+
+# ========
+# CAS_NG
+# ========
+
+CAS_SERVER_URL = 'https://logowanie.nowoczesnapolska.org.pl/cas/'
+CAS_VERSION = '3'
+
+
+# ==========
+# PIPELINE
+# ==========
+
+PIPELINE_CSS = {
+ 'base': {
+ 'source_filenames': (
+ 'css/base.scss',
+ ),
+ 'output_filename': 'compressed/base.css',
+ },
+}
+
+PIPELINE_JS = {
+ 'base': {
+ 'source_filenames': (
+ 'jquery.min.js',
+ ),
+ 'output_filename': 'compressed/base.js',
+ },
+}
+
+PIPELINE_CSS_COMPRESSOR = None
+PIPELINE_JS_COMPRESSOR = None
+
+PIPELINE_COMPILERS = (
+ 'pipeline.compilers.sass.SASSCompiler',
+)
+++ /dev/null
-from os import path
-from . import PROJECT_DIR
-
-
-DEBUG = False
-TEMPLATE_DEBUG = DEBUG
-
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
- 'NAME': path.join(PROJECT_DIR, 'var', 'dev.db'), # Or path to database file if using sqlite3.
- 'USER': '', # Not used with sqlite3.
- 'PASSWORD': '', # Not used with sqlite3.
- 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
- 'PORT': '', # Set to empty string for default. Not used with sqlite3.
- }
-}
-
-SITE_ID = 1
-
-SILENCED_SYSTEM_CHECKS = [
- '1_6.W001',
- ]
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
-# 'django.template.loaders.eggs.Loader',
-)
-
-ROOT_URLCONF = '{{ project_name }}.urls'
-
-# Python dotted path to the WSGI application used by Django's runserver.
-WSGI_APPLICATION = '{{ project_name }}.wsgi.application'
-
-TEMPLATE_DIRS = (
- # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
-)
+++ /dev/null
-from . import INSTALLED_APPS
-
-
-TEMPLATE_CONTEXT_PROCESSORS = tuple(x for x in (
- "django.contrib.auth.context_processors.auth",
- "django.core.context_processors.debug",
- "django.core.context_processors.i18n",
- "django.core.context_processors.media",
- "django.core.context_processors.static",
- "django.core.context_processors.tz",
- "django.contrib.messages.context_processors.messages",
- "django.core.context_processors.request"
-) if x is not None)
+++ /dev/null
-# CAS-specific
-CAS_SERVER_URL = 'https://logowanie.nowoczesnapolska.org.pl/cas/'
-CAS_VERSION = '3'
--- /dev/null
+from .base import *
+
+_DEBUG_TOOLBAR = False
+
+ADMINS = MANAGERS = [
+ ('Admin', 'admin@example.com'),
+]
+
+DEBUG = True
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': path.join(PROJECT_DIR, 'var', 'db.sqlite3'),
+ }
+}
+
+EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
+INTERNAL_IPS = ['127.0.0.1']
+SECRET_KEY = 'secret_key'
+
+for _t in TEMPLATES:
+ _t['OPTIONS']['debug'] = DEBUG
+ _t['OPTIONS']['context_processors'].append('django.template.context_processors.debug')
+
+if _DEBUG_TOOLBAR:
+ INSTALLED_APPS += ('debug_toolbar',)
+ MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
+
+++ /dev/null
-# -*- coding: utf-8 -*-
-
-LANGUAGES = (
- ('pl', u'polski'),
-# ('en', u'English'),
-)
-
-# Local time zone for this installation. Choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-# although not all choices may be available on all operating systems.
-# On Unix systems, a value of None will cause Django to use the same
-# timezone as the operating system.
-# If running in a Windows environment this must be set to the same as your
-# system time zone.
-TIME_ZONE = None
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'pl'
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-
-# If you set this to False, Django will not format dates, numbers and
-# calendars according to the current locale.
-USE_L10N = True
-
-# If you set this to False, Django will not use timezone-aware datetimes.
-USE_TZ = True
+++ /dev/null
-# A sample logging configuration. The only tangible logging
-# performed by this configuration is to send an email to
-# the site admins on every HTTP 500 error when DEBUG=False.
-# See http://docs.djangoproject.com/en/dev/topics/logging for
-# more details on how to customize your logging configuration.
-LOGGING = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'filters': {
- 'require_debug_false': {
- '()': 'django.utils.log.RequireDebugFalse'
- }
- },
- 'handlers': {
- 'mail_admins': {
- 'level': 'ERROR',
- 'filters': ['require_debug_false'],
- 'class': 'django.utils.log.AdminEmailHandler'
- }
- },
- 'loggers': {
- 'django.request': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': True,
- },
- }
-}
+++ /dev/null
-
-MIDDLEWARE_CLASSES = [
- 'django.contrib.sessions.middleware.SessionMiddleware',
- #'django.middleware.locale.LocaleMiddleware',
- 'fnpdjango.middleware.URLLocaleMiddleware',
-
- 'django.middleware.common.CommonMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django_cas_ng.middleware.CASMiddleware', # Remove if not using CAS.
- 'django.contrib.messages.middleware.MessageMiddleware',
- # Uncomment the next line for simple clickjacking protection:
- # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
- 'fnpdjango.middleware.SetRemoteAddrFromXRealIP'
-]
+++ /dev/null
-from os import path
-
-PROJECT_DIR = path.dirname(path.dirname(path.dirname(path.abspath(path.dirname(__file__)))))
+++ /dev/null
-from os import path
-from .paths import PROJECT_DIR
-
-
-MEDIA_ROOT = path.join(PROJECT_DIR, 'var/media/')
-MEDIA_URL = '/media/'
-STATIC_ROOT = path.join(PROJECT_DIR, 'var/static/')
-STATIC_URL = '/static/'
-
-STATICFILES_FINDERS = (
- 'django.contrib.staticfiles.finders.FileSystemFinder',
- 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
-# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
-)
-
-STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
-PIPELINE_CSS_COMPRESSOR = None
-PIPELINE_JS_COMPRESSOR = None
-PIPELINE_CSS = {
- 'base': {
- 'source_filenames': (
- 'css/base.scss',
- ),
- 'output_filename': 'compressed/base.css',
- },
-}
-PIPELINE_JS = {
- 'base': {
- 'source_filenames': (
- 'jquery.min.js',
- ),
- 'output_filename': 'compressed/base.js',
- },
-}
-
-PIPELINE_COMPILERS = (
- 'pipeline.compilers.sass.SASSCompiler',
-)
-
-PIPELINE_STORAGE = 'pipeline.storage.PipelineFinderStorage'
-from django.conf.urls import patterns, include, url
+from django.conf.urls import include, url
from django.conf import settings
from django.contrib import admin
+import django_cas_ng.views
-urlpatterns = patterns('',
+urlpatterns = [
# Examples:
- # url(r'^$', '{{ project_name }}.views.home', name='home'),
+ # url(r'^$', {{ project_name }}.views.home, name='home'),
# url(r'^{{ project_name }}/', include('foo.urls')),
-
# Admin stuff.
- url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
# CAS stuff.
- url(r'^accounts/login/$', 'django_cas_ng.views.login'),
- url(r'^accounts/logout/$', 'django_cas_ng.views.logout'),
-)
+ url(r'^accounts/login/$', django_cas_ng.views.login),
+ url(r'^accounts/logout/$', django_cas_ng.views.logout),
+]
# Media in DEBUG mode
if settings.DEBUG:
- urlpatterns += patterns('',
- url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
+ from django.views.static import serve
+ urlpatterns += [
+ url(r'^media/(?P<path>.*)$', serve, {
'document_root': settings.MEDIA_ROOT,
+ 'show_indexes': True,
}),
- )
+ ]
"""
WSGI config for {{ project_name }} project.
-This module contains the WSGI application used by Django's development server
-and any production WSGI deployments. It should expose a module-level variable
-named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
-this application via the ``WSGI_APPLICATION`` setting.
-
-Usually you will have the standard Django WSGI application here, but it also
-might make sense to replace the whole Django WSGI application with a custom one
-that later delegates to the Django one. For example, you could introduce WSGI
-middleware here, or combine a Django application with an application of another
-framework.
+It exposes the WSGI callable as a module-level variable named ``application``.
+For more information on this file, see
+https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/
"""
+
import os
-# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
-# if running multiple sites in the same mod_wsgi process. To fix this, use
-# mod_wsgi daemon mode with each site in its own daemon process, or use
-# os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"
+from django.core.wsgi import get_wsgi_application
+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
-# This application object is used by any WSGI server configured to use this
-# file. This includes Django's development server, if the WSGI_APPLICATION
-# setting points here.
-from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
-
-# Apply WSGI middleware here.
-# from helloworld.wsgi import HelloWorldApplication
-# application = HelloWorldApplication(application)