Skip to content
Snippets Groups Projects

Include and process visibility_level

Merged Carla Drago requested to merge 405168-fix-group-visibility-level into master
1 unresolved thread
1 file
+ 5
1
Compare changes
  • Side-by-side
  • Inline
@@ -65,6 +65,15 @@ def process_root(group_id)
# with existing groups name and/or path.
group_attributes.delete_attributes('name', 'path')
if @top_level_group.has_parent?
group_attributes.attributes['visibility_level'] = sub_group_visibility_level(
group_attributes.attributes['visibility_level'],
@top_level_group.parent
)
elsif Gitlab::VisibilityLevel.restricted_level?(group_attributes.attributes['visibility_level'])
group_attributes.delete_attribute('visibility_level')
end
+1
restore_group(@top_level_group, group_attributes)
end
@@ -86,6 +95,7 @@ def create_group(group_attributes)
parent_id = group_attributes.delete_attribute('parent_id')
name = group_attributes.delete_attribute('name')
path = group_attributes.delete_attribute('path')
visibility_level = group_attributes.delete_attribute('visibility_level')
parent_group = @groups_mapping.fetch(parent_id) { raise(ArgumentError, 'Parent group not found') }
@@ -94,7 +104,7 @@ def create_group(group_attributes)
name: name,
path: path,
parent_id: parent_group.id,
visibility_level: sub_group_visibility_level(group_attributes.attributes, parent_group)
visibility_level: sub_group_visibility_level(visibility_level, parent_group)
).execute
group.validate!
@@ -103,7+113,7 @@
end
def restore_group(group, group_attributes)
+13
@groups_mapping[group_attributes.id] = group
Group::GroupRestorer.new(
user: user,
@@ -124,7+134,7 @@
end
end
def sub_group_visibility_level(group_hash, parent_group)
original_visibility_level = group_hash['visibility_level'] || Gitlab::VisibilityLevel::PRIVATE
def sub_group_visibility_level(visibility_level, parent_group)
parent_visibility_level = parent_group.visibility_level
if parent_group && parent_group.visibility_level < original_visibility_level
Gitlab::VisibilityLevel.closest_allowed_level(parent_group.visibility_level)
original_visibility_level = visibility_level ||
closest_allowed_level(parent_visibility_level)
if parent_visibility_level < original_visibility_level
closest_allowed_level(parent_visibility_level)
else
original_visibility_level
closest_allowed_level(original_visibility_level)
end
end
def closest_allowed_level(visibility_level)
Gitlab::VisibilityLevel.closest_allowed_level(visibility_level)
end
def reader
strong_memoize(:reader) do
Gitlab::ImportExport::Reader.new(
Loading