|
import argparse
|
|
import sys
|
|
from devplacepy.database import get_table
|
|
|
|
|
|
def cmd_role_get(args):
|
|
users = get_table("users")
|
|
user = users.find_one(username=args.username)
|
|
if not user:
|
|
print(f"User '{args.username}' not found")
|
|
sys.exit(1)
|
|
print(user.get("role", "member").lower())
|
|
|
|
|
|
def cmd_role_set(args):
|
|
role = args.role.lower()
|
|
if role not in ("member", "admin"):
|
|
print("Role must be 'member' or 'admin'")
|
|
sys.exit(1)
|
|
|
|
users = get_table("users")
|
|
user = users.find_one(username=args.username)
|
|
if not user:
|
|
print(f"User '{args.username}' not found")
|
|
sys.exit(1)
|
|
|
|
users.update({"uid": user["uid"], "role": role.capitalize()}, ["uid"])
|
|
print(f"User '{args.username}' role set to '{role}'")
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="DevPlace admin CLI")
|
|
sub = parser.add_subparsers(title="commands", dest="command")
|
|
|
|
role = sub.add_parser("role", help="Manage user roles")
|
|
role_sub = role.add_subparsers(title="action", dest="action")
|
|
|
|
role_get = role_sub.add_parser("get", help="Get a user's role")
|
|
role_get.add_argument("username")
|
|
role_get.set_defaults(func=cmd_role_get)
|
|
|
|
role_set = role_sub.add_parser("set", help="Set a user's role")
|
|
role_set.add_argument("username")
|
|
role_set.add_argument("role", choices=["member", "admin"])
|
|
role_set.set_defaults(func=cmd_role_set)
|
|
|
|
args = parser.parse_args()
|
|
if hasattr(args, "func"):
|
|
args.func(args)
|
|
else:
|
|
parser.print_help()
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|