#
# tracim - TurboGears 2 development environment configuration
#
# The %(here)s variable will be replaced with the parent directory of this file
#
# This file is for deployment specific config options -- other configuration
# that is always required for the app is done in the config directory,
# and generally should not be modified by end users.

[DEFAULT]
debug = true
# Uncomment and replace with the address which should receive any error reports
#email_to = you@yourdomain.com
smtp_server = localhost
error_email_from = turbogears@localhost

[server:main]
# Below is the HTTP server to be used. See documentation online if you want to use another server
# http://turbogears.readthedocs.org/en/latest/turbogears/gearbox.html#changing-http-server
use = egg:gearbox#cherrypy

# If you want to access to the instance through the network,
# change host value below to 0.0.0.0 or to the IP address
# you want it to manage (this may be usefull if you have several
# network interfaces)
host = 127.0.0.1
port = 8080

[sa_auth]
cookie_secret = 3283411b-1904-4554-b0e1-883863b53080

[app:main]
use = egg:tracim
full_stack = true
# You can set french as default language by uncommenting next line
# lang = fr
cache_dir = %(here)s/data
beaker.session.key = tracim
beaker.session.secret = 3283411b-1904-4554-b0e1-883863b53080

# Auth type (internal or ldap)
auth_type = internal

# If auth_type is ldap, uncomment following ldap_* parameters

# LDAP server address
# ldap_url = ldap://localhost:389

# Base dn to make queries
# ldap_base_dn = dc=directory,dc=fsf,dc=org

# Bind dn to identify the search
# ldap_bind_dn = cn=admin,dc=directory,dc=fsf,dc=org

# The bind password
# ldap_bind_pass = toor

# Attribute name of user record who contain user login (email)
# ldap_ldap_naming_attribute = uid

# Matching between ldap attribute and ldap user field (ldap_attr1=user_field1,ldap_attr2=user_field2,...)
# ldap_user_attributes = mail=email

# TLS usage to communicate with your LDAP server
# ldap_tls = False

# If True, LDAP own tracim group managment (not available for now!)
# ldap_group_enabled = False

# User auth token validity in seconds (used to interfaces like web calendars)
user.auth_token.validity = 604800

#By default session is store in cookies to avoid the overhead
#of having to manage a session storage. On production you might
#want to switch to a better session storage.
beaker.session.type = cookie
beaker.session.validate_key = 3283411b-1904-4554-b0e1-883863b53080

# Disable template autoreload to boost performances in production
# WARNING: if you want to deploy your application using a zipped egg
# (ie: if your application's setup.py defines zip-safe=True, then you
# MUST put "false" for the production environment because there will
# be no disk and real files to compare time with.
#auto_reload_templates = false

# If you'd like to fine-tune the individual locations of the cache data dirs
# for the Cache data, or the Session saves, un-comment the desired settings
# here:
#beaker.cache.data_dir = %(here)s/data/cache
#beaker.session.data_dir = %(here)s/data/sessions

# pick the form for your database
# %(here) may include a ':' character on Windows environments; this can
# invalidate the URI when specifying a SQLite db via path name
# sqlalchemy.url=postgresql://username:password@hostname:port/databasename
# sqlalchemy.url=mysql://username:password@hostname:port/databasename
# sqlalchemy.url = postgresql://tracim_user:tracim_user_password@127.0.0.1:5432/tracim?client_encoding=utf8
sqlalchemy.url = <replace_database_uri_here>

#echo shouldn't be used together with the logging module.
sqlalchemy.echo = false
sqlalchemy.echo_pool = false
sqlalchemy.pool_recycle = 3600

# This line ensures that Genshi will render xhtml when sending the
# output. Change to html or xml, as desired.
templating.genshi.method = xhtml
templating.genshi.doctype = html5

# the compiled template dir is a directory that must be readable and writable
# by your webserver. It will be used to store the resulting templates once
# compiled by the TemplateLookup system.
# During development you generally don't need this option since paste's HTTP
# server will have access to you development directories, but in production
# you'll most certainly want to have apache or nginx to write in a directory
# that does not contain any source code in any form for obvious security
# reasons.  If disabled, None, False, or not writable, it will fall back
# to an in-memory cache.
templating.mako.compiled_templates_dir = %(here)s/data/templates

# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
# execute malicious code after an exception is raised.
# set debug = false

# Logging configuration
# Add additional loggers, handlers, formatters here
# Uses pythons logging config file format
# http://docs.python.org/lib/logging-config-fileformat.html

#turn this setting to "min" if you would like tw to produce minified
#javascript files (if your library supports that)
toscawidgets.framework.resource_variant=debug

# if you want to setup analytics like piwik or google analytics,
# put the JS tracking code in a file and set its path below
#
# js_tracker_path = analytics.js


# Reset password through email related configuration.
# These emails will be sent through SMTP
#
resetpassword.email_sender = email@sender.com
resetpassword.smtp_host = smtp.sender
resetpassword.smtp_port = 25
resetpassword.smtp_login = smtp.login
resetpassword.smtp_passwd = smtp.password


# Specifies if the update of comments and attached files is allowed (by the owner only).
# Examples:
#    600 means 10 minutes (ie 600 seconds)
#   3600 means 1 hour (60x60 seconds)
#
# Allowed values:
#  -1 means that content update is allowed for ever
#   0 means that content update is not allowed
#   x means that content update is allowed for x seconds (with x>0)
content.update.allowed.duration = 3600

# The following parameters allow to personalize the home page
# They are html ready (you can put html tags they will be interpreted)
website.title = TRACIM
website.title.color = #555
website.home.subtitle = Default login: admin@admin.admin (password: admin@admin.admin)
website.home.tag_line = <div class="text-center" style="font-weight: bold;">Collaboration, versionning and traceability</div>
website.home.below_login_form = in case of problem, please contact the administrator.
# Values may be 'all' or 'folders'
website.treeview.content = all

# The following base_url is used for links and icons
# integrated in the email notifcations
website.base_url = http://127.0.0.1:8080
# If config not provided, it will be extracted from website.base_url
website.server_name = 127.0.0.1
    
email.notification.activated = False
email.notification.from = Tracim Notification <noreply@trac.im>
email.notification.content_update.template.html = ./tracim/templates/mail/content_update_body_html.mak
email.notification.content_update.template.text = ./tracim/templates/mail/content_update_body_text.mak
email.notification.created_account.template.html = ./tracim/templates/mail/created_account_body_html.mak
email.notification.created_account.template.text = ./tracim/templates/mail/created_account_body_text.mak
# Note: items between { and } are variable names. Do not remove / rename them
email.notification.content_update.subject = [{website_title}] [{workspace_label}] {content_label} ({content_status_label})
email.notification.created_account.subject = [{website_title}] Created account
# processing_mode may be sync or async
email.notification.processing_mode = sync
email.notification.smtp.server = your_smtp_server
email.notification.smtp.port = 25
email.notification.smtp.user = your_smtp_user
email.notification.smtp.password = your_smtp_password

## Radical (CalDav server) configuration
# radicale.server.host = 0.0.0.0
# radicale.server.port = 5232
# radicale.server.ssl = false
# radicale.server.filesystem.folder = ~/.config/radicale/collections
# radicale.server.allow_origin = *
# radicale.server.realm_message = Tracim Calendar - Password Required
## url can be extended like http://127.0.0.1:5232/calendar
## in this case, you have to create your own proxy behind this url.
# radicale.client.base_url = http://127.0.0.1:5232

## WSGIDAV
wsgidav.config_path = wsgidav.conf
## url can be extended like 127.0.0.1/webdav
## in this case, you have to create your own proxy behind this url.
## Do not set http:// prefix.
# wsgidav.client.base_url = 127.0.0.1:<WSGIDAV_PORT>

#####
#
# All configuration below is about logging.
#

[loggers]
keys = root, tracim, sqlalchemy, auth

[handlers]
keys = console

[formatters]
keys = generic

# If you create additional loggers, add them as a key to [loggers]
[logger_root]
level = INFO
handlers = console

[logger_tracim]
level = DEBUG
handlers =
qualname = tracim

[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine
# "level = INFO" logs SQL queries.
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither.  (Recommended for production systems.)

# A logger for authentication, identification and authorization
# this is repoze.who:
[logger_auth]
level = WARN
handlers =
qualname = auth

# If you create additional handlers, add them as a key to [handlers]
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

# If you create additional formatters, add them as a key to [formatters]
[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S
