diff options
Diffstat (limited to 'manage.py')
-rwxr-xr-x | manage.py | 85 |
1 files changed, 44 insertions, 41 deletions
@@ -1,16 +1,17 @@ #!/usr/bin/env python from flask import current_app -from flask_script import Manager, Server, Shell, Option, prompt_bool -from accounts import create_app +from argparse import ArgumentParser + from accounts.forms import RegisterForm -from accounts.utils.console import Command, ConsoleForm, TablePrinter +from accounts.utils.console import ConsoleForm, TablePrinter from accounts.backend.mail.dummy import DummyBackend as DummyMailBackend +from accounts import create_app -class ListServices(Command): + +class ListServices(): """List the configured services.""" - name = 'list-services' def run(self): table = TablePrinter(['Name', 'URL']) @@ -18,16 +19,8 @@ class ListServices(Command): for service in current_app.all_services]) -class ListUsers(Command): +class ListUsers(): """List registered users.""" - name = 'list-users' - - option_list = ( - Option('--locked', '-l', action='store_true', dest='locked', - help='Include locked users.'), - Option('--only-locked', '-L', action='store_true', dest='only_locked', - help='Show ONLY locked users.'), - ) def _get_users(self, locked, only_locked): for user in current_app.user_backend.find(): @@ -45,27 +38,15 @@ class ListUsers(Command): for user in self._get_users(locked, only_locked)]) -class CreateUser(Command): +class CreateUser(): """Register a user.""" - name = 'create-user' - - option_list = ( - Option('--ignore-blacklist', action='store_true', - dest='ignore_blacklist', help='Ignore blackisted user names.'), - Option('--print', '-p', action='store_true', dest='print_only', - help='Do not send the activation link via mail, only print it.'), - Option(dest='username', metavar='USERNAME', - help='Username that should be registered.'), - Option(dest='mail', metavar='MAIL', - help='Mail address of the new user.'), - ) def run(self, username, mail, ignore_blacklist=False, print_only=False): form = ConsoleForm(RegisterForm, username=username, mail=mail) form.csrf_enabled = False del form.question - if ignore_blacklist and prompt_bool('Blacklist wirklich ignorieren?'): + if ignore_blacklist: current_app.username_blacklist = [] if not form.validate(): @@ -83,19 +64,41 @@ class CreateUser(Command): def main(): - manager = Manager(create_app) - manager.add_option('-c', '--config', dest='config', required=False) - - manager.add_command( - 'runserver', Server(host='::', use_debugger=False)) - manager.add_command( - 'debug', Server(host='::', use_debugger=True)) - manager.add_command( - 'shell', Shell()) - manager.add_command(ListServices) - manager.add_command(ListUsers) - manager.add_command(CreateUser) - manager.run() + parser = ArgumentParser(description="Spline Accounts") + parser.add_argument('-c', '--config', dest='config', required=False) + + subparsers = parser.add_subparsers(dest="subcommand") + subparsers.add_parser("list-services") + + list_users = subparsers.add_parser("list-users") + list_users.add_argument('--locked', '-l', action='store_true', + dest='locked', help='Include locked users.') + list_users.add_argument('--only-locked', '-L', action='store_true', + dest='only_locked', help='Show ONLY locked users.') + + create_user = subparsers.add_parser("create-user") + create_user.add_argument('--ignore-blacklist', action='store_true', + dest='ignore_blacklist', + help='Ignore blackisted user names.') + create_user.add_argument('--print', '-p', action='store_true', dest='print_only', + help='Do not send the activation link via mail, only print it.'), + create_user.add_argument(dest='username', metavar='USERNAME', + help='Username that should be registered.'), + create_user.add_argument(dest='mail', metavar='MAIL', + help='Mail address of the new user.'), + + args = parser.parse_args() + + app = create_app() + with app.app_context(): + if args.subcommand == "list-services": + ListServices().run() + elif args.subcommand == "list-users": + ListUsers().run(args.locked, args.only_locked) + elif args.subcommand == "create-user": + with app.test_request_context("/cli/create-user"): + CreateUser().run(args.username, args.mail, args.ignore_blacklist, + args.print_only) if __name__ == '__main__': |