diff --git a/app/assets/javascripts/results/result_assets.js b/app/assets/javascripts/results/result_assets.js index 73aade08e..8639efd60 100644 --- a/app/assets/javascripts/results/result_assets.js +++ b/app/assets/javascripts/results/result_assets.js @@ -67,7 +67,14 @@ function formAjaxResultAsset($form) { reloadImages($imgs); }) .on("ajax:error", function(e, data) { - $form.renderFormErrors("result", data.errors, true, e); + // This check is here only because of remotipart bug, which returns + // HTML instead of JSON, go figure + var errors = ''; + if (data.errors) + errors = data.errors; + else + errors = data.responseJSON.errors; + $form.renderFormErrors("result", errors, true, e); }); } diff --git a/app/controllers/result_assets_controller.rb b/app/controllers/result_assets_controller.rb index 80adafce1..f9d25b8af 100644 --- a/app/controllers/result_assets_controller.rb +++ b/app/controllers/result_assets_controller.rb @@ -103,6 +103,7 @@ class ResultAssetsController < ApplicationController def update update_params = result_params previous_size = @result.space_taken + previous_asset = @result.asset if update_params.key? :asset_attributes asset = Asset.find_by_id(update_params[:asset_attributes][:id]) @@ -136,6 +137,19 @@ class ResultAssetsController < ApplicationController elsif @result.archived_changed?(from: true, to: false) render_403 else + if previous_asset.locked? + @result.errors.add(:asset_attributes, + I18n.t('result_assets.edit.locked_file_error')) + respond_to do |format| + format.json do + render json: { + status: 'error', + errors: @result.errors + }, status: :bad_request + return + end + end + end # Asset (file) and/or name has been changed saved = @result.save diff --git a/config/locales/en.yml b/config/locales/en.yml index da60b9203..2e8c8725f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -837,6 +837,7 @@ en: title: "Edit result from task %{module}" uploaded_asset: "Uploaded file" update: "Update file result" + locked_file_error: 'This file is being edited by someone else.' create: success_flash: "Successfully added file result to task %{module}" update: