Much of kardboard can be controlled via settings. The easiest way control these is add an environment variable, KARDBOARD_SETTINGS, that is a path to a .cfg file containing these settings.
export KARDBOARD_SETTINGS=/opt/www/kardboardve/etc/kardboard-prod.conf
The config file should be in a format compatible with Flask’s file-based configuration standard.
Kardboard is built atop Flask and as such all of its built in options can be adjusted in your configuration file.
All the necessary settings to get a basic kardboard instance up and running are contained in kardboard/default_settings.py
Default: 'simple' Specifies which type of caching object to use. This is an import string that will be imported and instantiated. It is assumed that the import object is a function that will return a cache object that adheres to the werkzeug cache API.
For werkzeug.contrib.cache objects, you do not need to specify the entire import string, just one of the following names.
Built-in cache types:
Default: [] (Empty list)
Optional list to unpack and pass during the cache class instantiation.
Default: {} (Empty dictionary)
Optional dictionary to pass during the cache class instantiation.
Default: 3600
The default timeout that is used if no timeout is specified. Unit of time is seconds.
Default: (No default)
The maximum number of items the cache will store before it starts deleting some. Used only for SimpleCache and FileSystemCache
Default: (No default)
A prefix that is added before all keys. This makes it possible to use the same memcached server for different apps. Used only for MemcachedCache and GAEMemcachedCache.
Default: (No default)
A list or a tuple of server addresses. Used only for MemcachedCache
Default: [ 'Bug', 'Feature', 'Improvement',]
The list of categories users should be able to assign cards to. Example:
CARD_CATEGORIES = [ 'CMS', 'iPhone', 'Android', ]
CARD_CATEGORIES = [ 'Project X', 'Project Y', 'Project Z']
Default: [ 'Todo', 'Doing', 'Done', ]
The list of states, or columns, that a card could be in. The last state should represent whatever Done means to your team.
Tip
When a user sets a Done date for a card, it’s automatically set to the last state in your CARD_STATES setting.
Default: [ 'Team 1', 'Team 2', ]
The list of teams or individuals working on cards. This allows you to have “mini-boards” for each team/person while still seeing a “meta-board” that shows you cards across all states from all teams.
Default: No default
A Python two-element tuple containing the lower and upper bounds of a cycle time goal for the board. Used to highlight cards in the range and beyond the range.:
CYCYLE_TIME_GOAL = (10, 15)
CYCYLE_TIME_GOAL = (15, 15)
Default:
{
# How often should we look for old tickets and queue them for updates
'load-update-queue': {
'task': 'tasks.queue_updates',
'schedule': crontab(minute="*/3"),
},
# How often should we update all the Person
# objects to make sure they reflect reality, due to deleted cards
# or people being removed from a card
'update_person': {
'task': 'tasks.normalize_people',
'schedule': crontab(minute="*/30"),
},
# How often (probably nighly) should we update daily records for the past
# 365 days
'calc-daily-records-year': {
'task': 'tasks.update_daily_records',
'schedule': crontab(minute=1, hour=0),
'args': (365, ),
},
# How often should we update daily records for the past
# 7 days
'calc-daily-records-week': {
'task': 'tasks.update_daily_records',
'schedule': crontab(minute="*/5"),
'args': (14, ),
}
}
If you’re using a TICKET_HELPER then you probably don’t want to adjust this setting. The crontab(minute=”*/3”) determines how often kardboard should check for out of date cards. See TICKET_UPDATE_THRESHOLD for more.
See Celery configuration documentation for details
Default: (No default)
If set, it will output an appropriate <meta> tag so you may claim your site on Google Webmaster Tools.
GOOGLE_SITE_VERIFICATION = 'someverylongstringgoeshere'
Default: (No default)
If set, it will output an appropriate <script> tag for Google Analytics.
GOOGLE_ANALYTICS = 'UA-11111111-2'
Default: (No default)
A two item tuple consisting of a username and password that has at least read-only access to any projects and tickets you’ll be enterting into kardboard.
JIRA_CREDENTIALS = ('jbluth', 'theresalwaysmoneyinthebananastand')
Default: (No default)
If you set TICKET_HELPER to use the built-in JIRAHelper then you’ll want to set this to your JIRA installation’s SOAP end point.
JIRA_WSDL = 'https://jira.yourdomain.com/rpc/soap/jirasoapservice-v2?wsdl'
Default: (No default)
The level of log events that should be output to LOG_FILE.
Possible settings are:
Default: (No default)
The file that log events should be written too.
LOG_FILE = '/var/logs/kardboard-app.log'
Note
The LOG_FILE file will be automatically rotated every ~100k and up to 3 previous ~100k chunks will be kept.
Default: 'yougonnawannachangethis'
A secret key for this particular kardboard instance. Used to provide a seed in secret-key hashing algorithms. Set this to a random string – the longer, the better.
As the default implies, you’re going to want to change this.
Default: False
If True, then add/edit/delete views become protected by authentication tied to your TICKET_HELPER instance.
Then users would be required to login with their JIRA credentials.
Default: 'kardboard.tickethelpers.NullHelper'
A Python class that will fetch additional information from a ticketing system (JIRA, Redmine, Pivotal Tracker, e.g.) about a card.
The only provider shipped with kardboard is 'kardboard.tickethelpers.JIRAHelper'.
Default: 60*5 (seconds)
The minimum length of time in seconds before a individual card has its data updated from its ticketing system of record.
Every 90 seconds (unless changed in CELERYBEAT_SCHEDULE), kardboard will scan for cards older than TICKET_UPDATE_THRESHOLD and fetch data on them.