|
2 | 2 | from atlassian import AtlassianRestAPI |
3 | 3 |
|
4 | 4 |
|
5 | | -log = logging.getLogger("atlassian.portfolio") |
| 5 | +log = logging.getLogger('atlassian.portfolio') |
6 | 6 |
|
7 | 7 |
|
8 | 8 | class Portfolio(AtlassianRestAPI): |
9 | | - |
10 | | - def plan(self, portfolio_id): |
11 | | - return self.get('/rest/roadmap/1.0/plans/{0}.json'.format(portfolio_id)) |
12 | 9 |
|
13 | | - def stages(self, portfolio_id): |
14 | | - return self.get('/rest/roadmap/1.0/plans/{0}/stages.json'.format(portfolio_id)) |
| 10 | + def plan(self, plan_id): |
| 11 | + return self.get('/rest/roadmap/1.0/plans/{0}.json'.format(plan_id)) |
15 | 12 |
|
16 | | - def teams(self, portfolio_id): |
17 | | - return self.get('/rest/roadmap/1.0/plans/{0}/teams.json'.format(portfolio_id)) |
| 13 | + def stages(self, plan_id): |
| 14 | + return self.get('/rest/roadmap/1.0/plans/{0}/stages.json'.format(plan_id)) |
18 | 15 |
|
19 | | - def config(self, portfolio_id): |
20 | | - return self.get('/rest/roadmap/1.0/plans/{0}/config.json'.format(portfolio_id)) |
| 16 | + def teams(self, plan_id): |
| 17 | + return self.get('/rest/roadmap/1.0/plans/{0}/teams.json'.format(plan_id)) |
21 | 18 |
|
22 | | - def persons(self, portfolio_id): |
23 | | - return self.get('/rest/roadmap/1.0/plans/{0}/persons.json'.format(portfolio_id)) |
| 19 | + def config(self, plan_id): |
| 20 | + return self.get('/rest/roadmap/1.0/plans/{0}/config.json'.format(plan_id)) |
24 | 21 |
|
25 | | - def streams(self, portfolio_id): |
26 | | - return self.get('/rest/roadmap/1.0/plans/{0}/streams.json'.format(portfolio_id)) |
| 22 | + def persons(self, plan_id): |
| 23 | + return self.get('/rest/roadmap/1.0/plans/{0}/persons.json'.format(plan_id)) |
27 | 24 |
|
28 | | - def releases(self, portfolio_id): |
29 | | - return self.streams(portfolio_id) |
| 25 | + def streams(self, plan_id): |
| 26 | + return self.get('/rest/roadmap/1.0/plans/{0}/streams.json'.format(plan_id)) |
30 | 27 |
|
31 | | - def themes(self, portfolio_id): |
32 | | - return self.get('/rest/roadmap/1.0/plans/{0}/themes.json'.format(portfolio_id)) |
| 28 | + def releases(self, plan_id): |
| 29 | + return self.streams(plan_id) |
33 | 30 |
|
34 | | - def state(self, portfolio_id, plan_version): |
35 | | - return self.get('/rest/roadmap/1.0/scheduling/{0}/state.json?planVersion={1}'.format(portfolio_id, plan_version)) |
| 31 | + def themes(self, plan_id): |
| 32 | + return self.get('/rest/roadmap/1.0/plans/{0}/themes.json'.format(plan_id)) |
36 | 33 |
|
37 | | - def filter(self, portfolio_id, plan_version): |
38 | | - return self.get('/rest/roadmap/1.0/plans/{0}/workitems/filter.json?planVersion={1}'.format(portfolio_id, plan_version)) |
| 34 | + def state(self, plan_id, plan_version): |
| 35 | + return self.get('/rest/roadmap/1.0/scheduling/{0}/state.json?planVersion={1}'.format(plan_id, plan_version)) |
39 | 36 |
|
40 | | - def stage_name(self, portfolio_id, stage_id): |
41 | | - return [stage['title'] for stage in self.stages(portfolio_id)['collection'] if stage['id'] == str(stage_id)][0] |
| 37 | + def filter(self, plan_id, plan_version, limit=500): |
| 38 | + url = '/rest/roadmap/1.0/plans/{0}/workitems/filter.json?planVersion={1}'.format(plan_id, plan_version) |
| 39 | + return self.post(url, data={'limit': limit}) |
42 | 40 |
|
43 | | - def estimates_dict(self, portfolio_id, estimates): |
44 | | - return {self.stage_name(portfolio_id, stage['targetId']): stage['value'] for stage in estimates['stages']} |
| 41 | + def dependencies(self, workitem_id, plan_version): |
| 42 | + url = '/rest/roadmap/1.0/workitems/{0}/dependencies.json?planVersion={1}'.format(workitem_id, plan_version) |
| 43 | + return self.get(url) |
| 44 | + |
| 45 | + def stage_name(self, plan_id, stage_id): |
| 46 | + return [stage['title'] for stage in self.stages(plan_id)['collection'] if stage['id'] == str(stage_id)][0] |
| 47 | + |
| 48 | + def estimates_dict(self, plan_id, estimates): |
| 49 | + return {self.stage_name(plan_id, stage['targetId']): stage['value'] for stage in estimates['stages']} |
0 commit comments