From 38795c9a464fb6bcb778c655ab1469fa933a54c3 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Mon, 18 Mar 2019 18:29:39 +0000 Subject: Add command line interface for admin tasks --- app/cli.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 app/cli.py (limited to 'app/cli.py') diff --git a/app/cli.py b/app/cli.py new file mode 100644 index 0000000..e128c35 --- /dev/null +++ b/app/cli.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +import getpass + +from email_validator import validate_email + +from app import db +from app.models import User + + +def register(app): + @app.cli.group(help="Perform admin commands") + def admin(): + pass + + @admin.command() + def add(): + username = input("Enter username: ") + email = input("Enter email address: ") + password = getpass.getpass() + assert password == getpass.getpass("Repeat password: ") + + user = User.query.filter_by(username=username).first() + if user is not None: + raise ValueError("User already exists") + + validate_email(email) + + user = User(username=username, email=email, is_admin=True) + user.set_password(password) + db.session.add(user) + db.session.commit() + + print("Admin user %r added successfully." % username) -- cgit v1.2.3