aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/import.rb90
-rw-r--r--app/uploaders/import_uploader.rb49
-rw-r--r--config/routes.rb17
-rw-r--r--db/migrate/20120515134710_create_imports.rb11
-rw-r--r--db/migrate/20161227104202_create_imports.rb14
-rw-r--r--db/migrate/20161227104741_add_file_to_imports.rb5
-rw-r--r--db/schema.rb17
-rw-r--r--spec/factories/imports.rb11
-rw-r--r--spec/models/import_spec.rb7
9 files changed, 116 insertions, 105 deletions
diff --git a/app/models/import.rb b/app/models/import.rb
index 078f1698e..8ffac5c5e 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -1,87 +1,7 @@
-require 'open-uri'
+class Import < ActiveRecord::Base
+ mount_uploader :file, ImportUploader
+ belongs_to :workbench
+ belongs_to :referential
-class Import
- include JobConcern
-
- def initialize( response )
- @datas = response
- end
-
- def report?
- links["action_report"].present?
- end
-
- def report
- Rails.cache.fetch("#{cache_key}/action_report", expires_in: cache_expiration) do
- report_path = links["action_report"]
- if report_path
- response = Ievkit.get(report_path)
- ImportReport.new(response)
- else
- nil
- end
- end
- end
-
- def rule_parameter_set?
- links["validation_params"].present?
- end
-
- def rule_parameter_set
- Rails.cache.fetch("#{cache_key}/validation_params", expires_in: cache_expiration) do
- rule_parameter_set_path = links["validation_params"]
- if rule_parameter_set_path
- response = Ievkit.get(rule_parameter_set_path)
- rule_parameter_set = RuleParameterSet.new(:name => "", :import => self).tap { |rps| rps.parameters = response.validation }
- else
- nil
- end
- end
- end
-
- def compliance_check?
- links["validation_report"].present?
- end
-
- def compliance_check_validation_report
- puts "compliance_check_validation_report"
- Rails.cache.fetch("#{cache_key}/validation_report", expires_in: cache_expiration) do
- compliance_check_path = links["validation_report"]
- if compliance_check_path
- response = Ievkit.get(compliance_check_path)
- ComplianceCheckResult.new(response)
- else
- nil
- end
- end
- end
-
- def destroy
- delete_path = links["delete"]
- cancel_path = links["cancel"]
-
- if delete_path
- Ievkit.delete(delete_path)
- elsif cancel_path
- Ievkit.delete(cancel_path)
- else
- nil
- end
- end
-
- def file_path?
- links["data"].present?
- end
-
- def file_path
- links["data"]
- end
-
- def filename
- File.basename(file_path) if file_path
- end
-
- def filename_extension
- File.extname(filename).gsub(".", "") if filename
- end
+ validates :file, presence: true
end
diff --git a/app/uploaders/import_uploader.rb b/app/uploaders/import_uploader.rb
new file mode 100644
index 000000000..2740393ca
--- /dev/null
+++ b/app/uploaders/import_uploader.rb
@@ -0,0 +1,49 @@
+class ImportUploader < CarrierWave::Uploader::Base
+
+ # Include RMagick or MiniMagick support:
+ # include CarrierWave::RMagick
+ # include CarrierWave::MiniMagick
+
+ # Choose what kind of storage to use for this uploader:
+ storage :file
+ # storage :fog
+
+ # Override the directory where uploaded files will be stored.
+ # This is a sensible default for uploaders that are meant to be mounted:
+ def store_dir
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
+ end
+
+ # Provide a default URL as a default if there hasn't been a file uploaded:
+ # def default_url
+ # # For Rails 3.1+ asset pipeline compatibility:
+ # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
+ #
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
+ # end
+
+ # Process files as they are uploaded:
+ # process scale: [200, 300]
+ #
+ # def scale(width, height)
+ # # do something
+ # end
+
+ # Create different versions of your uploaded files:
+ # version :thumb do
+ # process resize_to_fit: [50, 50]
+ # end
+
+ # Add a white list of extensions which are allowed to be uploaded.
+ # For images you might use something like this:
+ # def extension_whitelist
+ # %w(jpg jpeg gif png)
+ # end
+
+ # Override the filename of the uploaded files:
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
+ # def filename
+ # "something.jpg" if original_filename
+ # end
+
+end
diff --git a/config/routes.rb b/config/routes.rb
index c49b28a07..30aea2295 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -119,14 +119,15 @@ ChouetteIhm::Application.routes.draw do
end
resources :import_tasks, :only => [:new, :create]
- resources :imports, :only => [:index, :show, :destroy] do
- member do
- get "imported_file"
- get "rule_parameter_set"
- get "compliance_check"
- get 'export', defaults: { format: 'zip' }
- end
- end
+ resources :imports
+ # fixme #2261
+ # member do
+ # get "imported_file"
+ # get "rule_parameter_set"
+ # get "compliance_check"
+ # get 'export', defaults: { format: 'zip' }
+ # end
+ # end
resources :export_tasks, :only => [:new, :create] do
collection do
diff --git a/db/migrate/20120515134710_create_imports.rb b/db/migrate/20120515134710_create_imports.rb
deleted file mode 100644
index 5da398fc9..000000000
--- a/db/migrate/20120515134710_create_imports.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class CreateImports < ActiveRecord::Migration
- def change
- create_table :imports do |t|
- t.belongs_to :referential
- t.string :status
-
- t.timestamps
- end
- add_index :imports, :referential_id
- end
-end
diff --git a/db/migrate/20161227104202_create_imports.rb b/db/migrate/20161227104202_create_imports.rb
new file mode 100644
index 000000000..97a2d6029
--- /dev/null
+++ b/db/migrate/20161227104202_create_imports.rb
@@ -0,0 +1,14 @@
+class CreateImports < ActiveRecord::Migration
+ def change
+ create_table :imports do |t|
+ t.string :status
+ t.string :current_step_id
+ t.float :current_step_progress
+ t.references :workbench, index: true
+ t.references :referential, index: true
+ t.string :name
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20161227104741_add_file_to_imports.rb b/db/migrate/20161227104741_add_file_to_imports.rb
new file mode 100644
index 000000000..36498039b
--- /dev/null
+++ b/db/migrate/20161227104741_add_file_to_imports.rb
@@ -0,0 +1,5 @@
+class AddFileToImports < ActiveRecord::Migration
+ def change
+ add_column :imports, :file, :string
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 0277cae91..734dde1de 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20161208120132) do
+ActiveRecord::Schema.define(version: 20161227104741) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -224,6 +224,21 @@ ActiveRecord::Schema.define(version: 20161208120132) do
t.integer "line_id", limit: 8
end
+ create_table "imports", force: true do |t|
+ t.string "status"
+ t.string "current_step_id"
+ t.float "current_step_progress"
+ t.integer "workbench_id"
+ t.integer "referential_id"
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "file"
+ end
+
+ add_index "imports", ["referential_id"], :name => "index_imports_on_referential_id"
+ add_index "imports", ["workbench_id"], :name => "index_imports_on_workbench_id"
+
create_table "journey_frequencies", force: true do |t|
t.integer "vehicle_journey_id", limit: 8
t.time "scheduled_headway_interval", null: false
diff --git a/spec/factories/imports.rb b/spec/factories/imports.rb
new file mode 100644
index 000000000..8b2cb223d
--- /dev/null
+++ b/spec/factories/imports.rb
@@ -0,0 +1,11 @@
+FactoryGirl.define do
+ factory :import do
+ status "MyString"
+current_step_id "MyString"
+current_step_progress 1.5
+workbench nil
+referential nil
+name "MyString"
+ end
+
+end
diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb
new file mode 100644
index 000000000..10a508c71
--- /dev/null
+++ b/spec/models/import_spec.rb
@@ -0,0 +1,7 @@
+require 'rails_helper'
+
+RSpec.describe Import, :type => :model do
+ it { should belong_to(:referential) }
+ it { should belong_to(:workbench) }
+ it { should validate_presence_of(:file) }
+end