aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuc Donnet2017-09-04 22:59:51 +0200
committerLuc Donnet2017-09-04 22:59:51 +0200
commit0bfb94f1311517838c4d1989e273ce56c605a25a (patch)
tree2942b4e536aeaaa846065fec239acfa79615686a
parentcbbecf7c40e8102a2b0c24aabb3aabf7e89391cf (diff)
downloadchouette-core-0bfb94f1311517838c4d1989e273ce56c605a25a.tar.bz2
Fix import status table views and first version for import_messages Refs #4527
-rw-r--r--app/controllers/import_messages_controller.rb26
-rw-r--r--app/decorators/import_decorator.rb8
-rw-r--r--app/models/import_message_export.rb55
-rw-r--r--app/models/import_resource.rb4
-rw-r--r--app/views/import_resources/index.html.slim9
-rw-r--r--app/views/imports/show.html.slim4
-rw-r--r--config/locales/import_resources.en.yml1
-rw-r--r--config/locales/import_resources.fr.yml1
-rw-r--r--config/routes.rb6
9 files changed, 105 insertions, 9 deletions
diff --git a/app/controllers/import_messages_controller.rb b/app/controllers/import_messages_controller.rb
new file mode 100644
index 000000000..64eec92dd
--- /dev/null
+++ b/app/controllers/import_messages_controller.rb
@@ -0,0 +1,26 @@
+class ImportMessagesController < BreadcrumbController
+ defaults resource_class: ImportMessage, collection_name: 'import_messages', instance_name: 'import_message'
+ respond_to :csv
+ belongs_to :import, :parent_class => Import do
+ belongs_to :import_resource, :parent_class => ImportResource
+ end
+
+
+ def index
+ index! do |format|
+ format.csv {
+ send_data ImportMessageExport.new(:import_messages => @import_messages).to_csv(:col_sep => ";") , :filename => "test.csv"
+ }
+ end
+ end
+
+ protected
+ def collection
+ @import_messages ||= parent.messages
+ end
+
+ def parent
+ @import_resource ||= ImportResource.find(params[:import_resource_id])
+ end
+
+end
diff --git a/app/decorators/import_decorator.rb b/app/decorators/import_decorator.rb
index eb6a34a13..d63d723cd 100644
--- a/app/decorators/import_decorator.rb
+++ b/app/decorators/import_decorator.rb
@@ -3,6 +3,14 @@ class ImportDecorator < Draper::Decorator
delegate_all
+ def import_status_css_class
+ cls =''
+ cls = 'overheaded-success' if object.status == 'successful'
+ cls = 'overheaded-warning' if object.status == 'warning'
+ cls = 'overheaded-danger' if %w[failed aborted canceled].include? object.status
+ cls
+ end
+
def action_links
links = []
diff --git a/app/models/import_message_export.rb b/app/models/import_message_export.rb
new file mode 100644
index 000000000..d13a3a21b
--- /dev/null
+++ b/app/models/import_message_export.rb
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+require "csv"
+require "zip"
+
+class ImportMessageExport
+ 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"]
+ end
+
+
+ # t.integer "criticity"
+ # t.string "message_key"
+ # t.hstore "message_attributes"
+ # t.integer "import_id", limit: 8
+ # t.integer "resource_id", limit: 8
+ # t.datetime "created_at"
+ # t.datetime "updated_at"
+ # t.hstore "resource_attributes"
+ def to_csv(options = {})
+ CSV.generate(options) do |csv|
+ csv << column_names
+ import_messages.each do |import_message|
+ csv << [import_message.criticity, import_message.message_key ]
+ end
+ end
+ 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/app/models/import_resource.rb b/app/models/import_resource.rb
index 9f4d2872e..55e752e74 100644
--- a/app/models/import_resource.rb
+++ b/app/models/import_resource.rb
@@ -5,5 +5,7 @@ class ImportResource < ActiveRecord::Base
enumerize :status, in: %i(OK ERROR WARNING IGNORED), scope: true
validates_presence_of :name, :resource_type, :reference
-
+
+ has_many :messages, class_name: "ImportMessage", foreign_key: :resource_id
+
end
diff --git a/app/views/import_resources/index.html.slim b/app/views/import_resources/index.html.slim
index cf91f80f1..17e5532ae 100644
--- a/app/views/import_resources/index.html.slim
+++ b/app/views/import_resources/index.html.slim
@@ -39,15 +39,16 @@
), \
TableBuilderHelper::Column.new( \
name: 'Résultat des tests' , \
- key: :resource_type, \
- attribute: 'resource_type', \
+ attribute: Proc.new { |n| I18n.t('import_resources.index.metrics', n.metrics.deep_symbolize_keys) }, \
sortable: false, \
), \
TableBuilderHelper::Column.new( \
name: 'Téléchargement' , \
- key: :status, \
- attribute: 'status', \
+ attribute: Proc.new { |n| '<i class="fa fa-download" aria-hidden="true"></i>'.html_safe }, \
sortable: false, \
+ link_to: lambda do |import_resource| \
+ workbench_import_import_resource_import_messages_path(import_resource.import.workbench, import_resource.import, import_resource, format: 'csv' ) \
+ end \
), \
],
links: [],
diff --git a/app/views/imports/show.html.slim b/app/views/imports/show.html.slim
index d5dcd9caf..5f5974d69 100644
--- a/app/views/imports/show.html.slim
+++ b/app/views/imports/show.html.slim
@@ -30,7 +30,7 @@
attribute: 'name', \
sortable: false, \
link_to: lambda do |import| \
- referential_path(import.referential) \
+ referential_path(import.referential) if import.referential.present? \
end \
), \
TableBuilderHelper::Column.new( \
@@ -59,7 +59,7 @@
{ \
title: "#{@import.children_succeedeed} jeu de données validé sur #{@import.children.count} présents dans l'archive", \
width: 1, \
- cls: 'overheaded-danger full-border' \
+ cls: "#{@import.import_status_css_class} full-border" \
}, { \
title: 'Bilan des jeux de contrôles d\'import <span title="Lorem ipsum..." class="fa fa-lg fa-info-circle text-info"></span>', \
width: 2, \
diff --git a/config/locales/import_resources.en.yml b/config/locales/import_resources.en.yml
index 43761fe00..d98b3eacf 100644
--- a/config/locales/import_resources.en.yml
+++ b/config/locales/import_resources.en.yml
@@ -5,6 +5,7 @@ en:
table_state: "%{lines_imported} lines 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"
activerecord:
models:
import_resource:
diff --git a/config/locales/import_resources.fr.yml b/config/locales/import_resources.fr.yml
index 8da7c5938..86c8d8e73 100644
--- a/config/locales/import_resources.fr.yml
+++ b/config/locales/import_resources.fr.yml
@@ -5,6 +5,7 @@ fr:
table_state: "%{lines_imported} lignes importées sur %{lines_in_zipfile} présentes 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"
activerecord:
models:
import_resource:
diff --git a/config/routes.rb b/config/routes.rb
index 4b87d9db9..d7322980a 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -5,8 +5,10 @@ ChouetteIhm::Application.routes.draw do
delete :referentials, on: :member, action: :delete_referentials
resources :imports do
get :download, on: :member
- resources :import_messages, only: [:index]
- resources :import_resources, only: [:index]
+ resources :import_resources, only: [:index] do
+ resources :import_messages, only: [:index]
+ end
+
end
end