Änderungen am layout wie die config Dateien abgelegt werden, um passwörter leichter aus dem öffentlichen GIT repository verschwinden zu lassen

This commit is contained in:
Christian Berg
2016-09-14 00:57:57 +02:00
parent 12c9a6e0e9
commit 6f1512906d
5 changed files with 275 additions and 32 deletions

2
.gitignore vendored
View File

@@ -67,4 +67,4 @@ target/
/static/
/templates/
.[a-zA-Z]*
/src/kasu/settings/production.py
local_settings.py

256
src/kasu/settings.py Normal file
View File

@@ -0,0 +1,256 @@
# -*- coding: utf-8 -*-
from os import path
gettext = lambda s: s
ADMINS = (('Max Mustermann', 'email@example.com'),)
ALLOWED_HOSTS = ['.kasu.at']
FORCE_SCRIPT_NAME = ""
INTERNAL_IPS = ('127.0.0.1',)
MANAGERS = ADMINS
ROOT_URLCONF = 'kasu.urls'
SECRET_KEY = 'set in local_settings'
SESSION_COOKIE_DOMAIN = 'kasu.at' # Die ganze Domain Kasu
SESSION_COOKIE_AGE = 15768000 # Session dauer: 4 Wochen
SESSION_COOKIE_SECURE = True
SITE_ID = 1
# Path Info
PROJECT_PATH = path.abspath(path.join(path.dirname(__file__), '..', '..'))
LOCALE_PATHS = (path.join(PROJECT_PATH, 'kasu', 'locale/'),)
MEDIA_ROOT = path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = path.join(PROJECT_PATH, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.FileSystemFinder',
'compressor.finders.CompressorFinder',
)
# Apps
PREREQ_APPS = [
'grappelli',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.humanize',
'django.contrib.messages',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.staticfiles',
'django_comments',
'ckeditor',
'ckeditor_uploader',
'easy_thumbnails',
'social.apps.django_app.default',
]
PROJECT_APPS = [
'kasu',
'content',
'events',
'membership',
'maistar_ranking',
'mahjong_ranking',
]
INSTALLED_APPS = PREREQ_APPS + PROJECT_APPS
# Caches
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
#Request Middleware
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'mahjong_ranking.middleware.DenormalizationUpdateMiddleware',
]
#Template Settings
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [path.join(PROJECT_PATH, 'templates/')],
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.csrf',
'django.core.context_processors.request',
'django.contrib.messages.context_processors.messages',
'content.context_processors.content_menus',
'events.context_processors.upcoming_events',
'social.apps.django_app.context_processors.backends',
'social.apps.django_app.context_processors.login_redirect',
],
'loaders': [
('django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]),
],
},
},
]
#E-Mail Settings (set in local_settings)
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = ""
EMAIL_PORT = ""
EMAIL_HOST_USER = ""
EMAIL_HOST_PASSWORD = ""
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = ""
# Login Settings
ACCOUNT_ACTIVATION_DAYS = 5
AUTH_USER_MODEL = 'membership.Membership'
AUTHENTICATION_BACKENDS = ('social.backends.facebook.FacebookOAuth2',
'social.backends.google.GoogleOAuth2',
'social.backends.twitter.TwitterOAuth',
'django.contrib.auth.backends.ModelBackend',)
LOGIN_URL = '/membership/login/'
LOGIN_ERROR_URL = '/membership/login/error/'
LOGIN_REDIRECT_URL = '/users/'
SOCIAL_AUTH_CHANGE_SIGNAL_ONLY = False
SOCIAL_AUTH_ENABLED_BACKENDS = ('facebook-oauth2', 'google-oauth2', 'twitter')
SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/users/'
SOCIAL_AUTH_SLUGIFY_USERNAMES = True
SOCIAL_AUTH_FACEBOOK_KEY = ''
SOCIAL_AUTH_FACEBOOK_SECRET = ''
SOCIAL_AUTH_FACEBOOK_SCOPE = ['user_about_me', 'email']
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ''
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ''
SOCIAL_AUTH_TWITTER_KEY = ''
SOCIAL_AUTH_TWITTER_SECRET = ''
# Localization
USE_I18N = True
USE_L10N = True
LANGUAGE_CODE = 'de-at'
LANGUAGES = (('de', gettext('German')), ('en', gettext("English")))
TIME_ZONE = 'Europe/Vienna'
USE_TZ = True
# CK Editor
CKEDITOR_UPLOAD_PATH = "uploads/"
CKEDITOR_IMAGE_BACKEND = 'pillow'
CKEDITOR_JQUERY_URL = '/static/js/jquery.min.js'
CKEDITOR_CONFIGS = {'default': {
'width': '100%',
'extraPlugins': 'divarea',
'toolbarGroups': """[
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] },
{ name: 'links' },
{ name: 'insert' },
{ name: 'forms' },
{ name: 'tools' },
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
{ name: 'others' },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
{ name: 'styles' },
{ name: 'colors' },
{ name: 'about' }
];"""
}
}
# credentials for facebook feed synchronisation (set in local_settings)
FACEBOOK_APP_ID = ''
FACEBOOK_ACCESS_TOKEN = ''
# Settings for the redactor WYSIWYG Editor
REDACTOR_OPTIONS = {'lang': 'de', 'linebreaks': True}
REDACTOR_UPLOAD = 'uploads/'
#crendetials for reCaptcha (set in local_settings)
RECAPTCHA_PUBLIC_KEY = ''
RECAPTCHA_PRIVATE_KEY = ''
RECAPTCHA_THEME = 'red'
# Settings for the Thumbnailer
THUMBNAIL_ALIASES = {'': {
'avatar': {'size': (70, 70), 'crop': 'smart', 'replace_alpha': '#ffffff'},
'article': {'size': (200, 120), 'crop': 'smart',
'replace_alpha': '#ffffff'},
'callout': {'size': (940, 300), 'crop': 'smart', 'upscale': True,
'replace_alpha': '#ffffff'},
'display': {'size': (940, 940), 'replace_alpha': '#ffffff'},
'thumbnail': {'size': (140, 140), 'crop': 'smart',
'replace_alpha': '#ffffff'},
}}
THUMBNAIL_BASEDIR = 'thumbs'
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'filters': {
'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler',
}
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'INFO',
'propagate': True,
},
'django.request': {
'handlers': ['console', 'mail_admins'],
'level': 'ERROR',
'propagate': False,
},
'kasu': {
'handlers': ['console', 'mail_admins'],
'level': 'DEBUG',
'propagate': False,
},
}
}
try:
from .local_settings import *
except ImportError:
pass

View File

@@ -1,32 +1,35 @@
# -*- encoding: utf-8 -*-
from django.conf import settings
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
from django.views.generic.base import TemplateView
from content.feeds import LatestNews, LatestComments
from content.views import * # @UnusedWildImport
from events.views import EventListIcal
from content.feeds import LatestNews, LatestComments
from membership.views import MembershipDetail
from django.views.generic.base import TemplateView, RedirectView
admin.autodiscover()
urlpatterns = patterns(
'',
url(r'^$', StartPage.as_view()),
url(r'^(?P<path>[\-\d\w\/]+)\.html$', PageHtml.as_view(), name='view-page'),
url(r'^(?P<path>[\-\d\w\/]+)\.pdf$', PagePdf.as_view()),
url(r'^404/$', TemplateView.as_view(template_name='404.html')),
url(r'^add_page/(?P<path>[\+\.\-\d\w\/]+)/$', PageAddForm.as_view(), name='add-page'),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^ckeditor/', include('ckeditor_uploader.urls')),
url(r'^comments/', include('django_comments.urls')),
url(r'^content/', include('content.urls')),
url(r'^edit_page/(?P<path>[\+\.\-\d\w\/]+)/$', PageEditForm.as_view(), name='edit-page'),
url(r'^events/', include('events.urls')),
url(r'^events.ics$', EventListIcal.as_view(), name='events-ical'),
url(r'^feeds/latest/$', LatestNews(), name='feed-latest-news'),
url(r'^feeds/comments/$', LatestComments(), name='feed-latest-comments'),
url(r'^gallery/', include('events.gallery_urls')),
url(r'^google25dabc1a49a9ef03.html$', TemplateView.as_view(
template_name='google25dabc1a49a9ef03.html')),
url(r'^google25dabc1a49a9ef03.html$', TemplateView.as_view(template_name='google25dabc1a49a9ef03.html')),
url(r'^grappelli/', include('grappelli.urls')),
url(r'^i18n/', include('django.conf.urls.i18n'), name='start-page'),
url(r'^index.html$', StartPage.as_view()),
@@ -37,32 +40,18 @@ urlpatterns = patterns(
url(r'^ranking/', include('maistar_ranking.urls')),
url(r'^robots.txt$', TemplateView.as_view(template_name='robots.txt')),
url(r'^users/$', MembershipDetail.as_view(), name='membership-details'),
url(r'^users/(?P<username>[\-\.\d\w]+)/$',
MembershipDetail.as_view(), name='membership-details'),
url(r'^users/(?P<username>[\-\.\d\w]+)/$', MembershipDetail.as_view(), name='membership-details'),
)
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
)
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
if 'rosetta' in settings.INSTALLED_APPS:
urlpatterns += patterns('', url(r'^rosetta/',
include('rosetta.urls')),)
urlpatterns += patterns('', url(r'^rosetta/', include('rosetta.urls')),)
if 'debug_toolbar' in settings.INSTALLED_APPS:
import debug_toolbar
urlpatterns += patterns('', url(r'^__debug__/',
include(debug_toolbar.urls)),)
urlpatterns += patterns('', url(r'^__debug__/', include(debug_toolbar.urls)),)
urlpatterns += patterns('',
url(r'^add_page/(?P<path>[\+\.\-\d\w\/]+)/$',
PageAddForm.as_view(), name='add-page'),
url(r'^edit_page/(?P<path>[\+\.\-\d\w\/]+)/$',
PageEditForm.as_view(), name='edit-page'),
url(r'^(?P<path>[\-\d\w\/]+)\.html$',
PageHtml.as_view(), name='view-page'),
url(r'^(?P<path>[\-\d\w\/]+)\.pdf$',
PagePdf.as_view()),
)

View File

@@ -5,7 +5,6 @@ SYNC_ASSESTS="requirements templates"
SYNC_SOURCECODE="src"
EXCLUDE_FILES="*.pyc"
# ./cleanup.sh
grunt
echo "Syncing project assets ..."
@@ -16,8 +15,7 @@ ssh $SSH_LOGIN "virtualenv/bin/pip install --upgrade -r requirements/base.txt"
echo "Syncing Sourcecode ..."
find . -name "*.pyc" -exec rm -rf {} \;
rsync -r --copy-links --delete $SYNC_SOURCECODE $SSH_LOGIN:~/
rsync -r --copy-links --delete $SYNC_SOURCECODE $SSH_LOGIN:~/ --exclude 'src/kasu/local_settings.py'
echo "Rebuild and reload django..."
ssh $SSH_LOGIN "rm src/kasu/settings/development.*"

View File

@@ -1,4 +1,4 @@
export DJANGO_SETTINGS_MODULE=kasu.settings.dev
source virtenv/bin/activate
export DJANGO_SETTINGS_MODULE=kasu.settings
source .virtualenv/bin/activate
./manage.py runserver 0.0.0.0:8080