You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by he...@apache.org on 2015/06/09 17:36:01 UTC
[2/2] allura git commit: [#7892] script to disable users in batch
[#7892] script to disable users in batch
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/66c8d485
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/66c8d485
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/66c8d485
Branch: refs/heads/master
Commit: 66c8d485f821fc6be3f16bffa5faa2d4d74c6023
Parents: cc37f7e
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Mon Jun 8 16:43:47 2015 +0000
Committer: Heith Seewald <hs...@slashdotmedia.com>
Committed: Tue Jun 9 15:34:51 2015 +0000
----------------------------------------------------------------------
Allura/allura/scripts/disable_users.py | 67 +++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/66c8d485/Allura/allura/scripts/disable_users.py
----------------------------------------------------------------------
diff --git a/Allura/allura/scripts/disable_users.py b/Allura/allura/scripts/disable_users.py
new file mode 100644
index 0000000..9ce1a1b
--- /dev/null
+++ b/Allura/allura/scripts/disable_users.py
@@ -0,0 +1,67 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import argparse
+import logging
+import sys
+
+from ming.odm import session
+
+from allura.lib.plugin import AuthenticationProvider
+from allura.scripts import ScriptTask
+from allura import model as M
+
+
+log = logging.getLogger(__name__)
+
+
+class DisableUsers(ScriptTask):
+
+ @classmethod
+ def execute(cls, options):
+ if options.usernames == ['-']:
+ usernames = [line.strip() for line in sys.stdin]
+ else:
+ usernames = options.usernames
+ cls.disable_users(usernames)
+
+ @classmethod
+ def disable_users(cls, usernames):
+ auth_provider = AuthenticationProvider.get(request=None)
+
+ # would be nice to use the BatchIndexer extension around this but that only works for artifacts not users
+
+ for username in usernames:
+ user = M.User.query.get(username=username)
+ if not user:
+ log.info('Could not find user: %s', username)
+ else:
+ log.info('Disabling user: %s', username)
+ auth_provider.disable_user(user)
+ session(user).flush(user)
+
+ @classmethod
+ def parser(cls):
+ parser = argparse.ArgumentParser(description='Disable listed users')
+ parser.add_argument(
+ '--usernames', dest='usernames', type=str, nargs='+', metavar='<username>', required=True,
+ help='List of usernames, or "-" to read from stdin')
+ return parser
+
+
+if __name__ == '__main__':
+ DisableUsers.main()