~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to utilities/list-person-references.py

  • Committer: Jelmer Vernooij
  • Date: 2011-09-21 14:28:02 UTC
  • mfrom: (14006 devel)
  • mto: This revision was merged to the branch mainline in revision 14010.
  • Revision ID: jelmer@canonical.com-20110921142802-7ggkc204igsy532w
MergeĀ lp:launchpad

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python -S
2
 
#
3
 
# Copyright 2009-2010 Canonical Ltd.  This software is licensed under the
4
 
# GNU Affero General Public License version 3 (see the file LICENSE).
5
 
 
6
 
import _pythonpath
7
 
 
8
 
import sys
9
 
from canonical.lp import initZopeless
10
 
from canonical.database import postgresql
11
 
from canonical.database.sqlbase import cursor
12
 
from lp.registry.model.person import Person
13
 
from lp.registry.model.teammembership import TeamParticipation
14
 
 
15
 
 
16
 
person_handle = sys.argv[1]
17
 
txn = initZopeless()
18
 
try:
19
 
    int(person_handle)
20
 
except ValueError:
21
 
    if "@" in person_handle:
22
 
        person = Person.selectOne("EmailAddress.person = Person.id AND "
23
 
                               "emailaddress.email = %s" % person_handle)
24
 
    else:
25
 
        person = Person.selectOneBy(name=person_handle)
26
 
else:
27
 
    person = Person.selectOneBy(id=person_handle)
28
 
 
29
 
if person is None:
30
 
    print "Person %s not found" % person_handle
31
 
    sys.exit(1)
32
 
 
33
 
 
34
 
skip = []
35
 
cur = cursor()
36
 
references = list(postgresql.listReferences(cur, 'person', 'id'))
37
 
 
38
 
print ("Listing references for %s (ID %s, preferred email %s):\n" %
39
 
       (person.name, person.id,
40
 
        person.preferredemail and person.preferredemail.email))
41
 
for src_tab, src_col, ref_tab, ref_col, updact, delact in references:
42
 
    if (src_tab, src_col) in skip:
43
 
        continue
44
 
    query = "SELECT id FROM %s WHERE %s=%s" % (src_tab, src_col, person.id)
45
 
    cur.execute(query)
46
 
    rows = cur.fetchall()
47
 
    for row in rows:
48
 
        if src_tab.lower() == 'teamparticipation':
49
 
            tp = TeamParticipation.selectOneBy(
50
 
                personID=person.id, teamID=person.id)
51
 
            if tp.id == row[0]:
52
 
                # Every person has a teamparticipation entry for itself,
53
 
                # and we already know this. No need to output it, then.
54
 
                continue
55
 
        print ("\tColumn %s of table %s with id %s points to this "
56
 
               "person." % (src_col, src_tab, row[0]))
57
 
 
58
 
print