changeset 467:5c9f34b18236

Apply patch that clarifies some code in the admin module. Closes #196. Thanks to David Abrahams.
author cmlenz
date Tue, 23 Oct 2007 15:41:59 +0000
parents 79be3c00ae69
children 44c2b4ac6157
files bitten/admin.py
diffstat 1 files changed, 25 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/admin.py
+++ b/bitten/admin.py
@@ -91,14 +91,21 @@
         if req.perm.has_permission('BUILD_MODIFY'):
             yield ('bitten', 'Builds', 'configs', 'Configurations')
 
-    def process_admin_request(self, req, cat, page, config_name):
+    def process_admin_request(self, req, cat, page, path_info):
         data = {}
 
-        if config_name:
-            if '/' in config_name or (
+        # Analyze url
+        try:
+            config_name, platform_id = path_info.split('/', 1)
+        except:
+            config_name = path_info
+            platform_id = None
+
+        if config_name: # Existing build config
+            if platform_id or ( # Editing or creating one of the config's target platforms
                     req.method == 'POST' and 'new' in req.args):
-                if '/' in config_name:
-                    config_name, platform_id = config_name.split('/', 1)
+
+                if platform_id: # Editing target platform
                     platform_id = int(platform_id)
                     platform = TargetPlatform.fetch(self.env, platform_id)
 
@@ -107,7 +114,7 @@
                                 self._update_platform(req, platform):
                             req.redirect(req.abs_href.admin(cat, page,
                                                             config_name))
-                else:
+                else: # creating target platform
                     if req.method == 'POST':
                         if 'add' in req.args:
                             self._create_platform(req, config_name)
@@ -119,6 +126,7 @@
 
                     platform = TargetPlatform(self.env, config=config_name)
 
+                # Set up template variables
                 data['platform'] = {
                     'id': platform.id, 'name': platform.name,
                     'exists': platform.exists,
@@ -128,7 +136,7 @@
                     ] or [('', '')]
                 }
 
-            else:
+            else: # Editing existing build config itself
                 config = BuildConfig.fetch(self.env, config_name)
                 platforms = list(TargetPlatform.select(self.env,
                                                        config=config.name))
@@ -137,13 +145,17 @@
                     if 'add' in req.args: # Add target platform
                         platform = self._create_platform(req, config)
                         req.redirect(req.abs_href.admin(cat, page, config.name))
+                        
                     elif 'remove' in req.args: # Remove selected platforms
                         self._remove_platforms(req)
                         req.redirect(req.abs_href.admin(cat, page, config.name))
-                    elif 'save' in req.args:
+                        
+                    elif 'save' in req.args: # Save this build config
                         self._update_config(req, config)
+                        
                     req.redirect(req.abs_href.admin(cat, page))
-
+                    
+                # Prepare template variables
                 data['config'] = {
                     'name': config.name, 'label': config.label or config.name,
                     'active': config.active, 'path': config.path,
@@ -160,17 +172,20 @@
                     } for platform in platforms]
                 }
 
-        else:
+        else: # At the top level build config list
             if req.method == 'POST':
                 if 'add' in req.args: # Add build config
                     config = self._create_config(req)
                     req.redirect(req.abs_href.admin(cat, page, config.name))
+
                 elif 'remove' in req.args: # Remove selected build configs
                     self._remove_configs(req)
+
                 elif 'apply' in req.args: # Update active state of configs
                     self._activate_configs(req)
                 req.redirect(req.abs_href.admin(cat, page))
 
+            # Prepare template variables
             configs = []
             for config in BuildConfig.select(self.env, include_inactive=True):
                 configs.append({
Copyright (C) 2012-2017 Edgewall Software