7675.887.17
by Paul Hummer
Added merge queue files |
1 |
# Copyright 2009-2010 Canonical Ltd. This software is licensed under the
|
2 |
# GNU Affero General Public License version 3 (see the file LICENSE).
|
|
3 |
||
7675.887.28
by Paul Hummer
Fixed some issues pre-review |
4 |
"""Branch merge queue interfaces."""
|
7675.887.17
by Paul Hummer
Added merge queue files |
5 |
|
6 |
__metaclass__ = type |
|
7 |
||
8 |
__all__ = [ |
|
9 |
'IBranchMergeQueue', |
|
7675.887.23
by Paul Hummer
Added IBranchMergeQueueSource and accompanying tests |
10 |
'IBranchMergeQueueSource', |
7675.906.5
by Ian Booth
Finish view and add unit tests |
11 |
'user_has_special_merge_queue_access', |
7675.887.17
by Paul Hummer
Added merge queue files |
12 |
]
|
13 |
||
7675.887.35
by Paul Hummer
Added first webservice test |
14 |
from lazr.restful.declarations import ( |
15 |
export_as_webservice_entry, |
|
7675.887.42
by Paul Hummer
Exposed API for IBranchMergeQueue.branches |
16 |
export_write_operation, |
7675.887.38
by Paul Hummer
Added tests for IBranchMergeQueue.registrant and IBranchMergeQueue.owner |
17 |
exported, |
7675.887.42
by Paul Hummer
Exposed API for IBranchMergeQueue.branches |
18 |
mutator_for, |
19 |
operation_parameters, |
|
7675.887.35
by Paul Hummer
Added first webservice test |
20 |
)
|
7675.887.25
by Paul Hummer
Added IBranch.branches attribute |
21 |
from lazr.restful.fields import ( |
22 |
CollectionField, |
|
23 |
Reference, |
|
24 |
)
|
|
7675.906.8
by Ian Booth
Code review fixes |
25 |
from zope.component import getUtility |
7675.887.17
by Paul Hummer
Added merge queue files |
26 |
from zope.interface import Interface |
27 |
from zope.schema import ( |
|
28 |
Datetime, |
|
29 |
Int, |
|
30 |
Text, |
|
31 |
TextLine, |
|
32 |
)
|
|
33 |
||
14600.1.12
by Curtis Hovey
Move i18n to lp. |
34 |
from lp import _ |
13130.1.6
by Curtis Hovey
Move ILaunchpadCelebrity to lp.app. |
35 |
from lp.app.interfaces.launchpad import ILaunchpadCelebrities |
7675.887.17
by Paul Hummer
Added merge queue files |
36 |
from lp.services.fields import ( |
37 |
PersonChoice, |
|
7675.887.28
by Paul Hummer
Fixed some issues pre-review |
38 |
PublicPersonChoice, |
7675.887.17
by Paul Hummer
Added merge queue files |
39 |
)
|
40 |
||
7675.887.28
by Paul Hummer
Fixed some issues pre-review |
41 |
|
7675.887.17
by Paul Hummer
Added merge queue files |
42 |
class IBranchMergeQueue(Interface): |
7675.887.27
by Paul Hummer
Added IBranchMergeQueue.setMergeQueueConfig and tests |
43 |
"""An interface for managing branch merges."""
|
7675.887.17
by Paul Hummer
Added merge queue files |
44 |
|
7675.887.35
by Paul Hummer
Added first webservice test |
45 |
export_as_webservice_entry() |
46 |
||
7675.887.17
by Paul Hummer
Added merge queue files |
47 |
id = Int(title=_('ID'), readonly=True, required=True) |
48 |
||
7675.887.38
by Paul Hummer
Added tests for IBranchMergeQueue.registrant and IBranchMergeQueue.owner |
49 |
registrant = exported( |
50 |
PublicPersonChoice( |
|
51 |
title=_("The user that registered the branch."), |
|
52 |
required=True, readonly=True, |
|
53 |
vocabulary='ValidPersonOrTeam')) |
|
7675.887.17
by Paul Hummer
Added merge queue files |
54 |
|
7675.887.38
by Paul Hummer
Added tests for IBranchMergeQueue.registrant and IBranchMergeQueue.owner |
55 |
owner = exported( |
56 |
PersonChoice( |
|
57 |
title=_('Owner'), |
|
58 |
required=True, readonly=True, |
|
59 |
vocabulary='UserTeamsParticipationPlusSelf', |
|
60 |
description=_("The owner of the merge queue."))) |
|
7675.887.17
by Paul Hummer
Added merge queue files |
61 |
|
7675.887.39
by Paul Hummer
Exposed IBranchMergeQueue.name and IBranchMergeQueue.description |
62 |
name = exported( |
63 |
TextLine( |
|
64 |
title=_('Name'), required=True, |
|
65 |
description=_( |
|
66 |
"Keep very short, unique, and descriptive, because it will "
|
|
67 |
"be used in URLs. "
|
|
68 |
"Examples: main, devel, release-1.0, gnome-vfs."))) |
|
7675.887.17
by Paul Hummer
Added merge queue files |
69 |
|
7675.887.39
by Paul Hummer
Exposed IBranchMergeQueue.name and IBranchMergeQueue.description |
70 |
description = exported( |
71 |
Text( |
|
72 |
title=_('Description'), required=False, |
|
73 |
description=_( |
|
74 |
'A short description of the purpose of this merge queue.'))) |
|
7675.887.17
by Paul Hummer
Added merge queue files |
75 |
|
7675.887.40
by Paul Hummer
Exported IBranchMergeQueue.configuration and IBranchMergeQueue.date_created |
76 |
configuration = exported( |
77 |
TextLine( |
|
7675.887.42
by Paul Hummer
Exposed API for IBranchMergeQueue.branches |
78 |
title=_('Configuration'), required=False, readonly=True, |
7675.887.40
by Paul Hummer
Exported IBranchMergeQueue.configuration and IBranchMergeQueue.date_created |
79 |
description=_( |
80 |
"A JSON string of configuration values."))) |
|
7675.887.17
by Paul Hummer
Added merge queue files |
81 |
|
7675.887.40
by Paul Hummer
Exported IBranchMergeQueue.configuration and IBranchMergeQueue.date_created |
82 |
date_created = exported( |
83 |
Datetime( |
|
84 |
title=_('Date Created'), |
|
85 |
required=True, |
|
86 |
readonly=True)) |
|
7675.887.23
by Paul Hummer
Added IBranchMergeQueueSource and accompanying tests |
87 |
|
7675.887.41
by Paul Hummer
Exposed IBranchMergeQueue.branches through the web api |
88 |
branches = exported( |
89 |
CollectionField( |
|
90 |
title=_('Dependent Branches'), |
|
7675.887.45
by Paul Hummer
Fixed some lint |
91 |
description=_( |
92 |
'A collection of branches that this queue manages.'), |
|
7675.887.41
by Paul Hummer
Exposed IBranchMergeQueue.branches through the web api |
93 |
readonly=True, |
94 |
value_type=Reference(Interface))) |
|
7675.887.25
by Paul Hummer
Added IBranch.branches attribute |
95 |
|
7675.887.42
by Paul Hummer
Exposed API for IBranchMergeQueue.branches |
96 |
@mutator_for(configuration) |
97 |
@operation_parameters( |
|
98 |
config=TextLine(title=_("A JSON string of configuration values."))) |
|
99 |
@export_write_operation() |
|
7675.887.27
by Paul Hummer
Added IBranchMergeQueue.setMergeQueueConfig and tests |
100 |
def setMergeQueueConfig(config): |
101 |
"""Set the JSON string configuration of the merge queue.
|
|
102 |
||
103 |
:param config: A JSON string of configuration values.
|
|
104 |
"""
|
|
105 |
||
7675.887.23
by Paul Hummer
Added IBranchMergeQueueSource and accompanying tests |
106 |
|
107 |
class IBranchMergeQueueSource(Interface): |
|
108 |
||
109 |
def new(name, owner, registrant, description, configuration, branches): |
|
110 |
"""Create a new IBranchMergeQueue object.
|
|
111 |
||
112 |
:param name: The name of the branch merge queue.
|
|
113 |
:param description: A description of queue.
|
|
114 |
:param configuration: A JSON string of configuration values.
|
|
115 |
:param owner: The owner of the queue.
|
|
116 |
:param registrant: The registrant of the queue.
|
|
117 |
:param branches: A list of branches to add to the queue.
|
|
118 |
"""
|
|
7675.906.5
by Ian Booth
Finish view and add unit tests |
119 |
|
120 |
||
121 |
def user_has_special_merge_queue_access(user): |
|
122 |
"""Admins and bazaar experts have special access.
|
|
123 |
||
124 |
:param user: A 'Person' or None.
|
|
125 |
"""
|
|
126 |
if user is None: |
|
127 |
return False |
|
128 |
celebs = getUtility(ILaunchpadCelebrities) |
|
13401.2.2
by Steve Kowalik
Kill all references to the celebrity. |
129 |
return user.inTeam(celebs.admin) |