Mercurial > p > roundup > code
annotate scripts/copy-user.py @ 4754:4e16bcd4405e
Generate some Chomsky issues
| author | Pradip Caulagi <caulagi@gmail.com> |
|---|---|
| date | Sun, 03 Feb 2013 17:29:32 +0530 |
| parents | 6e3e4f24c753 |
| children | 6e9b9743de89 |
| rev | line source |
|---|---|
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 # Copyright (C) 2003 by Intevation GmbH |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 # Author: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 # Thomas Arendsen Hein <thomas@intevation.de> |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 # |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 # This program is free software dual licensed under the GPL (>=v2) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 # and the Roundup Licensing (see COPYING.txt in the roundup distribution). |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 """ |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 copy-user <instance-home> <instance-home> <userid> [<userid>...] |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 Copy one or more Roundup users from one tracker instance to another. |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 Example: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 copy-user /roundup/tracker1 /roundup/tracker2 `seq 3 10` 14 16 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 (copies users 3, 4, 5, 6, 7, 8, 9, 10, 14 and 16) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 """ |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 import sys |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 import roundup.instance |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 def copy_user(home1, home2, *userids): |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 """Copy users which are listed by userids from home1 to home2""" |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 copyattribs = ['username', 'password', 'address', 'realname', 'phone', |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 'organisation', 'alternate_addresses', 'roles', 'timezone'] |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 try: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 instance1 = roundup.instance.open(home1) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 print "Opened source instance: %s" % home1 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 except: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 print "Can't open source instance: %s" % home1 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 sys.exit(1) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 try: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 instance2 = roundup.instance.open(home2) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 print "Opened target instance: %s" % home2 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 except: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 print "Can't open target instance: %s" % home2 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 sys.exit(1) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 db1 = instance1.open('admin') |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 db2 = instance2.open('admin') |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 userlist = db1.user.list() |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 for userid in userids: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 try: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 userid = str(int(userid)) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 except ValueError, why: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 print "Not a numeric user id: %s Skipping ..." % (userid,) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 continue |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 if userid not in userlist: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 print "User %s not in source instance. Skipping ..." % userid |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 continue |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 user = {} |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 for attrib in copyattribs: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 value = db1.user.get(userid, attrib) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 if value: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 user[attrib] = value |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 try: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 db2.user.lookup(user['username']) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 print "User %s: Username '%s' exists in target instance. Skipping ..." % (userid, user['username']) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 continue |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 except KeyError, why: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 pass |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 print "Copying user %s (%s) ..." % (userid, user['username']) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 db2.user.create(**user) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
69 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
70 db2.commit() |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
71 db2.close() |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
72 print "Closed target instance." |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
73 db1.close() |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
74 print "Closed source instance." |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
75 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
76 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 if __name__ == "__main__": |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
78 if len(sys.argv) < 4: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
79 print __doc__ |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
80 sys.exit(1) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 else: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
82 copy_user(*sys.argv[1:]) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
83 |
