aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/admin_public_body_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/admin_public_body_controller.rb')
-rw-r--r--app/controllers/admin_public_body_controller.rb34
1 files changed, 25 insertions, 9 deletions
diff --git a/app/controllers/admin_public_body_controller.rb b/app/controllers/admin_public_body_controller.rb
index 021122734..239aca6ec 100644
--- a/app/controllers/admin_public_body_controller.rb
+++ b/app/controllers/admin_public_body_controller.rb
@@ -90,14 +90,30 @@ class AdminPublicBodyController < AdminController
end
def create
- @locale = self.locale_from_params()
- PublicBody.with_locale(@locale) do
- params[:public_body][:last_edit_editor] = admin_http_auth_user()
- @public_body = PublicBody.new(params[:public_body])
- if @public_body.save
- flash[:notice] = 'PublicBody was successfully created.'
- redirect_to admin_url('body/show/' + @public_body.id.to_s)
- else
+ # Start creating the public body in the default locale
+ PublicBody.with_locale(I18n.default_locale) do
+ begin
+ ActiveRecord::Base.transaction do
+ params[:public_body][:last_edit_editor] = admin_http_auth_user()
+ @public_body = PublicBody.new(params[:public_body])
+ @public_body.save!
+
+ # Next, save the translations in the additional locales
+ I18n.available_locales.each do |locale|
+ PublicBody.with_locale(locale) do
+ unless (attr_values = params["public_body_#{locale}"]).nil?
+ # 'publication_scheme' can't be null in the current DB schema
+ attr_values[:publication_scheme] = attr_values[:publication_scheme] || ''
+ @public_body.attributes = attr_values
+ @public_body.save!
+ end
+ end
+ end
+
+ flash[:notice] = 'PublicBody was successfully created.'
+ redirect_to admin_url('body/show/' + @public_body.id.to_s)
+ end
+ rescue ActiveRecord::RecordInvalid
render :action => 'new'
end
end
@@ -157,7 +173,7 @@ class AdminPublicBodyController < AdminController
# Try with dry run first
csv_contents = params[:csv_file].read
- en = PublicBody.import_csv(csv_contents, params[:tag], true, admin_http_auth_user(), I18n.available_locales)
+ en = PublicBody.import_csv(csv_contents, params[:tag], true, admin_http_auth_user(), available_locales)
errors = en[0]
notes = en[1]