2015-02-25 11:06:00 -06:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
2014-12-16 09:54:29 -06:00
|
|
|
##########################################################################
|
|
|
|
#
|
|
|
|
# pgAdmin 4 - PostgreSQL Tools
|
|
|
|
#
|
2016-01-18 08:48:14 -06:00
|
|
|
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
|
2014-12-16 09:54:29 -06:00
|
|
|
# This software is released under the PostgreSQL Licence
|
|
|
|
#
|
2015-10-20 02:03:18 -05:00
|
|
|
# config.py - Core application configuration settings
|
2014-12-16 09:54:29 -06:00
|
|
|
#
|
|
|
|
##########################################################################
|
|
|
|
|
2015-01-22 09:56:23 -06:00
|
|
|
import os
|
2016-06-21 08:12:14 -05:00
|
|
|
from logging import *
|
2014-12-16 09:54:29 -06:00
|
|
|
|
2014-12-17 06:52:43 -06:00
|
|
|
##########################################################################
|
|
|
|
# Application settings
|
|
|
|
##########################################################################
|
|
|
|
|
|
|
|
# Name of the application to display in the UI
|
|
|
|
APP_NAME = 'pgAdmin 4'
|
2015-06-30 00:51:55 -05:00
|
|
|
APP_ICON = 'icon-postgres-alt'
|
2014-12-17 06:52:43 -06:00
|
|
|
|
|
|
|
# Application version number components
|
2016-05-17 12:08:18 -05:00
|
|
|
APP_RELEASE = 1
|
2014-12-17 06:52:43 -06:00
|
|
|
APP_REVISION = 0
|
|
|
|
|
|
|
|
# Application version suffix, e.g. 'beta1', 'dev'. Usually an empty string
|
|
|
|
# for GA releases.
|
2016-06-21 06:20:01 -05:00
|
|
|
APP_SUFFIX = 'beta2'
|
2014-12-17 06:52:43 -06:00
|
|
|
|
2015-01-27 10:54:39 -06:00
|
|
|
# Copyright string for display in the app
|
2016-01-18 08:48:14 -06:00
|
|
|
APP_COPYRIGHT = 'Copyright 2013 - 2016, The pgAdmin Development Team'
|
2015-01-27 10:54:39 -06:00
|
|
|
|
2015-10-20 02:03:18 -05:00
|
|
|
# Path to the online help.
|
2015-02-23 04:51:47 -06:00
|
|
|
HELP_PATH = '../../../docs/en_US/_build/html/'
|
|
|
|
|
2015-02-25 11:06:00 -06:00
|
|
|
# Languages we support in the UI
|
|
|
|
LANGUAGES = {
|
|
|
|
'en': 'English',
|
|
|
|
'fr': 'Français'
|
|
|
|
}
|
|
|
|
|
2014-12-17 06:52:43 -06:00
|
|
|
# DO NOT CHANGE!
|
|
|
|
# The application version string, constructed from the components
|
2016-05-17 12:08:18 -05:00
|
|
|
APP_VERSION = '%s.%s-%s' % (APP_RELEASE, APP_REVISION, APP_SUFFIX)
|
2014-12-17 06:52:43 -06:00
|
|
|
|
2015-01-20 06:32:06 -06:00
|
|
|
# DO NOT CHANGE UNLESS YOU KNOW WHAT YOU ARE DOING!
|
|
|
|
# List of modules to skip when dynamically loading
|
2015-10-20 02:03:18 -05:00
|
|
|
MODULE_BLACKLIST = ['test']
|
2014-12-18 11:49:09 -06:00
|
|
|
|
2015-02-15 16:10:53 -06:00
|
|
|
# DO NOT CHANGE UNLESS YOU KNOW WHAT YOU ARE DOING!
|
|
|
|
# List of treeview browser nodes to skip when dynamically loading
|
2015-10-20 02:03:18 -05:00
|
|
|
NODE_BLACKLIST = []
|
2015-02-15 16:10:53 -06:00
|
|
|
|
2016-06-16 14:11:43 -05:00
|
|
|
# Data directory for storage of config settings etc. This shouldn't normally
|
|
|
|
# need to be changed - it's here as various other settings depend on it.
|
|
|
|
if os.name == 'nt':
|
|
|
|
DATA_DIR = os.path.realpath(os.getenv('APPDATA') + "/pgAdmin")
|
|
|
|
else:
|
|
|
|
DATA_DIR = os.path.realpath(os.path.expanduser('~/.pgadmin/'))
|
|
|
|
|
2014-12-16 11:14:48 -06:00
|
|
|
##########################################################################
|
|
|
|
# Log settings
|
|
|
|
##########################################################################
|
|
|
|
|
2014-12-16 11:37:53 -06:00
|
|
|
# Debug mode?
|
2014-12-18 11:49:09 -06:00
|
|
|
DEBUG = False
|
2014-12-16 11:37:53 -06:00
|
|
|
|
2014-12-16 09:54:29 -06:00
|
|
|
# Application log level - one of:
|
2015-10-20 02:03:18 -05:00
|
|
|
# CRITICAL 50
|
|
|
|
# ERROR 40
|
|
|
|
# WARNING 30
|
|
|
|
# SQL 25
|
|
|
|
# INFO 20
|
|
|
|
# DEBUG 10
|
|
|
|
# NOTSET 0
|
2014-12-16 11:14:48 -06:00
|
|
|
CONSOLE_LOG_LEVEL = WARNING
|
2014-12-18 11:49:09 -06:00
|
|
|
FILE_LOG_LEVEL = INFO
|
2014-12-16 11:14:48 -06:00
|
|
|
|
2015-10-20 02:03:18 -05:00
|
|
|
# Log format.
|
|
|
|
CONSOLE_LOG_FORMAT = '%(asctime)s: %(levelname)s\t%(name)s:\t%(message)s'
|
|
|
|
FILE_LOG_FORMAT = '%(asctime)s: %(levelname)s\t%(name)s:\t%(message)s'
|
2014-12-16 09:54:29 -06:00
|
|
|
|
|
|
|
# Log file name
|
2016-03-22 10:05:43 -05:00
|
|
|
LOG_FILE = os.path.join(
|
2016-06-16 14:11:43 -05:00
|
|
|
DATA_DIR,
|
2016-03-22 10:05:43 -05:00
|
|
|
'pgadmin4.log'
|
|
|
|
)
|
2014-12-16 11:14:48 -06:00
|
|
|
|
|
|
|
##########################################################################
|
|
|
|
# Server settings
|
|
|
|
##########################################################################
|
|
|
|
|
2015-01-26 09:20:28 -06:00
|
|
|
# The server mode determines whether or not we're running on a web server
|
|
|
|
# requiring user authentication, or desktop mode which uses an automatic
|
|
|
|
# default login.
|
|
|
|
#
|
|
|
|
# DO NOT DISABLE SERVER MODE IF RUNNING ON A WEBSERVER!!
|
|
|
|
SERVER_MODE = True
|
|
|
|
|
|
|
|
# User ID (email address) to use for the default user in desktop mode.
|
|
|
|
# The default should be fine here, as it's not exposed in the app.
|
|
|
|
DESKTOP_USER = 'pgadmin4@pgadmin.org'
|
|
|
|
|
2016-05-06 09:25:52 -05:00
|
|
|
# This configuration otion allows the user to host the application on a LAN
|
|
|
|
# Default hosting is on localhost (DEFAULT_SERVER='localhost').
|
|
|
|
# To host pgAdmin4 over LAN set DEFAULT_SERVER='0.0.0.0' (or a specific
|
|
|
|
# adaptor address.
|
|
|
|
#
|
|
|
|
# NOTE: This is NOT recommended for production use, only for debugging
|
|
|
|
# or testing. Production installations should be run as a WSGI application
|
|
|
|
# behind Apache HTTPD.
|
|
|
|
DEFAULT_SERVER = 'localhost'
|
|
|
|
|
2014-12-16 11:14:48 -06:00
|
|
|
# The default port on which the app server will listen if not set in the
|
|
|
|
# environment by the runtime
|
|
|
|
DEFAULT_SERVER_PORT = 5050
|
2014-12-16 09:54:29 -06:00
|
|
|
|
2014-12-16 11:37:53 -06:00
|
|
|
# Enable CSRF protection?
|
|
|
|
CSRF_ENABLED = True
|
|
|
|
|
2015-10-20 02:03:18 -05:00
|
|
|
# Secret key for signing CSRF data. Override this in config_local.py if
|
2014-12-16 11:37:53 -06:00
|
|
|
# running on a web server
|
2015-01-22 09:56:23 -06:00
|
|
|
CSRF_SESSION_KEY = 'SuperSecret1'
|
2014-12-16 11:37:53 -06:00
|
|
|
|
2015-10-20 02:03:18 -05:00
|
|
|
# Secret key for signing cookies. Override this in config_local.py if
|
2014-12-16 11:37:53 -06:00
|
|
|
# running on a web server
|
2015-01-22 09:56:23 -06:00
|
|
|
SECRET_KEY = 'SuperSecret2'
|
|
|
|
|
|
|
|
# Salt used when hashing passwords. Override this in config_local.py if
|
|
|
|
# running on a web server
|
|
|
|
SECURITY_PASSWORD_SALT = 'SuperSecret3'
|
|
|
|
|
|
|
|
# Hashing algorithm used for password storage
|
|
|
|
SECURITY_PASSWORD_HASH = 'pbkdf2_sha512'
|
|
|
|
|
2015-02-12 04:28:15 -06:00
|
|
|
# Should HTML be minified on the fly when not in debug mode?
|
2015-10-20 02:03:18 -05:00
|
|
|
MINIFY_HTML = True
|
2015-02-12 04:28:15 -06:00
|
|
|
|
2015-10-22 01:19:53 -05:00
|
|
|
|
|
|
|
##########################################################################
|
|
|
|
# Server Connection Driver Settings
|
|
|
|
##########################################################################
|
|
|
|
|
|
|
|
# The default driver used for making connection with PostgreSQL
|
|
|
|
PG_DEFAULT_DRIVER = 'psycopg2'
|
|
|
|
|
|
|
|
# Maximum allowed idle time in minutes before which releasing the connection
|
|
|
|
# for the particular session. (in minutes)
|
|
|
|
MAX_SESSION_IDLE_TIME = 60
|
|
|
|
|
2015-01-22 09:56:23 -06:00
|
|
|
##########################################################################
|
|
|
|
# User account and settings storage
|
|
|
|
##########################################################################
|
|
|
|
|
2015-03-09 10:06:10 -05:00
|
|
|
# The schema version number for the configuration database
|
|
|
|
# DO NOT CHANGE UNLESS YOU ARE A PGADMIN DEVELOPER!!
|
2016-06-06 07:34:08 -05:00
|
|
|
SETTINGS_SCHEMA_VERSION = 11
|
2015-03-09 10:06:10 -05:00
|
|
|
|
2015-01-22 09:56:23 -06:00
|
|
|
# The default path to the SQLite database used to store user accounts and
|
|
|
|
# settings. This default places the file in the same directory as this
|
|
|
|
# config file, but generates an absolute path for use througout the app.
|
2015-10-20 02:03:18 -05:00
|
|
|
SQLITE_PATH = os.path.join(
|
2016-06-16 14:11:43 -05:00
|
|
|
DATA_DIR,
|
2016-03-22 10:05:43 -05:00
|
|
|
'pgadmin4.db'
|
|
|
|
)
|
2016-05-10 05:28:59 -05:00
|
|
|
# SQLITE_TIMEOUT will define how long to wait before throwing the error -
|
2016-06-20 05:23:24 -05:00
|
|
|
# OperationError due to database lock. On slower system, you may need to change
|
|
|
|
# this to some higher value.
|
2016-05-10 05:28:59 -05:00
|
|
|
# (Default: 500 milliseconds)
|
|
|
|
SQLITE_TIMEOUT = 500
|
2016-03-22 10:05:43 -05:00
|
|
|
|
|
|
|
##########################################################################
|
|
|
|
# Server-side session storage path
|
|
|
|
#
|
|
|
|
# SESSION_DB_PATH (Default: $HOME/.pgadmin4/sessions)
|
|
|
|
##########################################################################
|
|
|
|
#
|
|
|
|
# We use SQLite for server-side session storage. There will be one
|
|
|
|
# SQLite database object per session created.
|
|
|
|
#
|
|
|
|
# Specify the path used to store your session objects.
|
|
|
|
#
|
|
|
|
# If the specified directory does not exist, the setup script will create
|
|
|
|
# it with permission mode 700 to keep the session database secure.
|
|
|
|
#
|
|
|
|
# On certain systems, you can use shared memory (tmpfs) for maximum
|
|
|
|
# scalability, for example, on Ubuntu:
|
|
|
|
#
|
|
|
|
# SESSION_DB_PATH = '/run/shm/pgAdmin4_session'
|
|
|
|
#
|
|
|
|
##########################################################################
|
|
|
|
SESSION_DB_PATH = os.path.join(
|
2016-06-16 14:11:43 -05:00
|
|
|
DATA_DIR,
|
2016-03-22 10:05:43 -05:00
|
|
|
'sessions'
|
|
|
|
)
|
2015-01-22 09:56:23 -06:00
|
|
|
|
2016-05-08 13:34:25 -05:00
|
|
|
SESSION_COOKIE_NAME = 'pga4_session'
|
|
|
|
|
2015-01-22 09:56:23 -06:00
|
|
|
##########################################################################
|
|
|
|
# Mail server settings
|
|
|
|
##########################################################################
|
|
|
|
|
|
|
|
# These settings are used when running in web server mode for confirming
|
|
|
|
# and resetting passwords etc.
|
|
|
|
MAIL_SERVER = 'smtp.gmail.com'
|
|
|
|
MAIL_PORT = 465
|
|
|
|
MAIL_USE_SSL = True
|
|
|
|
MAIL_USERNAME = 'username'
|
|
|
|
MAIL_PASSWORD = 'SuperSecret'
|
|
|
|
|
|
|
|
##########################################################################
|
|
|
|
# Mail content settings
|
|
|
|
##########################################################################
|
|
|
|
|
|
|
|
# These settings define the content of password reset emails
|
2015-10-20 02:03:18 -05:00
|
|
|
SECURITY_EMAIL_SUBJECT_PASSWORD_RESET = "Password reset instructions for %s" \
|
|
|
|
% APP_NAME
|
|
|
|
SECURITY_EMAIL_SUBJECT_PASSWORD_NOTICE = "Your %s password has been reset" \
|
|
|
|
% APP_NAME
|
|
|
|
SECURITY_EMAIL_SUBJECT_PASSWORD_CHANGE_NOTICE = \
|
|
|
|
"Your password for %s has been changed" % APP_NAME
|
2014-12-16 11:37:53 -06:00
|
|
|
|
2016-02-08 10:28:20 -06:00
|
|
|
##########################################################################
|
|
|
|
# Upgrade checks
|
|
|
|
##########################################################################
|
|
|
|
|
|
|
|
# Check for new versions of the application?
|
|
|
|
UPGRADE_CHECK_ENABLED = True
|
|
|
|
|
|
|
|
# Where should we get the data from?
|
2016-05-21 12:54:12 -05:00
|
|
|
UPGRADE_CHECK_URL = 'https://www.pgadmin.org/versions.json'
|
2016-02-08 10:28:20 -06:00
|
|
|
|
2016-05-12 13:34:28 -05:00
|
|
|
##########################################################################
|
|
|
|
# Storage Manager storage url config settings
|
|
|
|
# If user sets STORAGE_DIR to empty it will show all volumes if platform
|
|
|
|
# is Windows, '/' if it is Linux, Mac or any other unix type system.
|
|
|
|
|
|
|
|
# For example:
|
|
|
|
# 1. STORAGE_DIR = get_drive("C") or get_drive() # return C:/ by default
|
|
|
|
# where C can be any drive character such as "D", "E", "G" etc
|
|
|
|
# 2. Set path manually like
|
|
|
|
# STORAGE_DIR = "/path/to/directory/"
|
|
|
|
##########################################################################
|
|
|
|
STORAGE_DIR = os.path.join(
|
2016-06-16 14:11:43 -05:00
|
|
|
DATA_DIR,
|
2016-05-12 13:34:28 -05:00
|
|
|
'storage'
|
|
|
|
)
|
|
|
|
|
2016-06-02 04:21:32 -05:00
|
|
|
##########################################################################
|
|
|
|
# Allows flask application to response to the each request asynchronously
|
|
|
|
##########################################################################
|
|
|
|
THREADED_MODE = True
|
|
|
|
|
2014-12-16 11:14:48 -06:00
|
|
|
##########################################################################
|
|
|
|
# Local config settings
|
|
|
|
##########################################################################
|
2014-12-16 09:54:29 -06:00
|
|
|
|
2016-06-15 14:56:27 -05:00
|
|
|
# Load distribution-specific config overrides
|
|
|
|
try:
|
|
|
|
from config_distro import *
|
|
|
|
except ImportError:
|
|
|
|
pass
|
|
|
|
|
2014-12-16 09:54:29 -06:00
|
|
|
# Load local config overrides
|
|
|
|
try:
|
|
|
|
from config_local import *
|
|
|
|
except ImportError:
|
|
|
|
pass
|