diff options
| author | Luc Donnet | 2018-03-14 22:06:23 +0100 | 
|---|---|---|
| committer | Luc Donnet | 2018-03-14 22:06:42 +0100 | 
| commit | 2af2a2c10355c9613965d7fbf3400d8294cbd44c (patch) | |
| tree | 617ae002e301f9add6fff684c4edcfba66ca67d2 | |
| parent | 4c84e00c87d7aaa4263c8b18f3ab7481a47951f1 (diff) | |
| download | chouette-core-2af2a2c10355c9613965d7fbf3400d8294cbd44c.tar.bz2 | |
Fix access for import ressources Refs #6133 @3
| -rw-r--r-- | app/controllers/import_messages_controller.rb | 2 | ||||
| -rw-r--r-- | app/controllers/import_resources_controller.rb | 2 | ||||
| -rw-r--r-- | app/models/import/message_export.rb | 48 | ||||
| -rw-r--r-- | config/breadcrumbs.rb | 2 | ||||
| -rw-r--r-- | config/locales/import_resources.en.yml | 17 | ||||
| -rw-r--r-- | config/locales/import_resources.fr.yml | 15 | ||||
| -rw-r--r-- | config/locales/import_tasks.en.yml | 52 | ||||
| -rw-r--r-- | config/locales/import_tasks.fr.yml | 53 | 
8 files changed, 70 insertions, 121 deletions
| diff --git a/app/controllers/import_messages_controller.rb b/app/controllers/import_messages_controller.rb index 5e39445fb..e9a071177 100644 --- a/app/controllers/import_messages_controller.rb +++ b/app/controllers/import_messages_controller.rb @@ -9,7 +9,7 @@ class ImportMessagesController < ChouetteController    def index      index! do |format|        format.csv { -        send_data ImportMessageExport.new(:import_messages => @import_messages).to_csv(:col_sep => "\;", :quote_char=>'"', force_quotes: true) , :filename => "import_errors_#{@import_resource.name.gsub('.xml', '')}_#{Date.today.to_s}.csv" +        send_data Import::MessageExport.new(:import_messages => @import_messages).to_csv(:col_sep => "\;", :quote_char=>'"', force_quotes: true) , :filename => "import_errors_#{@import_resource.name.gsub('.xml', '')}_#{Date.today.to_s}.csv"        }      end    end diff --git a/app/controllers/import_resources_controller.rb b/app/controllers/import_resources_controller.rb index 6d1977e0c..1535fd171 100644 --- a/app/controllers/import_resources_controller.rb +++ b/app/controllers/import_resources_controller.rb @@ -1,7 +1,7 @@  class ImportResourcesController < ChouetteController    defaults resource_class: Import::Resource, collection_name: 'import_resources', instance_name: 'import_resource'    respond_to :html -  belongs_to :import +  belongs_to :import, :parent_class => Import::Base    def index      index! do |format| diff --git a/app/models/import/message_export.rb b/app/models/import/message_export.rb new file mode 100644 index 000000000..27c540307 --- /dev/null +++ b/app/models/import/message_export.rb @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +require "csv" +require "zip" + +class Import::MessageExport +  include ActiveModel::Validations +  include ActiveModel::Conversion +  extend  ActiveModel::Naming + +  attr_accessor :import_messages + +  def initialize(attributes = {}) +    attributes.each { |name, value| send("#{name}=", value) } +  end + +  def persisted? +    false +  end + +  def label(name) +    I18n.t "vehicle_journey_exports.label.#{name}" +  end + +  def column_names +    ["criticity", "message key", "message", "file name", "line", "column"] +  end + +  def to_csv(options = {}) +    csv_string = CSV.generate(options) do |csv| +      csv << column_names +      import_messages.each do |import_message| +        csv << [import_message.criticity, import_message.message_key, I18n.t("import_messages.#{import_message.message_key}", import_message.message_attributes.deep_symbolize_keys), *import_message.resource_attributes.values_at("filename", "line_number", "column_number")  ] +      end +    end +    # We add a BOM to indicate we use UTF-8 +    "\uFEFF" + csv_string +  end + +  def to_zip(temp_file,options = {}) +    ::Zip::OutputStream.open(temp_file) { |zos| } +    ::Zip::File.open(temp_file.path, ::Zip::File::CREATE) do |zipfile| +      zipfile.get_output_stream(label("vj_filename")+route.id.to_s+".csv") { |f| f.puts to_csv(options) } +      zipfile.get_output_stream(label("tt_filename")+".csv") { |f| f.puts time_tables_to_csv(options) } +      zipfile.get_output_stream(label("ftn_filename")+".csv") { |f| f.puts footnotes_to_csv(options) } +    end +  end + +end diff --git a/config/breadcrumbs.rb b/config/breadcrumbs.rb index 87d6f5846..e57cbc4f2 100644 --- a/config/breadcrumbs.rb +++ b/config/breadcrumbs.rb @@ -127,7 +127,7 @@ crumb :export do |workbench, export|  end  crumb :import_resources do |import, import_resources| -  link I18n.t('import_resources.index.title'), workbench_import_import_resources_path(import.workbench, import.parent) +  link I18n.t('import.resources.index.title'), workbench_import_import_resources_path(import.workbench, import.parent)    parent :import, import.workbench, import.parent  end diff --git a/config/locales/import_resources.en.yml b/config/locales/import_resources.en.yml index 3e737f9bc..4ad2b5690 100644 --- a/config/locales/import_resources.en.yml +++ b/config/locales/import_resources.en.yml @@ -1,11 +1,14 @@  en: -  import_resources: &resources -    index: -      title: "NeTEx conformity" -      table_state: "%{lines_imported} line(s) imported on %{lines_in_zipfile} presents in zipfile" -      table_title: "Satus of anlyzed files" -      table_explanation: "When calendriers.xml and/or commun.xml are not imported, then all lines file are not processed." -      metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" +  import: +    resources: &resources +      index: +        title: "NeTEx conformity" +        table_state: "%{lines_imported} line(s) imported on %{lines_in_zipfile} presents in zipfile" +        table_title: "Satus of anlyzed files" +        table_explanation: "When calendriers.xml and/or commun.xml are not imported, then all lines file are not processed." +        metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" +  import_resources: +    <<: *resources    activerecord:      models:        import_resource: diff --git a/config/locales/import_resources.fr.yml b/config/locales/import_resources.fr.yml index a271ae1ca..79ecc9ac0 100644 --- a/config/locales/import_resources.fr.yml +++ b/config/locales/import_resources.fr.yml @@ -1,11 +1,14 @@  fr: +  import: +    resources: &resources +      index: +        title: "Rapport de conformité NeTEx" +        table_state: "%{lines_imported} ligne(s) importée(s) sur %{lines_in_zipfile} présente(s) dans l'archive" +        table_title: "Etat des fichiers analysés" +        table_explanation: "Dans le cas ou le(s) fichiers calendriers.xml et/ou commun.xml sont dans un état non importé, alors tous les fichiers lignes sont automatiquement dans un état non traité." +        metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a"    import_resources: -    index: -      title: "Rapport de conformité NeTEx" -      table_state: "%{lines_imported} ligne(s) importée(s) sur %{lines_in_zipfile} présente(s) dans l'archive" -      table_title: "Etat des fichiers analysés" -      table_explanation: "Dans le cas ou le(s) fichiers calendriers.xml et/ou commun.xml sont dans un état non importé, alors tous les fichiers lignes sont automatiquement dans un état non traité." -      metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" +    <<: *resources    activerecord:      models:        import_resource: diff --git a/config/locales/import_tasks.en.yml b/config/locales/import_tasks.en.yml deleted file mode 100644 index 34f7e6998..000000000 --- a/config/locales/import_tasks.en.yml +++ /dev/null @@ -1,52 +0,0 @@ -en: -  import_tasks: -    actions: -      new: "New import" -    new: -      title: "New import" -      all: "All" -      flash: "Import task on queue, refresh page to see progression" -  activemodel: -    models: -      import_task: -        zero:  "import" -        one:   "import" -        other: "imports" -      neptune_import: -        zero:  "import" -        one:   "Neptune import" -        other: "imports" -      gtfs_import: -        zero:  "import" -        one:   "GTFS import" -        other: "imports" -      netex_import: -        zero:  "import" -        one:   "NeTEx import" -        other: "imports" -    attributes: -      import_task: -        name: "Import name" -        no_save: "No save" -        resources: "File to import" -        references_type: "Data to be imported" -        object_id_prefix: "Neptune Id prefix" -        max_distance_for_commercial: "Max distance for commercial stop" -        max_distance_for_connection_link: "Max distance for connection link" -        ignore_last_word: "ignore last word" -        ignore_end_chars: "ignore last chars" -    errors: -      models: -        import_task: -          attributes: -            resources: -              maximum_file_size: "File should smaller than %{maximum_file_size} (%{file_size} sent)" -              invalid_mime_type: "File doesn't use the expected format (%{mime_type} sent)" -  formtastic: -    titles: -      import_task: -        max_distance_for_commercial: "Maximal distance to merge homonymous stops in commercial stop in meter" -        max_distance_for_connection_link: "Maximal distance to link stops by connection link stop in meter" -        ignore_last_word: "ignore last word on stop name in homonymous detection (inappliable when just one word occurs)" -        ignore_end_chars: "ignore some chars at the end of stop names in homonymous detection" -        references_type: "Filter on stop areas import only GTFS stops and transfers files, these may contain extra attributes" diff --git a/config/locales/import_tasks.fr.yml b/config/locales/import_tasks.fr.yml deleted file mode 100644 index 002ca03cb..000000000 --- a/config/locales/import_tasks.fr.yml +++ /dev/null @@ -1,53 +0,0 @@ -fr: -  import_tasks: -    actions: -      new: "Nouvel import" -    new: -      title: "Nouvel import" -      all: "Tout" -      flash: "La demande d'import est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression" -  activemodel: -    models: -      import_task: -        zero:  "import" -        one:   "import" -        other: "imports" -      neptune_import: -        zero:  "import" -        one:   "import Neptune" -        other: "imports" -      gtfs_import: -        zero:  "import" -        one:   "import GTFS" -        other: "imports" -      netex_import: -        zero:  "import" -        one:   "import NeTEx" -        other: "imports" -    attributes: -      import_task: -        name: "Nom de l'import" -        no_save: "Pas de sauvegarde" -        resources: "Fichier à importer" -        references_type: "Données à importer" -        object_id_prefix: "Préfixe d'identifiants" -        max_distance_for_commercial: "Distance max pour créer les zones" -        max_distance_for_connection_link: "Distance max pour créer les correspondances" -        ignore_last_word: "ignorer le dernier mot" -        ignore_end_chars: "ignorer les n derniers caractères" -    errors: -      models: -        import_task: -          attributes: -            resources: -              maximum_file_size: "Le fichier ne peut dépasser %{maximum_file_size} (%{file_size} soumis)" -              invalid_mime_type: "Le fichier n'utilise pas le format attendu (%{mime_type} soumis)" - -  formtastic: -    titles: -      import_task: -        max_distance_for_commercial: "Distance maximale entre deux arrêts homonymes pour créer les zones d'arrêt (en mètre)" -        max_distance_for_connection_link: "Distance maximale entre deux arrêts pour créer les correspondances (en mètre)" -        ignore_last_word: "Ignorer le dernier mot pour détecter l'homonymie des noms d'arrêt (inapplicable quand le nom ne comporte qu'un mot)" -        ignore_end_chars: "Ignorer les n derniers caractères du nom de l'arrêt pour détecter l'homonymie" -        references_type: "Le filtre sur arrêts importe uniquement les fichiers GTFS stops et transfers gtfs, ceux-ci pouvant contenir des attributs supplémentaires" | 
