#!/opt/osstech/bin/python2.7
# -*- coding: utf-8 -*-

# unicornidm-attribute-setdisplay.py
# - show attribute list in user list information
# Copyright (C) Open Source Solution Technology Corporation.
# License: GNU General Public License version 2
# Date: 2012-11-01

import sys, os, subprocess
from optparse import OptionParser

def main():
    UNICORNIDM_PATH = "/opt/osstech/lib/unicornIDM"
    UNICORNIDM_CMD = "%s/manage.py" % UNICORNIDM_PATH

    if os.getuid() != 0:
        sys.stderr.write("You are not root.\n")
        sys.exit(1)

    usage = "usage: %prog -t <target> -a <attrname> [-d]"

    parser = OptionParser(usage=usage)
    parser.add_option("-t", "--target", dest="orgname", help="Target organization name")
    parser.add_option("-a", "--attrname",dest="attrname", help="name of attribute")
    parser.add_option("-d", "--disable",action="store_false",dest="status", help="remove this attribute in user list")

    (opts, args) = parser.parse_args(sys.argv)

    if not args:
        parser.print_help()
        sys.exit(1)

    if not opts.orgname:
        sys.stderr.write("Target organization is not specified.\n")
        parser.print_help()
        sys.exit(1)
    else:
        orgname = opts.orgname

    if not opts.attrname:
        sys.stderr.write("Attribute name is not specified.\n")
        parser.print_help()
        sys.exit(1)
    else:
        attrname = opts.attrname

    r = 1
    try:
        cmd = [UNICORNIDM_CMD, "setdisplayattr", "-t", orgname, "-a", attrname]
        if opts.status == False:
            cmd = cmd + ["-d"]
        p = subprocess.Popen(cmd, shell=False, stdin=subprocess.PIPE,
                             stdout=subprocess.PIPE,
                             stderr=subprocess.STDOUT,
                             cwd=UNICORNIDM_PATH)
        output = None
        for line in p.stdout.readlines():
            if output:
                output = "%s\n%s" % (output, line)
            else:
                output = "%s" % line
        r = p.wait()
    except Exception, e:
        sys.stderr.write("Failed to set attribute status.\n%s\n" % str(e))
        sys.exit(1)

    if (r == 0):
        sys.stdout.write(output)
    else:
        sys.stderr.write("Failed to set attribute status.\n%s\n" % output) 
        sys.exit(1)

    return

main()


