diff --git a/db/schema.rb b/db/schema.rb index 63c44ab9..6fe265d6 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180301162116) do +ActiveRecord::Schema.define(version: 20180314112813) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/decidim-census/app/controllers/decidim/census/admin/censuses_controller.rb b/decidim-census/app/controllers/decidim/census/admin/censuses_controller.rb index b8485c64..e9386cf8 100644 --- a/decidim-census/app/controllers/decidim/census/admin/censuses_controller.rb +++ b/decidim-census/app/controllers/decidim/census/admin/censuses_controller.rb @@ -9,10 +9,10 @@ class CensusesController < Decidim::Admin::ApplicationController before_action :show_instructions, unless: :census_authorization_active_in_organization? + before_action :set_status, on: %i(show create) def show authorize! :show, CensusDatum - @status = Status.new(current_organization) end def create @@ -21,10 +21,11 @@ def create data = CsvData.new(params[:file].path) CensusDatum.insert_all(current_organization, data.values) RemoveDuplicatesJob.perform_later(current_organization) + @invalid_rows = data.errors flash[:notice] = t('.success', count: data.values.count, errors: data.errors.count) end - redirect_to censuses_path + render :show end def destroy @@ -39,6 +40,10 @@ def show_instructions render :instructions end + def set_status + @status = Status.new(current_organization) + end + def census_authorization_active_in_organization? (current_organization.available_authorizations & CENSUS_AUTHORIZATIONS).any? end diff --git a/decidim-census/app/models/decidim/census/csv_data.rb b/decidim-census/app/models/decidim/census/csv_data.rb index 31fff236..c703876a 100644 --- a/decidim-census/app/models/decidim/census/csv_data.rb +++ b/decidim-census/app/models/decidim/census/csv_data.rb @@ -24,7 +24,7 @@ def process_row(row) if id_document.present? && !date.nil? values << [id_document, date] else - errors << row + errors << { line: $., data: row } end end diff --git a/decidim-census/app/views/decidim/census/admin/censuses/_invalid_rows.html.erb b/decidim-census/app/views/decidim/census/admin/censuses/_invalid_rows.html.erb new file mode 100644 index 00000000..69a4825f --- /dev/null +++ b/decidim-census/app/views/decidim/census/admin/censuses/_invalid_rows.html.erb @@ -0,0 +1,35 @@ +
| + <%= t('admin.new.errors.data.line', scope: 'decidim.census') %> + | ++ <%= t('admin.new.errors.data.data', scope: 'decidim.census') %> + | +
|---|---|
| + <%= row[:line] %> + | ++ <%= row[:data].fields.join(';') %> + | +
<%= t('decidim.census.admin.show.data', count: @status.count, +
<%= t('decidim.census.admin.show.data', count: @status.count, due_date: l(@status.last_import_at, format: :long)) %>
- <%= link_to t('decidim.census.admin.destroy.title'), - censuses_path, + <%= link_to t('decidim.census.admin.destroy.title'), + censuses_path, method: :delete, class: 'button alert', data: { confirm: t('decidim.census.admin.destroy.confirm') } %> @@ -21,7 +22,6 @@