summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 4ef722c)
raw | patch | inline | side by side (parent: 4ef722c)
author | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Thu, 4 Dec 2003 23:13:43 +0000 (23:13 +0000) | ||
committer | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Thu, 4 Dec 2003 23:13:43 +0000 (23:13 +0000) |
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@2011 57a73879-2fb5-44c3-a270-3262357dd7e2
CHANGES.txt | patch | blob | history | |
scripts/copy-user.py | [new file with mode: 0755] | patch | blob |
diff --git a/CHANGES.txt b/CHANGES.txt
index b2a94094c2c86c4dd61fd80590ba763608e2700d..836f5af24db8068da6d79851f61f4dfe0364e473 100644 (file)
--- a/CHANGES.txt
+++ b/CHANGES.txt
appended (so the demo tracker's template name is "classic-demo")
- always sort MultilinkHTMLProperty in the correct order, usually
alphabetically (sf feature 790512).
+- added script for copying user(s) from tracker to tracker (sf patch
+ 828963)
Fixed:
- mysql documentation fixed to note requirement of 4.0+ and InnoDB
diff --git a/scripts/copy-user.py b/scripts/copy-user.py
--- /dev/null
+++ b/scripts/copy-user.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+# Copyright (C) 2003 by Intevation GmbH
+# Author:
+# Thomas Arendsen Hein <thomas@intevation.de>
+#
+# This program is free software dual licensed under the GPL (>=v2)
+# and the Roundup Licensing (see COPYING.txt in the roundup distribution).
+
+"""
+copy-user <instance-home> <instance-home> <userid> [<userid>...]
+
+Copy one or more Roundup users from one tracker instance to another.
+Example:
+ copy-user /roundup/tracker1 /roundup/tracker2 `seq 3 10` 14 16
+ (copies users 3, 4, 5, 6, 7, 8, 9, 10, 14 and 16)
+"""
+
+__version__ = "$Revision: 1.1 $"
+# $Source: /home/stefan/projects/roundup-migrate/roundup/scripts/copy-user.py,v $
+# $Id: copy-user.py,v 1.1 2003-12-04 23:13:43 richard Exp $
+
+import sys
+import roundup.instance
+
+
+def copy_user(home1, home2, *userids):
+ """Copy users which are listed by userids from home1 to home2"""
+
+ copyattribs = ['username', 'password', 'address', 'realname', 'phone',
+ 'organisation', 'alternate_addresses', 'roles', 'timezone']
+
+ try:
+ instance1 = roundup.instance.open(home1)
+ print "Opened source instance: %s" % home1
+ except:
+ print "Can't open source instance: %s" % home1
+ sys.exit(1)
+
+ try:
+ instance2 = roundup.instance.open(home2)
+ print "Opened target instance: %s" % home2
+ except:
+ print "Can't open target instance: %s" % home2
+ sys.exit(1)
+
+ db1 = instance1.open('admin')
+ db2 = instance2.open('admin')
+
+ userlist = db1.user.list()
+ for userid in userids:
+ try:
+ userid = str(int(userid))
+ except ValueError, why:
+ print "Not a numeric user id: %s Skipping ..." % (userid,)
+ continue
+ if userid not in userlist:
+ print "User %s not in source instance. Skipping ..." % userid
+ continue
+
+ user = {}
+ for attrib in copyattribs:
+ value = db1.user.get(userid, attrib)
+ if value:
+ user[attrib] = value
+ try:
+ db2.user.lookup(user['username'])
+ print "User %s: Username '%s' exists in target instance. Skipping ..." % (userid, user['username'])
+ continue
+ except KeyError, why:
+ pass
+ print "Copying user %s (%s) ..." % (userid, user['username'])
+ db2.user.create(**user)
+
+ db2.commit()
+ db2.close()
+ print "Closed target instance."
+ db1.close()
+ print "Closed source instance."
+
+
+if __name__ == "__main__":
+ if len(sys.argv) < 4:
+ print __doc__
+ sys.exit(1)
+ else:
+ copy_user(*sys.argv[1:])
+