# -*- coding: utf-8 -*- import pkg_resources from trac.config import * from trac.core import * from trac.env import IEnvironmentSetupParticipant def load_config_snippet(config, section, filename): filename = pkg_resources.resource_filename('agiletrac', 'conf/%s' % filename) new_config = Configuration(filename) for name, value in new_config.options(section): config.set(section, name, value) class AgileTracSystem(Component): implements(IEnvironmentSetupParticipant) # IEnvironmentSetupParticipant methods def environment_created(self): pass def __ticket_completion_missing( self ): return not list(self.config.options('ticket-completion')) def environment_needs_upgrade(self, db): return self.__ticket_completion_missing() def upgrade_environment(self, db): load_config_snippet(self.config, 'ticket-completion', 'agile_conf.ini') self.config.set('ticket', 'default_relative_size', 'undefined') self.config.set('ticket', 'default_type', 'user story') # Insert the 'iterations' tab in front of the 'roadmap' tab # wiki,timeline,roadmap,browser,tickets,newticket,search mainnav = [] for navbar in self.config.get('trac', 'mainnav').split(','): if navbar == 'roadmap': mainnav.append('iterations') mainnav.append(navbar) elif navbar == 'iterations': continue else: mainnav.append(navbar) self.config.set('trac', 'mainnav', ','.join(mainnav)) self.config.set('mainnav', 'tickets.label', 'View Work') self.config.set('mainnav', 'newticket.label', 'New Work') self.config.save() info_message = """ ==== Upgrade Notice ==== A new section 'ticket-completion' has been added to your trac.ini file An iterations tab has been inserted in front of the roadmap tab """ self.log.info(info_message.replace('\n', ' ').replace('==', '')) print info_message