diff options
| author | Luc Donnet | 2017-09-04 22:59:51 +0200 |
|---|---|---|
| committer | Luc Donnet | 2017-09-04 22:59:51 +0200 |
| commit | 0bfb94f1311517838c4d1989e273ce56c605a25a (patch) | |
| tree | 2942b4e536aeaaa846065fec239acfa79615686a /app | |
| parent | cbbecf7c40e8102a2b0c24aabb3aabf7e89391cf (diff) | |
| download | chouette-core-0bfb94f1311517838c4d1989e273ce56c605a25a.tar.bz2 | |
Fix import status table views and first version for import_messages Refs #4527
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/import_messages_controller.rb | 26 | ||||
| -rw-r--r-- | app/decorators/import_decorator.rb | 8 | ||||
| -rw-r--r-- | app/models/import_message_export.rb | 55 | ||||
| -rw-r--r-- | app/models/import_resource.rb | 4 | ||||
| -rw-r--r-- | app/views/import_resources/index.html.slim | 9 | ||||
| -rw-r--r-- | app/views/imports/show.html.slim | 4 |
6 files changed, 99 insertions, 7 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, \ |
