# Configuration

After you hook django-projector into your project (see :ref:installation) you should probably change some of configuration variables.

## Available settings

Those configurable variables should be defined at the project's settings module, just like standard Django's variables.

### PROJECTOR_ALWAYS_SEND_MAILS_TO_MEMBERS

Default: False

If set to True, any change to project would send an email to each projects' members regardless of their individual preferences.

### PROJECTOR_BANNED_PROJECT_NAMES

Default:

(
'account', 'accounts',
'api',
'author', 'authors',
'ban',
'category', 'categories',
'change',
'create',
'default',
'delete',
'edit', 'edits',
'etc',
'issue', 'issues',
'mail', 'mails',
'message', 'messages',
'manager', 'managers',
'private',
'profile', 'profiles',
'projects',
'register', 'registration',
'remove',
'update',
'user', 'users',
'view',
)


List of names which are restricted during project creation.

Note

By specifying own list, we in fact extend default list. We mention this as most of the settings are overridable - this one is not.

### PROJECTOR_BASIC_AUTH_REALM

Default: 'Projector Basic Auth'

Text which would appear during basic authorization process within projector's context. Projects' owners can override this per project.

### PROJECTOR_CHANGESETS_PAGINATE_BY

Default: 10

Number of changesets listed at one page.

### PROJECTOR_CREATE_PROJECT_ASYNCHRONOUSLY

Default: True

When new project is created some actions are made using Djangos' signals. By default those actions are made asynchronousely by new thread in order not to block client.

### PROJECTOR_DEFAULT_PROJECT_WORKFLOW

Default: projector.conf.default_workflow

Path to object defining default workflow for new projects.

Object must define following iterables: components, task_types, priorities and statuses. Each one should contain dictionaries with following key/value pairs:

• components: name
• priorities: name, order
• statuses: name, oder, is_resolved, is_initial

See source code pointed by default value for more detail.

### PROJECTOR_DEFAULT_VCS_BACKEND

Default: 'hg'

One of aliases specified at :setting:PROJECTOR_ENABLED_VCS_BACKENDS. See vcs's documentation for available aliases.

### PROJECTOR_EDITABLE_PERMISSIONS

Default:

(
'change_project',
'change_config_project',
'view_project',
'can_write_to_repository',
'can_change_description',
'can_change_category',
'can_change_member',
'can_delete_member',
'can_change_team',
'can_delete_team',
)


List of permission codenames allowed to be edited by projects' owners.

Note

Removing variables from this tuple (by setting own with subset of available permissions) would not affect permissions - it only tells projector to show forms for permission editing with specified codenames.

### PROJECTOR_ENABLED_VCS_BACKENDS

Default: ['hg', 'git']

Iterable of vcs aliases. To check what backends are available run:

>>> import vcs
>>> vcs.backends.BACKENDS.keys()
['hg', 'git']


See more at vcs's documentation.

### PROJECTOR_FORK_EXTERNAL_ENABLED

Default: False

If set to True users would be allowed to fork projects from external locations (read more at :ref:projects-forking-external).

Warning

We DO NOT take any responsibility caused by using external forking. Reason is simple - some users could use this functionality to attack external hosts by sending crafted values to the fork form. This should be validated by the form first, though.

### PROJECTOR_FORK_EXTERNAL_MAP

Default:

{
'bitbucket.org': 'projector.forks.bitbucket.BitbucketForkForm',
'github.com': 'projector.forks.github.GithubForkForm',
}


Dictionary of forms to be used for external forking. Keys would be used as choices at the first step of external forking process. Values should be paths to the fork form. Read more at :ref:projects-forking-external.

Default: would try to get value from settings.DEFAULT_FROM_EMAIL.

Email address used as sender for all mails send by projector.

### PROJECTOR_HG_PUSH_SSL

Default: False.

If set to True, underlying mercurial engine would transmit data using encryption. This setting has precedence over vcs specific configuration.

### PROJECTOR_HIDDEN_EMAIL_SUBSTITUTION

Default: 'HIDDEN_EMAIL'.

Used as default substitution for hidden emails while using :py:func:projector.templatetags.hide_email filter (if no parameter is specified).

### PROJECTOR_MAX_PROJECTS_PER_USER

Default: 50

Specifies maximum number of projects one user may create.

Default: 60 (60 days)

This is default value of time delta (in days) added to current date during milestone creation.

### PROJECTOR_MILIS_BETWEEN_PROJECT_CREATION

Default: 15000 (15 seconds)

After user created a project, he/she need to wait for time specified with this setting until another project may be created by him/her.

### PROJECTOR_PRIVATE_ONLY

Default: False

If True then only private projects may be created. Does not affect existing projects.

### PROJECTOR_PROJECTS_ROOT_DIR

Default: None

If not specified, no repositories would be created. Must be valid directory path.

### PROJECTOR_PROJECTS_HOMEDIR_GETTER

Location of the function which should return relative project path. In order to calculate full path of homedir, :py:class:projector.models.Project calls pointed function and appends result to the :setting:PROJECTOR_PROJECTS_ROOT_DIR value.

It is possible to change this location and override function. It takes one required project parameter - instance of :py:class:projector.models.Project. Default implementation returns simply stringified primary key of the given project.

"[$project] #$id: $summary"  This is default subject format for messages related with tasks. Allows to move name placeholders ($project, $id,$summary). All placeholders are optional - but adviced, obviousely.