| 1 | # -*- coding: utf-8 -*- |
|---|
| 2 | |
|---|
| 3 | import pkg_resources |
|---|
| 4 | |
|---|
| 5 | from trac.db.api import DatabaseManager |
|---|
| 6 | from trac.core import * |
|---|
| 7 | from trac.env import IEnvironmentSetupParticipant |
|---|
| 8 | from trac.perm import IPermissionRequestor |
|---|
| 9 | from trac.web.chrome import ITemplateProvider |
|---|
| 10 | |
|---|
| 11 | from pullrequests.model import SCHEMA |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | PLUGIN_NAME = 'PullRequestsPlugin' |
|---|
| 15 | PLUGIN_VERSION = 1 |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | class PullRequestsModule(Component): |
|---|
| 19 | """Pull Requests.""" |
|---|
| 20 | |
|---|
| 21 | implements(IPermissionRequestor, IEnvironmentSetupParticipant, ITemplateProvider) |
|---|
| 22 | |
|---|
| 23 | # IPermissionRequestor methods |
|---|
| 24 | |
|---|
| 25 | def get_permission_actions(self): |
|---|
| 26 | actions = ['PULL_REQUEST'] |
|---|
| 27 | return actions + [('PULL_REQUEST_ADMIN', actions)] |
|---|
| 28 | |
|---|
| 29 | # IEnvironmentSetupParticipant |
|---|
| 30 | |
|---|
| 31 | def environment_created(self): |
|---|
| 32 | dbm = DatabaseManager(self.env) |
|---|
| 33 | dbm.create_tables(SCHEMA) |
|---|
| 34 | dbm.set_database_version(PLUGIN_VERSION, PLUGIN_NAME) |
|---|
| 35 | |
|---|
| 36 | def environment_needs_upgrade(self): |
|---|
| 37 | dbm = DatabaseManager(self.env) |
|---|
| 38 | return dbm.needs_upgrade(PLUGIN_VERSION, PLUGIN_NAME) |
|---|
| 39 | |
|---|
| 40 | def upgrade_environment(self): |
|---|
| 41 | dbm = DatabaseManager(self.env) |
|---|
| 42 | if dbm.get_database_version(PLUGIN_NAME) == 0: |
|---|
| 43 | dbm.create_tables(SCHEMA) |
|---|
| 44 | dbm.set_database_version(PLUGIN_VERSION, PLUGIN_NAME) |
|---|
| 45 | else: |
|---|
| 46 | dbm.upgrade(PLUGIN_VERSION, PLUGIN_NAME, 'pullrequests.upgrades') |
|---|
| 47 | |
|---|
| 48 | # ITemplateProvider methods |
|---|
| 49 | |
|---|
| 50 | def get_htdocs_dirs(self): |
|---|
| 51 | return [] |
|---|
| 52 | |
|---|
| 53 | def get_templates_dirs(self): |
|---|
| 54 | return [pkg_resources.resource_filename('pullrequests', 'templates')] |
|---|