From de6c44e983a788262b72355b85d085a675c9fccc Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 7 Apr 2016 18:14:42 +0200 Subject: using new config --- app/services/projects/import_export.rb | 18 +----------------- app/services/projects/import_export/import_export.yml | 6 +++++- .../projects/import_export/import_export_reader.rb | 17 ++++++++++++----- .../projects/import_export/project_tree_saver.rb | 2 +- 4 files changed, 19 insertions(+), 24 deletions(-) (limited to 'app/services') diff --git a/app/services/projects/import_export.rb b/app/services/projects/import_export.rb index e1d7458a13b..c74f1d31490 100644 --- a/app/services/projects/import_export.rb +++ b/app/services/projects/import_export.rb @@ -11,27 +11,11 @@ module Projects end def project_tree - %i(issues labels milestones releases events) + [snippets, members, merge_requests, commit_statuses] + Projects::ImportExport::ImportExportReader.project_tree end private - def snippets - { snippets: { except: :expired_at } } - end - - def merge_requests - { merge_requests: { include: :merge_request_diff } } - end - - def commit_statuses - { commit_statuses: { include: :commit } } - end - - def members - { project_members: { include: [user: { only: [:id, :email, :username] }] } } - end - def storage_path File.join(Settings.shared['path'], 'tmp/project_exports') end diff --git a/app/services/projects/import_export/import_export.yml b/app/services/projects/import_export/import_export.yml index 40fd98b8092..be7680775ba 100644 --- a/app/services/projects/import_export/import_export.yml +++ b/app/services/projects/import_export/import_export.yml @@ -28,4 +28,8 @@ :user: - :id - :email - - :username \ No newline at end of file + - :username + +:attributes_except: + :snippets: + - :expired_at \ No newline at end of file diff --git a/app/services/projects/import_export/import_export_reader.rb b/app/services/projects/import_export/import_export_reader.rb index 77a1abb851b..981f19c0acb 100644 --- a/app/services/projects/import_export/import_export_reader.rb +++ b/app/services/projects/import_export/import_export_reader.rb @@ -26,7 +26,14 @@ module Projects end def build_hash(array) - array.map { |el| el.is_a?(Hash) ? process_include(el) : el } + array.map do |el| + if el.is_a?(Hash) + process_include(el) + else + only_except_hash = check_only_and_except(el) + only_except_hash.empty? ? el : { el => only_except_hash } + end + end end def process_include(hash, included_classes_hash = {}) @@ -44,8 +51,8 @@ module Projects def process_current_class(hash, included_classes_hash, value) value = value.is_a?(Hash) ? process_include(hash, included_classes_hash) : value current_key = hash.keys.first - current_key_only = check_only_and_except(current_key) - included_classes_hash[current_key] ||= current_key_only unless current_key_only.empty? + only_except_hash = check_only_and_except(current_key) + included_classes_hash[current_key] ||= only_except_hash unless only_except_hash.empty? return current_key, value end @@ -56,8 +63,8 @@ module Projects end def add_class(current_key, included_classes_hash, value) - check_only_hash = check_only_and_except(value) - value = { value => check_only_hash } unless check_only_hash.empty? + only_except_hash = check_only_and_except(value) + value = { value => only_except_hash } unless only_except_hash.empty? old_values = included_classes_hash[current_key][:include] included_classes_hash[current_key][:include] = ([old_values] + [value]).compact.flatten end diff --git a/app/services/projects/import_export/project_tree_saver.rb b/app/services/projects/import_export/project_tree_saver.rb index 3ca90d1f79a..44d100acd1d 100644 --- a/app/services/projects/import_export/project_tree_saver.rb +++ b/app/services/projects/import_export/project_tree_saver.rb @@ -32,7 +32,7 @@ module Projects def project_json_tree # TODO confirm children, also add subchildren (i.e comments) # TODO confirm atts for children - @project.to_json(only: ImportExport.project_atts, include: ImportExport.project_tree) + @project.to_json(Projects::ImportExport.project_tree) end end end -- cgit v1.2.1