view scripts/copy-user.py @ 6763:d93b441ee778

Handle build issues, update css for mobile I added www.roundup-tracker.org as a property of mine in google search console. It reports bad mobile experience. According to the goatcounter tracker I put in, we get 400 hits from phones/small tablets; 400 from tablets/small laptops and 800 from computer screens. So 1/4 is mobile and 1/2 is not a large computer screen. On mobile (<960px) the left hand menu is stacked on top of the column in mobile sizes. Sub-menu links are spaced apart to make them easier to clkick on with a finger. Same with the table of contents in the documents. The main document content is now full display width (rather than scrunched to the right side of the display). This is just a quick hack, but it should make the docs more usable. As I worked, I found that _static/style.css changes were not being copied into the html build directory when sphinx was rerun. Nuke entire html subdir and rebuild from scratch each time. Also added comments to Makefile. Also robots.txt was being added as extra_html by sphinx, but it causes a missing from TOC error that exits the build (when using -W). Since exiting on warning is better, I changed Makefile to add robots.txt. Removed robots.txt references from conf.py.
author John Rouillard <rouilj@ieee.org>
date Sun, 10 Jul 2022 18:16:13 -0400
parents 64b05e24dbd8
children 2a6c3eb4e059
line wrap: on
line source

#!/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)
"""

from __future__ import print_function
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')

    db1.tx_Source = "cli"
    db2.tx_Source = "cli"

    userlist = db1.user.list()
    for userid in userids:
        try:
            userid = str(int(userid))
        except ValueError as 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 as 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:])


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