--- a/Allura/allura/command/script.py
+++ b/Allura/allura/command/script.py
@@ -1,5 +1,8 @@
import sys
+from ming.orm import session
+from pylons import c
from . import base
+from allura.lib import helpers as h
class ScriptCommand(base.Command):
min_args=2
@@ -14,3 +17,30 @@
ns = dict(__name__='__main__')
sys.argv = self.args[1:]
exec fp in ns
+
+class SetToolAccessCommand(base.Command):
+ min_args=3
+ max_args=None
+ usage = 'NAME <ini file> <project_shortname> <access_level>...'
+ summary = ('Set the tool statuses that are permitted to be installed on a'
+ ' given project')
+ parser = base.Command.standard_parser(verbose=True)
+
+ def command(self):
+ self.basic_setup()
+ h.set_context(self.args[1])
+ extra_status = []
+ for s in self.args[2:]:
+ s = s.lower()
+ if s=='production':
+ print ('All projects always have access to prodcution tools,'
+ ' so removing from list.')
+ continue
+ if s not in ('alpha', 'beta'):
+ print 'Unknown tool status %s' % s
+ sys.exit(1)
+ extra_status.append(s)
+ print 'Setting project "%s" tool access to production + %r' % (
+ self.args[1], extra_status)
+ c.project._extra_tool_status = extra_status
+ session(c.project).flush()