Version 3 (modified by Odd Simon Simonsen, 10 years ago) (diff)

As of [2389] there is also a working version for 0.11 - updated docs to reflect this.

Trac Custom Field Admin plugin


This plugin is a Web Admin panel for administrating custom fields - adding, modifying and deleting them without editing the trac.ini file directly.

The plugin is available for Trac 0.10 and 0.11.

This plugin is a cooperation between and, and is made freely available under a BSD license.

Known issues:

  • If your web server runs multiple processes, the other processes will not be able to delete custom fields - see ticket:3833 and ticket:5135 for progress on this issue.

Bugs/Feature Requests

Existing bugs and feature requests for CustomFieldAdminPlugin are here.

If you have any issues, create a new ticket.


Download the zipped source from [download:customfieldadminplugin here].


You can check out CustomFieldAdminPlugin from here using Subversion, or browse the source with Trac.


This plugin requires Web Admin plugin (wiki:WebAdmin) if you are using the 0.10 version, but not for 0.11 as Web Admin is interated into main Trac for this version.

Enable the plugin in trac.ini:

customfieldadmin.* = enabled


The plugin also has an API that can be called from other code if you need to create or modify custom fields. Here is an interactive session as example:

from trac.env import Environment
from customfieldadmin.api import CustomFields

myenv = Environment('/path/to/env')
mycfcomp = CustomFields(myenv)

# Get Cusom fields (list of dicts)
myfields = mycfcomp.get_custom_fields(myenv)
for item in myfields: print item

# Create a custom field - text box
mycfdict = {                # a template dictionary
    'name': 'test01',       # name of field (alphanumeric only)
    'type': 'text',         # text|checkbox|select|radio|textarea
    'label': 'Test 01',     # description
    'value': 'first test',  # default value for field content
    'options': None,        # options for select and radio types (list, leave first empty for optional)
    'cols': None,           # number of columns for text area
    'rows': None,           # number of rows for text area
    'order': 0 }            # specify sort order for field, 0 for last
mycfcomp.update_custom_field(myenv, mycfdict, create=True)

# Updating
mycfdict['type'] = 'select'
mycfdict['options'] = ['', 'one', 'two', 'three']
mycfdict['value'] = None
mycfcomp.update_custom_field(myenv, mycfdict)

# And deleting an existing custom field
mycfcomp.delete_custom_field(myenv, mycfdict)

Recent Changes

16679 by jun66j5 on 2017-06-26 06:48:30
TracCustomFieldAdmin 0.2.13: update Japanese translations (100%)
16678 by jun66j5 on 2017-06-26 06:40:49
TracCustomFieldAdmin 0.2.13: new extraction (2 added)
16677 by jun66j5 on 2017-06-26 03:28:37
TracCustomFieldAdmin 0.2.13: follow up to [16676], fix reserved names check being case-sensitive and add unit tests for reserved field names (refs #13220)


Authors: osimons, cbalan