###
# app configuration
# https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
###
[pipeline:main]
pipeline = tracim_web
[app:tracim_web]
use = egg:tracim_backend
pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
pyramid_debugtoolbar
[pipeline:webdav]
pipeline = tracim_webdav
[app:tracim_webdav]
use = egg:tracim_backend#webdav
[DEFAULT]
sqlalchemy.url = sqlite:///%(here)s/tracim.sqlite
retry.attempts = 3
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
###
# TRACIM SPECIFIC CONF
###
### Global
# Enable debug mode
# debug = True
cache_dir = %(here)s/data
# preview generator cache directory
preview_cache_dir = /tmp/tracim/preview/
# file depot storage
depot_storage_name = tracim
depot_storage_dir = %(here)s/depot/
# 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: email: admin@admin.admin (password: admin@admin.admin)
website.home.tag_line =
Collaboration, versionning and traceability
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
# 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
# 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
### Mail
# 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
email.notification.activated = False
# email.notification.log_file_path = /tmp/mail-notifications.log
# email notifications can be sent with the user_id added as an identifier
# this way email clients like Thunderbird will be able to distinguish
# notifications generated by a user or another one
email.notification.from.email = noreply+{user_id}@trac.im
email.notification.from.default_label = Tracim Notifications
email.notification.reply_to.email = reply+{content_id}@trac.im
email.notification.references.email = thread+{content_id}@trac.im
email.notification.content_update.template.html = %(here)s/tracim_backend/templates/mail/content_update_body_html.mak
email.notification.content_update.template.text = %(here)s/tracim_backend/templates/mail/content_update_body_text.mak
email.notification.created_account.template.html = %(here)s/tracim_backend/templates/mail/created_account_body_html.mak
email.notification.created_account.template.text = %(here)s/tracim_backend/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
## Email sending configuration
# processing_mode may be sync or async,
# with async, please configure redis below
email.processing_mode = sync
# email.async.redis.host = localhost
# email.async.redis.port = 6379
# email.async.redis.db = 0
# Email reply configuration
email.reply.activated = False
email.reply.imap.server = your_imap_server
email.reply.imap.port = 993
email.reply.imap.user = your_imap_user
email.reply.imap.password = your_imap_password
email.reply.imap.folder = INBOX
email.reply.imap.use_ssl = true
email.reply.imap.use_idle = true
# Re-new connection each 10 minutes
email.reply.connection.max_lifetime = 600
# Token for communication between mail fetcher and tracim controller
email.reply.token = mysecuretoken
# Delay in seconds between each check
email.reply.check.heartbeat = 60
email.reply.use_html_parsing = true
email.reply.use_txt_parsing = true
# Lockfile path is required for email_reply feature,
# it's just an empty file use to prevent concurrent access to imap unseen mail
email.reply.lockfile_path = %(here)s/email_fetcher.lock
### Radical (CalDav server) configuration
# radicale.server.host = 0.0.0.0
# radicale.server.port = 5232
# radicale.server.ssl = false
radicale.server.filesystem.folder = %(here)s/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.
## and update following parameters
# radicale.client.base_url.host = http://127.0.0.1:5232
# radicale.client.base_url.prefix = /
### WSGIDAV
wsgidav.config_path = %(here)s/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:
### Preview
## You can parametrized allowed jpg preview dimension list, if not set, default
## is 256x256. First {width}x{length} items is default preview dimensions.
## all items should be separated by ',' and you should be really careful to do
## set anything else than '{int}x{int}' item and ', ' separator
# preview.jpg.allowed_dims = 256x256,1000x1000
## Preview dimensions can be set as restricted, if set as restricted, access
## endpoint to to get any other preview dimensions than allowed_dims will
## return error
# preview.jpg.restricted_dims = True
### Frontend
frontend.serve = True
# You can set dist folder of tracim frontend. by default, system
# will try to get it automatically according to tracim_v2 repository
# organisation.
# frontend.dist_folder_path = /home/user/tracim_v2/frontend/dist
### Color
# check for color.json file in tracim_v2, check by default in tracim_v2 parent
# dir of backend.
# you can set a specific file path here
# color.config_file_path = /home/user/tracim_v2/color.json
###
# wsgi server configuration
###
[server:main]
use = egg:waitress#main
listen = localhost:6543
[alembic]
# path to migration scripts
script_location = tracim_backend/migration
# template used to generate migration files
# file_template = %%(rev)s_%%(slug)s
# timezone to use when rendering the date
# within the migration file as well as the filename.
# string value is passed to dateutil.tz.gettz()
# leave blank for localtime
# timezone =
# max length of characters to apply to the
# "slug" field
#truncate_slug_length = 40
# set to 'true' to run the environment during
# the 'revision' command, regardless of autogenerate
# revision_environment = false
# set to 'true' to allow .pyc and .pyo files without
# a source .py file to be detected as revisions in the
# versions/ directory
# sourceless = false
# version location specification; this defaults
# to migrate/versions. When using multiple version
# directories, initial revisions must be specified with --version-path
# version_locations = %(here)s/bar %(here)s/bat migrate/versions
# the output encoding used when revision files
# are written from script.py.mako
# output_encoding = utf-8
sqlalchemy.url = sqlite:///%(here)s/tracim.sqlite
###
# logging configuration
# https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
###
[loggers]
keys = root, tracim, sqlalchemy, alembic
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = INFO
handlers = console
[logger_tracim]
level = DEBUG
handlers =
qualname = tracim
[logger_sqlalchemy]
level = INFO
handlers =
qualname = sqlalchemy.engine
# "level = INFO" logs SQL queries.
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
[logger_alembic]
level = INFO
handlers =
qualname = alembic
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
datefmt = %H:%M:%S