changeset 455:dc2c565600a9

Fix for deactivating all configurations on admin page. Closes #175.
author cmlenz
date Mon, 03 Sep 2007 11:14:33 +0000
parents ed81c13a5cac
children dcde61c928af
files bitten/admin.py bitten/tests/admin.py
diffstat 2 files changed, 30 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/admin.py
+++ b/bitten/admin.py
@@ -190,11 +190,9 @@
     def _activate_configs(self, req):
         req.perm.assert_permission('BUILD_MODIFY')
 
-        active = req.args.get('active')
-        if not active:
-            return
+        active = req.args.get('active') or []
+        active = isinstance(active, list) and active or [active]
 
-        active = isinstance(active, list) and active or [active]
         db = self.env.get_db_cnx()
         for config in list(BuildConfig.select(self.env, db=db,
                                               include_inactive=True)):
--- a/bitten/tests/admin.py
+++ b/bitten/tests/admin.py
@@ -245,6 +245,34 @@
             config = BuildConfig.fetch(self.env, name='foo')
             self.assertEqual(True, config.active)
 
+    def test_process_deactivate_config(self):
+        BuildConfig(self.env, name='foo', path='branches/foo',
+                    active=True).insert()
+        BuildConfig(self.env, name='bar', path='branches/bar',
+                    active=True).insert()
+
+        redirected_to = []
+        def redirect(url):
+            redirected_to.append(url)
+            raise RequestDone
+        req = Mock(method='POST', perm=PermissionCache(self.env, 'joe'),
+                   abs_href=Href('http://example.org/'), redirect=redirect,
+                   authname='joe',
+                   args={'apply': ''})
+
+        provider = BuildConfigurationsAdminPageProvider(self.env)
+        try:
+            provider.process_admin_request(req, 'bitten', 'configs', '')
+            self.fail('Expected RequestDone')
+
+        except RequestDone:
+            self.assertEqual('http://example.org/admin/bitten/configs',
+                             redirected_to[0])
+            config = BuildConfig.fetch(self.env, name='foo')
+            self.assertEqual(False, config.active)
+            config = BuildConfig.fetch(self.env, name='bar')
+            self.assertEqual(False, config.active)
+
     def test_process_add_config(self):
         BuildConfig(self.env, name='foo', label='Foo', path='branches/foo',
                     active=True).insert()
Copyright (C) 2012-2017 Edgewall Software