diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2018-03-29 15:08:31 +0200 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2018-04-05 09:18:12 +0200 |
commit | e3acc982a87d8d694690c928cf5ca792218c1782 (patch) | |
tree | a5bb9549d37cf9020f237c9e86572b01f9691bd0 /lib/gitlab | |
parent | e40c0085ef300aca38076af3ea2f227761084038 (diff) | |
download | gitlab-ce-e3acc982a87d8d694690c928cf5ca792218c1782.tar.gz |
Override values from JSON with import data
This overrides values defined in the project JSON with the values
provided in project.import_data.data['override_params'].
These could be passed from the API.
Diffstat (limited to 'lib/gitlab')
-rw-r--r-- | lib/gitlab/import_export/project_tree_restorer.rb | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/lib/gitlab/import_export/project_tree_restorer.rb b/lib/gitlab/import_export/project_tree_restorer.rb index 8f5bb8f9597..fb37e728485 100644 --- a/lib/gitlab/import_export/project_tree_restorer.rb +++ b/lib/gitlab/import_export/project_tree_restorer.rb @@ -77,13 +77,13 @@ module Gitlab end def default_relation_list - Gitlab::ImportExport::Reader.new(shared: @shared).tree.reject do |model| + reader.tree.reject do |model| model.is_a?(Hash) && model[:project_members] end end def restore_project - params = project_params + params = project_params.symbolize_keys if params[:description].present? params[:description_html] = nil @@ -94,7 +94,20 @@ module Gitlab end def project_params - @tree_hash.reject do |key, value| + @project_params ||= json_params.merge(override_params) + end + + def override_params + return {} unless params = @project.import_data&.data&.fetch('override_params') + + @override_params ||= params.select do |key, _value| + Project.column_names.include?(key.to_s) && + !reader.project_tree[:except].include?(key.to_sym) + end + end + + def json_params + @json_params ||= @tree_hash.reject do |key, value| # return params that are not 1 to many or 1 to 1 relations value.respond_to?(:each) && !Project.column_names.include?(key) end @@ -181,6 +194,10 @@ module Gitlab relation_hash.merge(params) end + + def reader + @reader ||= Gitlab::ImportExport::Reader.new(shared: @shared) + end end end end |