aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/api/v1/imports_controller.rb7
-rw-r--r--app/controllers/imports_controller.rb7
-rw-r--r--app/models/import.rb6
-rw-r--r--app/views/imports/_form.html.slim2
-rw-r--r--config/locales/imports.en.yml4
-rw-r--r--config/locales/imports.fr.yml4
6 files changed, 28 insertions, 2 deletions
diff --git a/app/controllers/api/v1/imports_controller.rb b/app/controllers/api/v1/imports_controller.rb
index 6050418d8..197e23337 100644
--- a/app/controllers/api/v1/imports_controller.rb
+++ b/app/controllers/api/v1/imports_controller.rb
@@ -5,7 +5,12 @@ class Api::V1::ImportsController < Api::V1::IbooController
def create
args = workbench_import_params.merge(creator: 'Webservice')
@import = parent.workbench_imports.create(args)
- create!
+ if @import.valid?
+ create!
+ else
+ binding.pry
+ render json: { status: "error", messages: @import.errors.full_messages }
+ end
end
private
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index 3c52dc935..66dccc243 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -38,6 +38,13 @@ class ImportsController < BreadcrumbController
end
end
+ def create
+ create! do |success, failure|
+ success.html { redirect_to workbench_imports_path }
+ failure.html { flash.now[:error] = @import.errors[:wrong_file_extension][0] if @import.file.file; render :new }
+ end
+ end
+
def download
if params[:token] == resource.token_download
send_file resource.file.path
diff --git a/app/models/import.rb b/app/models/import.rb
index 64f713914..72d9f2ce6 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -19,6 +19,12 @@ class Import < ActiveRecord::Base
validates :file, presence: true
validates_presence_of :workbench, :creator
+ validate def file_extension_must_be_zip
+ if self.file.file
+ errors.add(:wrong_file_extension, I18n.t('activerecord.errors.models.imports.wrong_file_extension')) unless self.file.file.extension == "zip"
+ end
+ end
+
before_create :initialize_fields
def self.model_name
diff --git a/app/views/imports/_form.html.slim b/app/views/imports/_form.html.slim
index 0fbf578be..95d97c534 100644
--- a/app/views/imports/_form.html.slim
+++ b/app/views/imports/_form.html.slim
@@ -9,6 +9,6 @@
.form-group
= form.label :file, t('activerecord.attributes.import.resources'), class: 'control-label col-sm-4 col-xs-5'
.col-sm-8.col-xs-7
- = form.input_field :file, label: false, class: 'form-control'
+ = form.input :file, label: false, class: 'form-control'
= form.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'wb_import_form'
diff --git a/config/locales/imports.en.yml b/config/locales/imports.en.yml
index 9bf877c86..f3bcad9e9 100644
--- a/config/locales/imports.en.yml
+++ b/config/locales/imports.en.yml
@@ -53,6 +53,10 @@ en:
zero: "import"
one: "NeTEx import"
other: "imports"
+ errors:
+ models:
+ imports:
+ wrong_file_extension: "The imported file must be a zip file"
attributes:
import:
resources: "File to import"
diff --git a/config/locales/imports.fr.yml b/config/locales/imports.fr.yml
index 6998c89d2..6e74fa33c 100644
--- a/config/locales/imports.fr.yml
+++ b/config/locales/imports.fr.yml
@@ -53,6 +53,10 @@ fr:
zero: "import"
one: "import NeTEx"
other: "imports"
+ errors:
+ models:
+ imports:
+ wrong_file_extension: "Le fichier importé doit être au format zip"
attributes:
import:
resources: "Fichier à importer"