Mercurial > bitten > bitten-test
changeset 192:da2a2e9a8f71
Fix target platform management under mod_python. Closes #44.
Also, refactor the code in question to get rid of some duplication.
author | cmlenz |
---|---|
date | Sun, 11 Sep 2005 12:07:48 +0000 |
parents | cf642b0d991b |
children | 5238e94c9fd1 |
files | bitten/trac_ext/templates/bitten_config.cs bitten/trac_ext/web_ui.py |
diffstat | 2 files changed, 22 insertions(+), 43 deletions(-) [+] |
line wrap: on
line diff
--- a/bitten/trac_ext/templates/bitten_config.cs +++ b/bitten/trac_ext/templates/bitten_config.cs @@ -167,9 +167,9 @@ var:rule.property ?>" /></td> <td><input type="text" name="pattern_<?cs var:name(rule) ?>" value="<?cs var:rule.pattern ?>" /></td> - <td><input type="submit" name="rm_rule_<?cs - var:name(rule) ?>" value="-" /><input type="submit" name="add_rule_<?cs - var:name(rule) ?>" value="+" /> + <td><input type="submit" name="add_rule_<?cs + var:name(rule) ?>" value="+" /><input type="submit" name="rm_rule_<?cs + var:name(rule) ?>" value="-" /> </td> </tr><?cs /each ?> </tbody></table>
--- a/bitten/trac_ext/web_ui.py +++ b/bitten/trac_ext/web_ui.py @@ -202,35 +202,10 @@ if 'cancel' in req.args: req.redirect(self.env.href.build(config_name, action='edit')) - platform = TargetPlatform(self.env, config=config_name, - name=req.args.get('name')) - - properties = [int(key[9:]) for key in req.args - if key.startswith('property_')] - properties.sort() - patterns = [int(key[8:]) for key in req.args - if key.startswith('pattern_')] - patterns.sort() - platform.rules = [(req.args.get('property_%d' % property), - req.args.get('pattern_%d' % pattern)) - for property, pattern in zip(properties, patterns)] - - add_rules = [int(key[9:]) for key in req.args - if key.startswith('add_rule_')] - if add_rules: - platform.rules.insert(add_rules[0] + 1, ('', '')) - self._render_platform_form(req, platform) - return - rm_rules = [int(key[8:]) for key in req.args - if key.startswith('rm_rule_')] - if rm_rules: - del platform.rules[rm_rules[0]] - self._render_platform_form(req, platform) - return - - platform.insert() - - req.redirect(self.env.href.build(config_name, action='edit')) + platform = TargetPlatform(self.env, config=config_name) + if self._process_platform(req, platform): + platform.insert() + req.redirect(self.env.href.build(config_name, action='edit')) def _do_delete_platforms(self, req): """Delete selected target platforms.""" @@ -253,34 +228,38 @@ req.redirect(self.env.href.build(config_name, action='edit')) platform = TargetPlatform.fetch(self.env, platform_id) + if self._process_platform(req, platform): + platform.update() + req.redirect(self.env.href.build(config_name, action='edit')) + + def _process_platform(self, req, platform): platform.name = req.args.get('name') - properties = [int(key[9:]) for key in req.args + properties = [int(key[9:]) for key in req.args.keys() if key.startswith('property_')] properties.sort() - patterns = [int(key[8:]) for key in req.args + patterns = [int(key[8:]) for key in req.args.keys() if key.startswith('pattern_')] patterns.sort() platform.rules = [(req.args.get('property_%d' % property), req.args.get('pattern_%d' % pattern)) - for property, pattern in zip(properties, patterns)] + for property, pattern in zip(properties, patterns) + if req.args.get('property_%d' % property)] - add_rules = [int(key[9:]) for key in req.args + add_rules = [int(key[9:]) for key in req.args.keys() if key.startswith('add_rule_')] if add_rules: platform.rules.insert(add_rules[0] + 1, ('', '')) self._render_platform_form(req, platform) - return - rm_rules = [int(key[8:]) for key in req.args - if key.startswith('rm_rule_')] + return False + rm_rules = [int(key[8:]) for key in req.args.keys() + if key.startswith('rm_rule_')] if rm_rules: del platform.rules[rm_rules[0]] self._render_platform_form(req, platform) - return + return False - platform.update() - - req.redirect(self.env.href.build(config_name, action='edit')) + return True def _render_overview(self, req): req.hdf['title'] = 'Build Status'