Skip to content

Commit fa654a7

Browse files
GDSNewtjamiestamp
authored andcommitted
Support access-limited-by-default formats
For edition types that are access-limited by default (e.g. StatisticalDataSet, official/national statistics Publications), pre-select organisation access limiting and pre-fill the organisation select with the edition's lead organisations. A shared Edition#prefill_default_access_limiting_organisations is called from the access-limited form's edit action and the main edition form's new and edit actions, so the behaviour is consistent when creating or editing.
1 parent 4eef721 commit fa654a7

4 files changed

Lines changed: 29 additions & 2 deletions

File tree

app/controllers/admin/edition_access_limited_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ class Admin::EditionAccessLimitedController < Admin::BaseController
55
before_action :enforce_permissions!
66
before_action :clean_organisation_params, only: %i[update]
77

8-
def edit; end
8+
def edit
9+
@edition.prefill_default_access_limiting_organisations
10+
end
911

1012
def update
1113
editorial_remark = edition_params.delete(:editorial_remark)

app/controllers/admin/editions_controller.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ def show
8989
end
9090
end
9191

92-
def new; end
92+
def new
93+
@edition.prefill_default_access_limiting_organisations
94+
end
9395

9496
def create
9597
if updater.can_perform? && @edition.save
@@ -110,6 +112,7 @@ def create
110112

111113
def edit
112114
@edition.open_for_editing_as(current_user) if @edition.editable?
115+
@edition.prefill_default_access_limiting_organisations
113116
fetch_version_and_remark_trails
114117
end
115118

app/models/concerns/edition/limited_access.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ def set_access_limited
4343
end
4444
end
4545

46+
def prefill_default_access_limiting_organisations
47+
return unless Flipflop.access_limiting_organisations_ui?
48+
return unless access_limited_by_default? && access_limiting_organisations.empty?
49+
50+
self.access_limiting_organisations = lead_organisations
51+
end
52+
4653
def accessible_to?(user)
4754
user.present? && Whitehall::Authority::Enforcer.new(user, self).can?(:see)
4855
end

test/functional/admin/statistical_data_sets_controller_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,21 @@ class Admin::StatisticalDataSetsControllerTest < ActionController::TestCase
1717
should_allow_scheduled_publication_of :statistical_data_set
1818
should_allow_access_limiting_of :statistical_data_set
1919

20+
view_test "GET :new pre-selects organisation access limiting and pre-fills the creator's organisation for default-access-limited types when access_limiting_organisations_ui flag is on" do
21+
StatisticalDataSet.unstub(:access_limited_by_default?)
22+
feature_flags.switch! :access_limiting_organisations_ui, true
23+
24+
organisation = create(:organisation)
25+
login_as create(:writer, organisation:)
26+
27+
get :new
28+
29+
assert_select "input[name='edition[access_limiting]'][value='organisations'][checked=checked]"
30+
assert_select "select[name='edition[access_limiting_organisation_ids][]']" do
31+
assert_select "option[selected='selected'][value='#{organisation.id}']"
32+
end
33+
end
34+
2035
def controller_attributes_for(edition_type, attributes = {})
2136
super.except(:alternative_format_provider).reverse_merge(
2237
alternative_format_provider_id: create(:alternative_format_provider).id,

0 commit comments

Comments
 (0)