Class: Decidim::Verifications::CsvCensus::Admin::CensusDataForm

Inherits:
Form
  • Object
show all
Includes:
HasUploadValidations, ProcessesFileLocally
Defined in:
app/forms/decidim/verifications/csv_census/admin/census_data_form.rb

Overview

A form to temporarily upload csv census data

Instance Method Summary collapse

Instance Method Details

#dataObject



17
18
19
# File 'app/forms/decidim/verifications/csv_census/admin/census_data_form.rb', line 17

def data
  @data ||= process_data
end

#process_dataObject



21
22
23
24
25
26
27
# File 'app/forms/decidim/verifications/csv_census/admin/census_data_form.rb', line 21

def process_data
  process_file_locally(file) do |file_path|
    CsvCensus::Data.new(file_path)
  end
rescue CSV::MalformedCSVError
  errors.add(:file, :malformed)
end

#validate_csvObject



29
30
31
32
33
34
35
36
37
38
39
# File 'app/forms/decidim/verifications/csv_census/admin/census_data_form.rb', line 29

def validate_csv
  return unless data

  errors.add(:base, I18n.t("decidim.verifications.errors.wrong_number_columns", expected: 1, actual: data.count)) if data.count != 1

  errors.add(:base, I18n.t("decidim.verifications.errors.no_emails")) if data.values.empty?

  data.values.each do |value|
    errors.add(:base, I18n.t("decidim.verifications.errors.invalid_emails", invalid_emails: value)) unless valid_email?(value)
  end
end