diff --git a/src/olympia/lib/settings_base.py b/src/olympia/lib/settings_base.py index 16767d0942a1..6930fa32214e 100644 --- a/src/olympia/lib/settings_base.py +++ b/src/olympia/lib/settings_base.py @@ -1557,3 +1557,5 @@ def read_only_mode(env): SWAGGER_SCHEMA_FILE = path('schema.yml') SWAGGER_UI_ENABLED = env('SWAGGER_UI_ENABLED', default=False) or TARGET != 'production' + +SOURCE_BUILDER_VIEWER_URL = env('SOURCE_BUILDER_VIEWER_URL', default=None) diff --git a/src/olympia/reviewers/templates/reviewers/includes/version.html b/src/olympia/reviewers/templates/reviewers/includes/version.html index c1901f2ceb8b..5453182c0497 100644 --- a/src/olympia/reviewers/templates/reviewers/includes/version.html +++ b/src/olympia/reviewers/templates/reviewers/includes/version.html @@ -57,6 +57,12 @@
Average Daily Users:
{% else %} The developer has provided source code. {% endif %} + {% if waffle.switch('enable-source-builder') %} +  |  + Source Builder + {% endif %} {% endif %} diff --git a/src/olympia/reviewers/tests/test_views.py b/src/olympia/reviewers/tests/test_views.py index 1d3a45f074ad..09f67762ac97 100644 --- a/src/olympia/reviewers/tests/test_views.py +++ b/src/olympia/reviewers/tests/test_views.py @@ -4195,7 +4195,7 @@ def test_assay_link(self): == f'vscode://mozilla.assay/review/{self.addon.guid}/{self.addon.current_version.version}' ) - def test_download_sources_link(self): + def _setup_source(self): version = self.addon.current_version tdir = temp.gettempdir() source_file = temp.NamedTemporaryFile(suffix='.zip', dir=tdir, mode='r+') @@ -4204,6 +4204,8 @@ def test_download_sources_link(self): version.source.save(os.path.basename(source_file.name), DjangoFile(source_file)) version.save() + def test_download_sources_link(self): + self._setup_source() url = reverse('reviewers.review', args=[self.addon.pk]) # Admin user: able to download sources. @@ -4227,6 +4229,33 @@ def test_download_sources_link(self): assert response.status_code == 200 assert b'Download files' in response.content + @override_settings(SOURCE_BUILDER_VIEWER_URL='https://source.builder/') + @override_switch('enable-source-builder', active=True) + def test_source_builder_link(self): + self._setup_source() + url = reverse('reviewers.review', args=[self.addon.pk]) + + response = self.client.get(url) + assert response.status_code == 200 + doc = pq(response.content) + builder_link = doc('#versions-history td.files .source-builder') + assert builder_link[0].text == 'Source Builder' + assert ( + builder_link.attr['href'] + == f'https://source.builder/?addon_id={self.addon.id}&version_id={self.addon.current_version.id}' + ) + + @override_settings(SOURCE_BUILDER_VIEWER_URL='https://source.builder/') + @override_switch('enable-source-builder', active=False) + def test_no_source_link_if_waffle_off(self): + self._setup_source() + url = reverse('reviewers.review', args=[self.addon.pk]) + + response = self.client.get(url) + assert response.status_code == 200 + doc = pq(response.content) + assert not doc('#versions-history td.files .source-builder') + def test_translations(self): self.addon.name = { 'de': None,