annotate scripts/copy-user.py @ 8270:c70ffbc2a003

test: Override Fuzz timeout from env variable. I have a local pytest.ini where I use: env = pytest_fuzz_timeout=30000 to set a 30 second timout while keeping the default 10 second for CI because my machine is slow. So the test now looks for that env variable and uses it if set.
author John Rouillard <rouilj@ieee.org>
date Sun, 12 Jan 2025 14:14:09 -0500
parents 2a6c3eb4e059
children fed0f839c260
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
2a6c3eb4e059 chore: lint script
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
19
1943
bd9e2e998e9d added contributed script for copying users between trackers
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20 import sys
7781
2a6c3eb4e059 chore: lint script
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
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
6e9b9743de89 Implementation for:
John Rouillard <rouilj@ieee.org>
parents: 4570
diff changeset
48 db1.tx_Source = "cli"
6e9b9743de89 Implementation for:
John Rouillard <rouilj@ieee.org>
parents: 4570
diff changeset
49 db2.tx_Source = "cli"
6e9b9743de89 Implementation for:
John Rouillard <rouilj@ieee.org>
parents: 4570
diff changeset
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
2a6c3eb4e059 chore: lint script
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
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
2a6c3eb4e059 chore: lint script
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
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

Roundup Issue Tracker: http://roundup-tracker.org/