# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Statement for enabling the development environment
DEBUG = True

# Host
HOST = '0.0.0.0'

# Port
PORT = 8090

# Enable STOUT integration into Distill 
ENABLE_STOUT = False
SQLITEDB = '../path/to/stout/stout.db'
MASTER = '../path/to/master/master_ans.csv'
MAPPINGS = '../path/to/mappings/MOT_Mappings.csv'
SELECTED = '../path/to/stout/selected_vars_for_distill.csv'

# Elasticsearch Configuration
ES_HOST = 'http://elasticsearch'
ES_PORT = 9200
HTTP_AUTH = None
USE_SSL = False
VERIFY_CERTS = False
CA_CERTS = None
CLIENT_CERT = None
CLIENT_KEY = None
TIMEOUT = 3

# Application threads. A common general assumption is
# using 2 per available processor cores - to handle
# incoming requests using one and performing background
# operations using the other.
THREADS_PER_PAGE = 2

# Enable protection agains *Cross-site Request Forgery (CSRF)*
# CSRF_ENABLED     = True

# Use a secure, unique and absolutely secret key for
# signing the data. 
# CSRF_SESSION_KEY = "secret"

# Secret key for signing cookies
# SECRET_KEY = "secret"