Mercurial > p > roundup > code
annotate scripts/copy-user.py @ 8094:8e310a7b5e09
issue2551131 - Return accept-patch if patch body not accepted (415 code)
Now returns:
Accept-Patch: application/json, application/x-www-form-urlencoded
for PATCH verb.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 16 Jul 2024 20:23:36 -0400 |
| parents | 2a6c3eb4e059 |
| children | fed0f839c260 |
| 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 |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
18 from __future__ import print_function |
| 7781 | 19 |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 import sys |
| 7781 | 21 |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 import roundup.instance |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 |
|
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 def copy_user(home1, home2, *userids): |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 """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
|
27 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 copyattribs = ['username', 'password', 'address', 'realname', 'phone', |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 'organisation', 'alternate_addresses', 'roles', 'timezone'] |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 try: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 instance1 = roundup.instance.open(home1) |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
33 print("Opened source instance: %s" % home1) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 except: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
35 print("Can't open source instance: %s" % home1) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 sys.exit(1) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 try: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 instance2 = roundup.instance.open(home2) |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
40 print("Opened target instance: %s" % home2) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 except: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
42 print("Can't open target instance: %s" % home2) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 sys.exit(1) |
|
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 db1 = instance1.open('admin') |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 db2 = instance2.open('admin') |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 |
| 4781 | 48 db1.tx_Source = "cli" |
| 49 db2.tx_Source = "cli" | |
| 50 | |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 userlist = db1.user.list() |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 for userid in userids: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 try: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 userid = str(int(userid)) |
| 7781 | 55 except ValueError: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
56 print("Not a numeric user id: %s Skipping ..." % (userid,)) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 continue |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 if userid not in userlist: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
59 print("User %s not in source instance. Skipping ..." % userid) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 continue |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 user = {} |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 for attrib in copyattribs: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 value = db1.user.get(userid, attrib) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 if value: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 user[attrib] = value |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 try: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 db2.user.lookup(user['username']) |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
69 print("User %s: Username '%s' exists in target instance. Skipping ..." % (userid, user['username'])) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
70 continue |
| 7781 | 71 except KeyError: |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
72 pass |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
73 print("Copying user %s (%s) ..." % (userid, user['username'])) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
74 db2.user.create(**user) |
|
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 db2.commit() |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 db2.close() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
78 print("Closed target instance.") |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
79 db1.close() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
80 print("Closed source instance.") |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
82 |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
83 if __name__ == "__main__": |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
84 if len(sys.argv) < 4: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5248
diff
changeset
|
85 print(__doc__) |
|
1943
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 sys.exit(1) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
87 else: |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 copy_user(*sys.argv[1:]) |
|
bd9e2e998e9d
added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 |
