Commit 0ff32581 authored by Seblu's avatar Seblu
Browse files

command rights

command addright
command delright
parent 460c8634
Loading
Loading
Loading
Loading
+54 −3
Original line number Diff line number Diff line
@@ -348,7 +348,7 @@ class Command(object):
    cmd_addtag.usage = "addtag <account> <tag> <value>"

    def cmd_deltag(self, argv):
        '''Delete a static tag from an user'''
        '''Delete a static tag from an account'''
        if len(argv) != 3:
            raise cmdBadArgument()
        try:
@@ -357,6 +357,57 @@ class Command(object):
            raise cmdError("RPCError: %s"%str(e))
    cmd_deltag.usage = "deltag <account> <tag>"

    def cmd_rights(self, argv):
        '''List account rights (current by default)'''
        # Parse argline
        try:
            oparser = OptionParser(prog=argv[0])
            oparser.add_option("--raw", action="store_true", dest="raw",
                               help="Don't append filter on request")
            (options, args) = oparser.parse_args(argv[1:])
        except SystemExit:
            return
        # append current login if nothing asked
        if len(args) == 0:
            tql = "a=%s"%self.cli.settings["login"]
        else:
            tql = "".join(args)
        # update tql if mode
        if not options.raw:
            tql += "&a"
        # ask server
        try:
            al = self.cli.rpc.call("rights", tql)
        except RpcError as e:
            raise cmdError("RPCError: %s"%str(e))
        # display answer
        for (a, rl) in al.items():
            self.printer.out("%srights of %s%s"%(color["lblue"], a, color["reset"]))
            for i,r in enumerate(rl):
                tags = " ".join([ "%s%s:%s%s"%(color["green"], t, color["reset"], v) for (t,v) in r.items() ])
                self.printer.out("[%s] %s"%(i,tags))
    cmd_rights.usage = "rights [--raw] [--help] [tql]"

    def cmd_addright(self, argv):
        '''Add/edit a right'''
        if len(argv) != 5:
            raise cmdBadArgument()
        try:
            self.cli.rpc.call("addright", argv[1], argv[2], argv[3], argv[4])
        except RpcError as e:
            raise cmdError("RPCError: %s"%str(e))
    cmd_addright.usage = "addright <account> <right tql> <method> <allow>"

    def cmd_delright(self, argv):
        '''Delete a right'''
        if len(argv) != 3:
            raise cmdBadArgument()
        try:
            self.cli.rpc.call("delright", argv[1], int(argv[2]))
        except RpcError as e:
            raise cmdError("RPCError: %s"%str(e))
    cmd_delright.usage = "delright <account> <index>"

    def cmd_addaccount(self, argv):
        '''Create an account'''
        if len(argv) != 3:
@@ -365,7 +416,7 @@ class Command(object):
            self.cli.rpc.call("addaccount", argv[1], argv[2])
        except RpcError as e:
            raise cmdError("RPCError: %s"%str(e))
    cmd_addaccount.usage = "addaccount <name> <role>"
    cmd_addaccount.usage = "addaccount <account> <role>"

    def cmd_delaccount(self, argv):
        '''Delete an account'''
@@ -375,7 +426,7 @@ class Command(object):
            self.cli.rpc.call("delaccount", argv[1])
        except RpcError as e:
            raise cmdError("RPCError: %s"%str(e))
    cmd_delaccount.usage = "delaccount <name>"
    cmd_delaccount.usage = "delaccount <account>"

    def cmd_passwd(self, argv):
        '''Change account password'''