Index: gm/rebaseline_server/server.py |
diff --git a/gm/rebaseline_server/server.py b/gm/rebaseline_server/server.py |
index cd0b6eb79f884b75c1f1e70cb34f18306c2361f1..8277c46de7aae892e18528fc224e017915a5a2fe 100755 |
--- a/gm/rebaseline_server/server.py |
+++ b/gm/rebaseline_server/server.py |
@@ -349,7 +349,13 @@ class Server(object): |
@property |
def is_editable(self): |
- """ True iff HTTP clients are allowed to submit new GM baselines. """ |
+ """ True iff HTTP clients are allowed to submit new GM baselines. |
+ |
+ TODO(epoger): This only pertains to GM baselines; SKP baselines are |
+ editable whenever expectations vs actuals are shown. |
+ Once we move the GM baselines to use the same code as the SKP baselines, |
+ we can delete this property. |
+ """ |
return self._editable |
@property |
@@ -597,6 +603,21 @@ class HTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): |
param_dict.get(LIVE_PARAM__SET_A_SECTION, [None])[0]) |
setB_section = self._validate_summary_section( |
param_dict.get(LIVE_PARAM__SET_B_SECTION, [None])[0]) |
+ |
+ # If the sets show expectations vs actuals, always show expectations on |
+ # the left (setA). |
+ if ((setA_section == gm_json.JSONKEY_ACTUALRESULTS) and |
+ (setB_section == gm_json.JSONKEY_EXPECTEDRESULTS)): |
+ setA_dirs, setB_dirs = setB_dirs, setA_dirs |
+ setA_section, setB_section = setB_section, setA_section |
+ |
+ # Are we comparing some actuals against expectations stored in the repo? |
+ # If so, we can allow the user to submit new baselines. |
+ is_editable = ( |
+ (setA_section == gm_json.JSONKEY_EXPECTEDRESULTS) and |
+ (setA_dirs[0].startswith(compare_rendered_pictures.REPO_URL_PREFIX)) and |
+ (setB_section == gm_json.JSONKEY_ACTUALRESULTS)) |
+ |
results_obj = compare_rendered_pictures.RenderedPicturesComparisons( |
setA_dirs=setA_dirs, setB_dirs=setB_dirs, |
setA_section=setA_section, setB_section=setB_section, |
@@ -608,7 +629,8 @@ class HTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): |
self.send_response(200) |
else: |
self.send_json_dict(results_obj.get_packaged_results_of_type( |
- results_type=results_mod.KEY__HEADER__RESULTS_ALL)) |
+ results_type=results_mod.KEY__HEADER__RESULTS_ALL, |
+ is_editable=is_editable)) |
def do_GET_live_results(self, url_remainder): |
""" Handle a GET request for live-generated image diff data. |
@@ -822,7 +844,9 @@ def main(): |
'differences between these config pairs: ' |
+ str(CONFIG_PAIRS_TO_COMPARE))) |
parser.add_argument('--editable', action='store_true', |
- help=('Allow HTTP clients to submit new GM baselines.')) |
+ help=('Allow HTTP clients to submit new GM baselines; ' |
+ 'SKP baselines can be edited regardless of this ' |
+ 'setting.')) |
parser.add_argument('--export', action='store_true', |
help=('Instead of only allowing access from HTTP clients ' |
'on localhost, allow HTTP clients on other hosts ' |