summaryrefslogtreecommitdiffstats
path: root/manage.py
diff options
context:
space:
mode:
Diffstat (limited to 'manage.py')
-rwxr-xr-xmanage.py85
1 files changed, 44 insertions, 41 deletions
diff --git a/manage.py b/manage.py
index c1abbe3..1e5d8cb 100755
--- a/manage.py
+++ b/manage.py
@@ -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__':