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" |
