diff options
Diffstat (limited to 'manage.py')
-rwxr-xr-x | manage.py | 30 |
1 files changed, 29 insertions, 1 deletions
@@ -1,6 +1,6 @@ #!/usr/bin/env python from flask import current_app -from flask.ext.script import Command, Manager, Server, Shell +from flask.ext.script import Command, Manager, Server, Shell, Option from accounts import app from accounts.utils.console import TablePrinter @@ -16,6 +16,33 @@ class ListServices(Command): for service in current_app.all_services]) +class ListUsers(Command): + """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(): + user_locked = user.mail.startswith('noreply-disabledaccount-') + if user_locked and not (locked or only_locked): + continue + elif not user_locked and only_locked: + continue + + yield user + + def run(self, locked, only_locked): + table = TablePrinter(['Name', 'E-Mail']) + table.output([(user.uid, user.mail) + for user in self._get_users(locked, only_locked)]) + + def main(): manager = Manager(app) manager.add_command( @@ -25,6 +52,7 @@ def main(): manager.add_command( 'shell', Shell()) manager.add_command(ListServices) + manager.add_command(ListUsers) manager.run() |