mirror of
https://github.com/Hopiu/django-fobi.git
synced 2026-05-08 21:14:48 +00:00
476 lines
19 KiB
Python
476 lines
19 KiB
Python
from __future__ import absolute_import, unicode_literals
|
|
|
|
import os
|
|
|
|
from django_nine.versions import DJANGO_GTE_1_9, DJANGO_GTE_1_10
|
|
|
|
# Full filesystem path to the project.
|
|
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
# Name of the directory for the project.
|
|
PROJECT_DIRNAME = PROJECT_ROOT.split(os.sep)[-1]
|
|
|
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
|
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
|
|
|
gettext = lambda s: s
|
|
|
|
######################
|
|
# MEZZANINE SETTINGS #
|
|
######################
|
|
|
|
# The following settings are already defined with default values in
|
|
# the ``defaults.py`` module within each of Mezzanine's apps, but are
|
|
# common enough to be put here, commented out, for convenient
|
|
# overriding. Please consult the settings documentation for a full list
|
|
# of settings Mezzanine implements:
|
|
# http://mezzanine.jupo.org/docs/configuration.html#default-settings
|
|
|
|
# Controls the ordering and grouping of the admin menu.
|
|
#
|
|
# ADMIN_MENU_ORDER = (
|
|
# ("Content", ("pages.Page", "blog.BlogPost",
|
|
# "generic.ThreadedComment", ("Media Library", "fb_browse"),)),
|
|
# ("Site", ("sites.Site", "redirects.Redirect", "conf.Setting")),
|
|
# ("Users", ("auth.User", "auth.Group",)),
|
|
# )
|
|
|
|
# A three item sequence, each containing a sequence of template tags
|
|
# used to render the admin dashboard.
|
|
#
|
|
# DASHBOARD_TAGS = (
|
|
# ("blog_tags.quick_blog", "mezzanine_tags.app_list"),
|
|
# ("comment_tags.recent_comments",),
|
|
# ("mezzanine_tags.recent_actions",),
|
|
# )
|
|
|
|
# A sequence of templates used by the ``page_menu`` template tag. Each
|
|
# item in the sequence is a three item sequence, containing a unique ID
|
|
# for the template, a label for the template, and the template path.
|
|
# These templates are then available for selection when editing which
|
|
# menus a page should appear in. Note that if a menu template is used
|
|
# that doesn't appear in this setting, all pages will appear in it.
|
|
|
|
# PAGE_MENU_TEMPLATES = (
|
|
# (1, "Top navigation bar", "pages/menus/dropdown.html"),
|
|
# (2, "Left-hand tree", "pages/menus/tree.html"),
|
|
# (3, "Footer", "pages/menus/footer.html"),
|
|
# )
|
|
|
|
# A sequence of fields that will be injected into Mezzanine's (or any
|
|
# library's) models. Each item in the sequence is a four item sequence.
|
|
# The first two items are the dotted path to the model and its field
|
|
# name to be added, and the dotted path to the field class to use for
|
|
# the field. The third and fourth items are a sequence of positional
|
|
# args and a dictionary of keyword args, to use when creating the
|
|
# field instance. When specifying the field class, the path
|
|
# ``django.models.db.`` can be omitted for regular Django model fields.
|
|
#
|
|
# EXTRA_MODEL_FIELDS = (
|
|
# (
|
|
# # Dotted path to field.
|
|
# "mezzanine.blog.models.BlogPost.image",
|
|
# # Dotted path to field class.
|
|
# "somelib.fields.ImageField",
|
|
# # Positional args for field class.
|
|
# ("Image",),
|
|
# # Keyword args for field class.
|
|
# {"blank": True, "upload_to": "blog"},
|
|
# ),
|
|
# # Example of adding a field to *all* of Mezzanine's content types:
|
|
# (
|
|
# "mezzanine.pages.models.Page.another_field",
|
|
# "IntegerField", # 'django.db.models.' is implied if path is omitted.
|
|
# ("Another name",),
|
|
# {"blank": True, "default": 1},
|
|
# ),
|
|
# )
|
|
|
|
# Setting to turn on featured images for blog posts. Defaults to False.
|
|
#
|
|
# BLOG_USE_FEATURED_IMAGE = True
|
|
|
|
########################
|
|
# MAIN DJANGO SETTINGS #
|
|
########################
|
|
|
|
# People who get code error notifications.
|
|
# In the format (('Full Name', 'email@example.com'),
|
|
# ('Full Name', 'anotheremail@example.com'))
|
|
ADMINS = (
|
|
# ('Your Name', 'your_email@domain.com'),
|
|
)
|
|
MANAGERS = ADMINS
|
|
|
|
# Hosts/domain names that are valid for this site; required if DEBUG is False
|
|
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
|
|
ALLOWED_HOSTS = []
|
|
|
|
# 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
|
|
|
|
# If you set this to True, Django will use timezone-aware datetimes.
|
|
USE_TZ = True
|
|
|
|
# Language code for this installation. All choices can be found here:
|
|
# http://www.i18nguy.com/unicode/language-identifiers.html
|
|
LANGUAGE_CODE = "en"
|
|
|
|
# Supported languages
|
|
_ = lambda s: s
|
|
LANGUAGES = (("en", _("English")),)
|
|
|
|
# A boolean that turns on/off debug mode. When set to ``True``, stack traces
|
|
# are displayed for error pages. Should always be set to ``False`` in
|
|
# production. Best set to ``True`` in local_settings.py
|
|
DEBUG = False
|
|
|
|
# Whether a user's session cookie expires when the Web browser is closed.
|
|
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
|
|
|
|
SITE_ID = 1
|
|
|
|
# If you set this to False, Django will make some optimizations so as not
|
|
# to load the internationalization machinery.
|
|
USE_I18N = False
|
|
|
|
# Tuple of IP addresses, as strings, that:
|
|
# * See debug comments, when DEBUG is true
|
|
# * Receive x-headers
|
|
INTERNAL_IPS = ("127.0.0.1",)
|
|
|
|
try:
|
|
from .local_settings import DEBUG_TEMPLATE
|
|
except Exception as err:
|
|
DEBUG_TEMPLATE = False
|
|
|
|
########################################################
|
|
|
|
TEMPLATES = [
|
|
{
|
|
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
|
# 'APP_DIRS': True,
|
|
"DIRS": [os.path.join(PROJECT_ROOT, "templates")],
|
|
"OPTIONS": {
|
|
"context_processors": [
|
|
"django.template.context_processors.debug",
|
|
"django.template.context_processors.request",
|
|
"django.contrib.auth.context_processors.auth",
|
|
# "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",
|
|
"mezzanine.conf.context_processors.settings",
|
|
"mezzanine.pages.context_processors.page",
|
|
"fobi.context_processors.theme", # Important!
|
|
"fobi.context_processors.dynamic_values", # Optional
|
|
# "context_processors.testing", # Testing
|
|
],
|
|
"loaders": [
|
|
"django.template.loaders.filesystem.Loader",
|
|
"django.template.loaders.app_directories.Loader",
|
|
"django.template.loaders.eggs.Loader",
|
|
],
|
|
"debug": DEBUG_TEMPLATE,
|
|
},
|
|
},
|
|
]
|
|
|
|
########################################################
|
|
|
|
|
|
AUTHENTICATION_BACKENDS = ("mezzanine.core.auth_backends.MezzanineBackend",)
|
|
|
|
# List of finder classes that know how to find static files in
|
|
# various locations.
|
|
STATICFILES_FINDERS = (
|
|
"django.contrib.staticfiles.finders.FileSystemFinder",
|
|
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
|
|
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
|
|
)
|
|
|
|
# The numeric mode to set newly-uploaded files to. The value should be
|
|
# a mode you'd pass directly to os.chmod.
|
|
FILE_UPLOAD_PERMISSIONS = 0o644
|
|
|
|
|
|
#############
|
|
# DATABASES #
|
|
#############
|
|
|
|
DATABASES = {
|
|
"default": {
|
|
# Add "postgresql_psycopg2", "mysql", "sqlite3" or "oracle".
|
|
"ENGINE": "django.db.backends.",
|
|
# DB name or path to database file if using sqlite3.
|
|
"NAME": "",
|
|
# Not used with sqlite3.
|
|
"USER": "",
|
|
# Not used with sqlite3.
|
|
"PASSWORD": "",
|
|
# Set to empty string for localhost. Not used with sqlite3.
|
|
"HOST": "",
|
|
# Set to empty string for default. Not used with sqlite3.
|
|
"PORT": "",
|
|
}
|
|
}
|
|
|
|
|
|
#########
|
|
# PATHS #
|
|
#########
|
|
|
|
# Every cache key will get prefixed with this value - here we set it to
|
|
# the name of the directory the project is in to try and use something
|
|
# project specific.
|
|
CACHE_MIDDLEWARE_KEY_PREFIX = PROJECT_DIRNAME
|
|
|
|
# URL prefix for static files.
|
|
# Example: "http://media.lawrence.com/static/"
|
|
STATIC_URL = "/static/"
|
|
|
|
# Absolute path to the directory static files should be collected to.
|
|
# Don't put anything in this directory yourself; store your static files
|
|
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
|
|
# Example: "/home/media/media.lawrence.com/static/"
|
|
STATIC_ROOT = os.path.join(PROJECT_ROOT, STATIC_URL.strip("/"))
|
|
|
|
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
|
|
# trailing slash.
|
|
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
|
|
MEDIA_URL = STATIC_URL + "media/"
|
|
|
|
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
|
# Example: "/home/media/media.lawrence.com/media/"
|
|
MEDIA_ROOT = os.path.join(PROJECT_ROOT, *MEDIA_URL.strip("/").split("/"))
|
|
|
|
# Package/module name to import the root urlpatterns from for the project.
|
|
ROOT_URLCONF = "%s.urls" % PROJECT_DIRNAME
|
|
|
|
################
|
|
# APPLICATIONS #
|
|
################
|
|
|
|
INSTALLED_APPS = (
|
|
"django.contrib.admin",
|
|
"django.contrib.auth",
|
|
"django.contrib.contenttypes",
|
|
"django.contrib.redirects",
|
|
"django.contrib.sessions",
|
|
"django.contrib.sites",
|
|
"django.contrib.sitemaps",
|
|
"django.contrib.staticfiles",
|
|
"mezzanine.boot",
|
|
"mezzanine.conf",
|
|
"mezzanine.core",
|
|
"mezzanine.generic",
|
|
"mezzanine.blog",
|
|
"mezzanine.forms",
|
|
"mezzanine.pages",
|
|
"mezzanine.galleries",
|
|
"mezzanine.twitter",
|
|
# "mezzanine.accounts",
|
|
# "mezzanine.mobile",
|
|
# Third party apps used in the project
|
|
"tinymce", # TinyMCE
|
|
"easy_thumbnails", # Thumbnailer
|
|
# 'registration', # Auth views and registration app
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# **************************** Fobi core ********************************
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
"fobi",
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# ************************** Fobi themes ********************************
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# ************************ Bootstrap 3 theme ****************************
|
|
# ***********************************************************************
|
|
"fobi.contrib.themes.bootstrap3", # Bootstrap 3 theme
|
|
# ***********************************************************************
|
|
# ************************ Foundation 5 theme ***************************
|
|
# ***********************************************************************
|
|
"fobi.contrib.themes.foundation5", # Foundation 5 theme
|
|
"fobi.contrib.themes.foundation5.widgets.form_handlers.db_store_foundation5_widget",
|
|
# ***********************************************************************
|
|
# **************************** Simple theme *****************************
|
|
# ***********************************************************************
|
|
"fobi.contrib.themes.simple", # Simple theme
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# ************************* Fobi form elements **************************
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# **************************** Form fields ******************************
|
|
# ***********************************************************************
|
|
#'fobi.contrib.plugins.form_elements.fields.birthday',
|
|
"fobi.contrib.plugins.form_elements.fields.boolean",
|
|
"fobi.contrib.plugins.form_elements.fields.date",
|
|
"fobi.contrib.plugins.form_elements.fields.date_drop_down",
|
|
"fobi.contrib.plugins.form_elements.fields.datetime",
|
|
"fobi.contrib.plugins.form_elements.fields.email",
|
|
"fobi.contrib.plugins.form_elements.fields.file",
|
|
"fobi.contrib.plugins.form_elements.fields.hidden",
|
|
"fobi.contrib.plugins.form_elements.fields.input",
|
|
"fobi.contrib.plugins.form_elements.fields.integer",
|
|
"fobi.contrib.plugins.form_elements.fields.password",
|
|
"fobi.contrib.plugins.form_elements.fields.radio",
|
|
"fobi.contrib.plugins.form_elements.fields.select",
|
|
"fobi.contrib.plugins.form_elements.fields.select_model_object",
|
|
"fobi.contrib.plugins.form_elements.fields.select_multiple",
|
|
# 'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects',
|
|
"fobi.contrib.plugins.form_elements.fields.text",
|
|
"fobi.contrib.plugins.form_elements.fields.textarea",
|
|
"fobi.contrib.plugins.form_elements.fields.url",
|
|
# ***********************************************************************
|
|
# ************************ Security elements ****************************
|
|
# ***********************************************************************
|
|
"fobi.contrib.plugins.form_elements.security.honeypot",
|
|
# ***********************************************************************
|
|
# ************************* Testing elements ****************************
|
|
# ***********************************************************************
|
|
"fobi.contrib.plugins.form_elements.test.dummy",
|
|
# ***********************************************************************
|
|
# ************************* Content elements ****************************
|
|
# ***********************************************************************
|
|
"fobi.contrib.plugins.form_elements.content.content_image",
|
|
"fobi.contrib.plugins.form_elements.content.content_text",
|
|
"fobi.contrib.plugins.form_elements.content.content_video",
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# ************************* Fobi form handlers **************************
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
"fobi.contrib.plugins.form_handlers.db_store",
|
|
"fobi.contrib.plugins.form_handlers.http_repost",
|
|
"fobi.contrib.plugins.form_handlers.mail",
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# *********************** Mezzanine integration *************************
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
"fobi.contrib.apps.mezzanine_integration",
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
# ****************************** Test app *******************************
|
|
# ***********************************************************************
|
|
# ***********************************************************************
|
|
"foo",
|
|
)
|
|
|
|
# List of middleware classes to use. Order is important; in the request phase,
|
|
# these middleware classes will be applied in the order given, and in the
|
|
# response phase the middleware will be applied in reverse order.
|
|
MIDDLEWARE_CLASSES = (
|
|
"mezzanine.core.middleware.UpdateCacheMiddleware",
|
|
"django.contrib.sessions.middleware.SessionMiddleware",
|
|
"django.middleware.locale.LocaleMiddleware",
|
|
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
|
"django.middleware.common.CommonMiddleware",
|
|
"django.middleware.csrf.CsrfViewMiddleware",
|
|
"django.contrib.messages.middleware.MessageMiddleware",
|
|
"mezzanine.core.request.CurrentRequestMiddleware",
|
|
"mezzanine.core.middleware.RedirectFallbackMiddleware",
|
|
"mezzanine.core.middleware.TemplateForDeviceMiddleware",
|
|
"mezzanine.core.middleware.TemplateForHostMiddleware",
|
|
"mezzanine.core.middleware.AdminLoginInterfaceSelectorMiddleware",
|
|
"mezzanine.core.middleware.SitePermissionMiddleware",
|
|
# Uncomment the following if using any of the SSL settings:
|
|
# "mezzanine.core.middleware.SSLRedirectMiddleware",
|
|
"mezzanine.pages.middleware.PageMiddleware",
|
|
"mezzanine.core.middleware.FetchFromCacheMiddleware",
|
|
)
|
|
|
|
MIGRATION_MODULES = {
|
|
"fobi": "fobi.migrations",
|
|
}
|
|
|
|
# Store these package names here as they may change in the future since
|
|
# at the moment we are using custom forks of them.
|
|
PACKAGE_NAME_FILEBROWSER = "filebrowser_safe"
|
|
PACKAGE_NAME_GRAPPELLI = "grappelli_safe"
|
|
|
|
# Fobi extra configuration
|
|
FOBI_DEFAULT_THEME = "bootstrap3"
|
|
|
|
FOBI_THEME_FOOTER_TEXT = gettext("© django-fobi example site 2014")
|
|
|
|
|
|
#########################
|
|
# OPTIONAL APPLICATIONS #
|
|
#########################
|
|
|
|
# These will be added to ``INSTALLED_APPS``, only if available.
|
|
OPTIONAL_APPS = (
|
|
"debug_toolbar",
|
|
"django_extensions",
|
|
"compressor",
|
|
PACKAGE_NAME_FILEBROWSER,
|
|
PACKAGE_NAME_GRAPPELLI,
|
|
)
|
|
|
|
###################
|
|
# DEPLOY SETTINGS #
|
|
###################
|
|
|
|
# These settings are used by the default fabfile.py provided.
|
|
# Check fabfile.py for defaults.
|
|
|
|
# FABRIC = {
|
|
# "SSH_USER": "", # SSH username for host deploying to
|
|
# "HOSTS": ALLOWED_HOSTS[:1], # List of hosts to deploy to (eg, first host)
|
|
# "DOMAINS": ALLOWED_HOSTS, # Domains for public site
|
|
# "REPO_URL": "ssh://hg@bitbucket.org/user/project", # Project's repo URL
|
|
# "VIRTUALENV_HOME": "", # Absolute remote path for virtualenvs
|
|
# "PROJECT_NAME": "", # Unique identifier for project
|
|
# "REQUIREMENTS_PATH": "requirements.txt", # Project's pip requirements
|
|
# "GUNICORN_PORT": 8000, # Port gunicorn will listen on
|
|
# "LOCALE": "en_US.UTF-8", # Should end with ".UTF-8"
|
|
# "DB_PASS": "", # Live database password
|
|
# "ADMIN_PASS": "", # Live admin user password
|
|
# "SECRET_KEY": SECRET_KEY,
|
|
# "NEVERCACHE_KEY": NEVERCACHE_KEY,
|
|
# }
|
|
|
|
|
|
##################
|
|
# LOCAL SETTINGS #
|
|
##################
|
|
|
|
# Allow any settings to be defined in local_settings.py which should be
|
|
# ignored in your version control system allowing for settings to be
|
|
# defined per machine.
|
|
try:
|
|
from local_settings import *
|
|
except ImportError as err:
|
|
if "local_settings" not in str(err):
|
|
raise err
|
|
|
|
|
|
####################
|
|
# DYNAMIC SETTINGS #
|
|
####################
|
|
|
|
# set_dynamic_settings() will rewrite globals based on what has been
|
|
# defined so far, in order to provide some better defaults where
|
|
# applicable. We also allow this settings module to be imported
|
|
# without Mezzanine installed, as the case may be when using the
|
|
# fabfile, where setting the dynamic settings below isn't strictly
|
|
# required.
|
|
try:
|
|
from mezzanine.utils.conf import set_dynamic_settings
|
|
except ImportError:
|
|
pass
|
|
else:
|
|
set_dynamic_settings(globals())
|