From ca074c655dd565926782a7f25fccb7fa7176f844 Mon Sep 17 00:00:00 2001 From: Eduardo Bonet Date: Wed, 24 May 2023 10:42:01 +0200 Subject: [PATCH 1/2] Adds frontend toggle for Model experiments Allows users to set visibility for Model experiments from the project visibility settings Changelog: added --- .../permissions/components/settings_panel.vue | 26 +++++++++++++++++++ .../projects/shared/permissions/constants.js | 5 ++++ app/controllers/projects_controller.rb | 1 + app/helpers/projects_helper.rb | 3 ++- locale/gitlab.pot | 6 +++++ spec/controllers/projects_controller_spec.rb | 1 + .../components/settings_panel_spec.js | 9 +++++++ spec/helpers/projects_helper_spec.rb | 3 ++- 8 files changed, 52 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue index 9bde88da2b8e18..398a3a61f21385 100644 --- a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue +++ b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue @@ -15,6 +15,7 @@ import { featureAccessLevel, CVE_ID_REQUEST_BUTTON_I18N, featureAccessLevelDescriptions, + modelExperimentsHelpPath, } from '../constants'; import { toggleHiddenClassBySelector } from '../external'; import ProjectFeatureSetting from './project_feature_setting.vue'; @@ -56,6 +57,10 @@ export default { packageRegistryForEveryoneLabel: s__( 'ProjectSettings|Allow anyone to pull from Package Registry', ), + modelExperimentsLabel: s__('ProjectSettings|Model experiments'), + modelExperimentsHelpText: s__( + 'ProjectSettings|Track machine learning model experiments and artefacts.', + ), pagesLabel: s__('ProjectSettings|Pages'), ciCdLabel: __('CI/CD'), repositoryLabel: s__('ProjectSettings|Repository'), @@ -76,6 +81,7 @@ export default { VISIBILITY_LEVEL_PRIVATE_INTEGER, VISIBILITY_LEVEL_INTERNAL_INTEGER, VISIBILITY_LEVEL_PUBLIC_INTEGER, + modelExperimentsHelpPath, components: { ProjectFeatureSetting, @@ -245,6 +251,7 @@ export default { forkingAccessLevel: featureAccessLevel.EVERYONE, mergeRequestsAccessLevel: featureAccessLevel.EVERYONE, packageRegistryAccessLevel: featureAccessLevel.EVERYONE, + modelExperimentsAccessLevel: featureAccessLevel.EVERYONE, buildsAccessLevel: featureAccessLevel.EVERYONE, wikiAccessLevel: featureAccessLevel.EVERYONE, snippetsAccessLevel: featureAccessLevel.EVERYONE, @@ -387,6 +394,10 @@ export default { ) { this.packageRegistryAccessLevel = featureAccessLevel.PROJECT_MEMBERS; } + this.modelExperimentsAccessLevel = Math.min( + featureAccessLevel.PROJECT_MEMBERS, + this.wikiAccessLevel, + ); this.wikiAccessLevel = Math.min(featureAccessLevel.PROJECT_MEMBERS, this.wikiAccessLevel); this.snippetsAccessLevel = Math.min( featureAccessLevel.PROJECT_MEMBERS, @@ -449,6 +460,8 @@ export default { this.buildsAccessLevel = featureAccessLevel.EVERYONE; if (this.wikiAccessLevel > featureAccessLevel.NOT_ENABLED) this.wikiAccessLevel = featureAccessLevel.EVERYONE; + if (this.modelExperimentsAccessLevel > featureAccessLevel.NOT_ENABLED) + this.modelExperimentsAccessLevel = featureAccessLevel.EVERYONE; if (this.snippetsAccessLevel > featureAccessLevel.NOT_ENABLED) this.snippetsAccessLevel = featureAccessLevel.EVERYONE; if (this.pagesAccessLevel === featureAccessLevel.PROJECT_MEMBERS) @@ -874,6 +887,19 @@ export default { name="project[project_feature_attributes][package_registry_access_level]" /> + + + { wrapper.findComponent({ ref: 'infrastructure-settings' }); const findReleasesSettings = () => wrapper.findComponent({ ref: 'environments-settings' }); const findMonitorSettings = () => wrapper.findComponent({ ref: 'monitor-settings' }); + const findModelExperimentsSettings = () => + wrapper.findComponent({ ref: 'model-experiments-settings' }); describe('Project Visibility', () => { it('should set the project visibility help path', () => { @@ -725,4 +727,11 @@ describe('Settings Panel', () => { ); }); }); + describe('Model experiments', () => { + it('shows model experiments toggle', () => { + wrapper = mountComponent({}); + + expect(findModelExperimentsSettings().exists()).toBe(true); + }); + }); }); diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index 9c4cfa3038fcea..75fb4b1d1e64c5 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -1044,7 +1044,8 @@ def license_name environmentsAccessLevel: project.project_feature.environments_access_level, featureFlagsAccessLevel: project.project_feature.feature_flags_access_level, releasesAccessLevel: project.project_feature.releases_access_level, - infrastructureAccessLevel: project.project_feature.infrastructure_access_level + infrastructureAccessLevel: project.project_feature.infrastructure_access_level, + modelExperimentsAccessLevel: project.project_feature.model_experiments_access_level ) end -- GitLab From f64ecb9eb7737a64854b39fdd7cf3033e51a84e9 Mon Sep 17 00:00:00 2001 From: Eduardo Bonet Date: Fri, 2 Jun 2023 16:08:16 +0200 Subject: [PATCH 2/2] Fixes small issues --- .../projects/shared/permissions/components/settings_panel.vue | 4 ++-- locale/gitlab.pot | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue index 398a3a61f21385..84a5d980d3962f 100644 --- a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue +++ b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue @@ -59,7 +59,7 @@ export default { ), modelExperimentsLabel: s__('ProjectSettings|Model experiments'), modelExperimentsHelpText: s__( - 'ProjectSettings|Track machine learning model experiments and artefacts.', + 'ProjectSettings|Track machine learning model experiments and artifacts.', ), pagesLabel: s__('ProjectSettings|Pages'), ciCdLabel: __('CI/CD'), @@ -396,7 +396,7 @@ export default { } this.modelExperimentsAccessLevel = Math.min( featureAccessLevel.PROJECT_MEMBERS, - this.wikiAccessLevel, + this.modelExperimentsAccessLevel, ); this.wikiAccessLevel = Math.min(featureAccessLevel.PROJECT_MEMBERS, this.wikiAccessLevel); this.snippetsAccessLevel = Math.min( diff --git a/locale/gitlab.pot b/locale/gitlab.pot index a79d52b38f704b..e27f701d5827d9 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -36016,7 +36016,7 @@ msgstr "" msgid "ProjectSettings|Topics are publicly visible even on private projects. Do not include sensitive information in topic names. %{linkStart}Learn more%{linkEnd}." msgstr "" -msgid "ProjectSettings|Track machine learning model experiments and artefacts." +msgid "ProjectSettings|Track machine learning model experiments and artifacts." msgstr "" msgid "ProjectSettings|Transfer project" -- GitLab