Merge pull request #936 from okriuchykhin/ok_SCI_1939

Fix repository records import [SCI-1939]
This commit is contained in:
okriuchykhin 2018-01-17 12:55:11 +01:00 committed by GitHub
commit 38aaaa011c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 19 deletions

View file

@ -181,15 +181,15 @@ class RepositoriesController < ApplicationController
end
def parse_sheet
repository = current_team.repositories.find_by_id(params[:id])
repository = current_team.repositories.find_by_id(import_params[:id])
unless params[:file]
unless import_params[:file]
repository_response(t('teams.parse_sheet.errors.no_file_selected'))
return
end
begin
parsed_file = ImportRepository::ParseRepository.new(
file: params[:file],
file: import_params[:file],
repository: repository,
session: session
)
@ -229,7 +229,7 @@ class RepositoriesController < ApplicationController
respond_to do |format|
format.json do
# Check if there exist mapping for repository record (it's mandatory)
if params[:mappings].value?('-1')
if import_params[:mappings].value?('-1')
import_records = repostiory_import_actions
status = import_records.import!
@ -272,9 +272,9 @@ class RepositoriesController < ApplicationController
def repostiory_import_actions
ImportRepository::ImportRecords.new(
temp_file: TempFile.find_by_id(params[:file_id]),
repository: current_team.repositories.find_by_id(params[:id]),
mappings: params[:mappings],
temp_file: TempFile.find_by_id(import_params[:file_id]),
repository: current_team.repositories.find_by_id(import_params[:id]),
mappings: import_params[:mappings],
session: session,
user: current_user
)
@ -317,6 +317,10 @@ class RepositoriesController < ApplicationController
params.require(:repository).permit(:name)
end
def import_params
params.permit(:id, :file, :file_id, mappings: {}).to_h
end
def repository_response(message)
respond_to do |format|
format.html do

View file

@ -161,12 +161,7 @@ class Repository < ApplicationRecord
repository_column: columns[index]
}
)
cell = RepositoryCell.new(repository_row: record_row,
repository_column: columns[index],
value: cell_value)
cell.skip_on_import = true
cell_value.repository_cell = cell
unless cell.valid? && cell_value.valid?
unless cell_value.valid?
errors = true
raise ActiveRecord::Rollback
end

View file

@ -1,6 +1,4 @@
class RepositoryCell < ActiveRecord::Base
attr_accessor :skip_on_import
belongs_to :repository_row
belongs_to :repository_column
belongs_to :value, polymorphic: true, dependent: :destroy
@ -8,8 +6,7 @@ class RepositoryCell < ActiveRecord::Base
validates :repository_column, presence: true
validate :repository_column_data_type
validates :repository_row,
uniqueness: { scope: :repository_column },
unless: :skip_on_import
uniqueness: { scope: :repository_column }
private

View file

@ -16,7 +16,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" onClick="pageReload()"><%= t('general.cancel')%></button>
<input type="submit" class="btn btn-primary" value="<%= t("repositories.modal_import.upload") %>"</input>
<input type="submit" class="btn btn-primary" value="<%= t("repositories.modal_import.upload") %>">
</div>
<% end %>
</div>

View file

@ -65,7 +65,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" onClick="pageReload()"><%= t('general.cancel')%></button>
<input type="submit" class="btn btn-primary" value="<%= t('repositories.modal_parse.title') %>"</input>
<input type="submit" class="btn btn-primary" value="<%= t('repositories.modal_parse.title') %>">
</div>
<% end %>
</div>