Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1366)

Unified Diff: dashboard/dashboard/pinpoint/models/change/repository.py

Issue 3013683002: [pinpoint] Add a mapping from repository URLs to repository names. (Closed)
Patch Set: /api/gitiles Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dashboard/dashboard/pinpoint/models/change/repository.py
diff --git a/dashboard/dashboard/pinpoint/models/change/repository.py b/dashboard/dashboard/pinpoint/models/change/repository.py
new file mode 100644
index 0000000000000000000000000000000000000000..52785829d509928fda34e3d67d8e863c7b8e3217
--- /dev/null
+++ b/dashboard/dashboard/pinpoint/models/change/repository.py
@@ -0,0 +1,46 @@
+# Copyright 2017 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.
+
+from dashboard.common import namespaced_stored_object
+
+
+_REPOSITORIES_KEY = 'repositories'
+_URLS_TO_NAMES_KEY = 'repository_urls_to_names'
+
+
+def RepositoryUrl(name):
perezju 2017/09/19 11:34:31 nit: Can you add docstrings to these on a follow u
+ repositories = namespaced_stored_object.Get(_REPOSITORIES_KEY)
+ return repositories[name]['repository_url']
+
+
+def Repository(url, add_if_missing=False):
+ if url.endswith('.git'):
+ url = url[:-4]
+
+ urls_to_names = namespaced_stored_object.Get(_URLS_TO_NAMES_KEY)
+ try:
+ return urls_to_names[url]
+ except KeyError:
+ if add_if_missing:
+ return _AddRepository(url)
+ raise
+
+
+def _AddRepository(url):
+ name = url.split('/')[-1]
+
+ # Add to main repositories dict.
+ repositories = namespaced_stored_object.Get(_REPOSITORIES_KEY)
+ if name in repositories:
+ raise AssertionError("Attempted to add a repository that's already in the "
+ 'Datastore: %s: %s' % (name, url))
+ repositories[name] = {'repository_url': url}
+ namespaced_stored_object.Set(_REPOSITORIES_KEY, repositories)
+
+ # Add to URL -> name mapping dict.
+ urls_to_names = namespaced_stored_object.Get(_URLS_TO_NAMES_KEY)
+ urls_to_names[url] = name
+ namespaced_stored_object.Set(_URLS_TO_NAMES_KEY, urls_to_names)
+
+ return name

Powered by Google App Engine
This is Rietveld 408576698