1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/usr/bin/python -S
#
# Copyright 2009 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
# pylint: disable-msg=W0403
"""List the stacked branches in Launchpad.
Usage: ./get-stacked-on-branches.py
Prints the stacked branches in Launchpad to standard output in the following
format:
<id> <branch_type> <unique_name> <stacked_on_id> <stacked_on_unique_name>
<id> is the database ID of the Branch as a decimal integer.
<branch_type> is the name of the BranchType, e.g. 'HOSTED'.
<unique_name> is the unique_name property of the Branch.
<stacked_on_id> is the database ID of the Branch.stacked_on branch
<stacked_on_unique_name> is the unique_name property of the Branch.stacked_on
branch.
This script is intended to be used in conjunction with "update-stacked-on.py".
"""
__metaclass__ = type
import _pythonpath
from storm.locals import Not
from zope.component import getUtility
from canonical.launchpad.scripts import execute_zcml_for_scripts
from canonical.launchpad.webapp.interfaces import (
IStoreSelector, MAIN_STORE, SLAVE_FLAVOR)
def get_stacked_branches():
"""Iterate over all branches that, according to the db, are stacked."""
# Avoiding circular import.
from lp.code.model.branch import Branch
store = getUtility(IStoreSelector).get(MAIN_STORE, SLAVE_FLAVOR)
return store.find(Branch, Not(Branch.stacked_on == None))
def main():
"""Print all stacked branches from the database.
See the module docstring for more information.
"""
execute_zcml_for_scripts()
for db_branch in get_stacked_branches():
stacked_on = db_branch.stacked_on
print '%s %s %s %s %s' % (
db_branch.id, db_branch.branch_type.name, db_branch.unique_name,
stacked_on.id, stacked_on.unique_name)
if __name__ == '__main__':
main()
|