| # Copyright 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Provides the web interface for adding and removing bug labels.""" |
| |
| import json |
| |
| from dashboard import request_handler |
| from dashboard import xsrf |
| from dashboard.models import bug_label_patterns |
| |
| |
| class EditBugLabelsHandler(request_handler.RequestHandler): |
| """Handles editing the info about perf sheriff rotations.""" |
| |
| def get(self): |
| """Renders the UI with all of the forms.""" |
| patterns_dict = bug_label_patterns.GetBugLabelPatterns() |
| self.RenderHtml('edit_bug_labels.html', { |
| 'bug_labels': sorted(patterns_dict), |
| 'bug_labels_json': json.dumps(patterns_dict, indent=2, sort_keys=True) |
| }) |
| |
| @xsrf.TokenRequired |
| def post(self): |
| """Updates the sheriff configurations. |
| |
| Each form on the edit sheriffs page has a hidden field called action, which |
| tells us which form was submitted. The other particular parameters that are |
| expected depend on which form was submitted. |
| """ |
| action = self.request.get('action') |
| if action == 'add_buglabel_pattern': |
| self._AddBuglabelPattern() |
| if action == 'remove_buglabel_pattern': |
| self._RemoveBuglabelPattern() |
| |
| def _AddBuglabelPattern(self): |
| """Adds a bug label to be added to a group of tests. |
| |
| Request parameters: |
| buglabel_to_add: The bug label, which is a BugLabelPattern entity name. |
| pattern: A test path pattern. |
| """ |
| label = self.request.get('buglabel_to_add') |
| pattern = self.request.get('pattern') |
| bug_label_patterns.AddBugLabelPattern(label, pattern) |
| self.RenderHtml('result.html', { |
| 'headline': 'Added label %s' % label, |
| 'results': [{'name': 'Pattern', 'value': pattern}] |
| }) |
| |
| def _RemoveBuglabelPattern(self): |
| """Removes a BugLabelPattern so that the label no longer applies. |
| |
| Request parameters: |
| buglabel_to_remove: The bug label, which is the name of a |
| BugLabelPattern entity. |
| """ |
| label = self.request.get('buglabel_to_remove') |
| bug_label_patterns.RemoveBugLabel(label) |
| self.RenderHtml('result.html', { |
| 'headline': 'Deleted label %s' % label |
| }) |