aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuc Donnet2015-04-24 20:23:44 +0200
committerLuc Donnet2015-04-24 20:23:44 +0200
commit04dff64bbd3b8fab9851a47c700381256d16d386 (patch)
tree18d68550323b2f3ad86528f8653f6855c3311cdf
parent2cb725889f3999a20c719dc7c6b480d8cd2f70c5 (diff)
downloadchouette-core-04dff64bbd3b8fab9851a47c700381256d16d386.tar.bz2
Add export creation
-rw-r--r--Gemfile6
-rw-r--r--Gemfile.lock11
-rw-r--r--app/assets/stylesheets/main/export_tasks.css.scss13
-rw-r--r--app/controllers/export_tasks_controller.rb66
-rw-r--r--app/controllers/import_tasks_controller.rb4
-rw-r--r--app/models/csv_export.rb26
-rw-r--r--app/models/export_task.rb186
-rw-r--r--app/models/gtfs_export.rb58
-rw-r--r--app/models/hub_export.rb67
-rw-r--r--app/models/kml_export.rb24
-rw-r--r--app/models/neptune_export.rb42
-rw-r--r--app/models/netex_export.rb22
-rw-r--r--app/views/export_tasks/_fields_gtfs_export.html.erb (renamed from app/views/exports/_fields_gtfs_export.erb)0
-rw-r--r--app/views/export_tasks/_fields_hub_export.html.erb (renamed from app/views/exports/_fields_hub_export.erb)1
-rw-r--r--app/views/export_tasks/_fields_kml_export.html.erb0
-rw-r--r--app/views/export_tasks/_fields_neptune_export.html.erb4
-rw-r--r--app/views/export_tasks/_fields_netex_export.html.erb0
-rw-r--r--app/views/export_tasks/new.html.erb31
-rw-r--r--app/views/export_tasks/new.js.coffee2
-rw-r--r--app/views/exports/_fields_neptune_export.erb3
-rw-r--r--app/views/exports/index.html.erb2
-rw-r--r--app/views/exports/new.html.erb32
-rw-r--r--app/views/exports/new.js.coffee4
-rw-r--r--config/locales/enumerize.en.yml21
-rw-r--r--config/locales/enumerize.fr.yml21
-rw-r--r--config/locales/exchange.yml18
-rw-r--r--config/locales/export_tasks.en.yml48
-rw-r--r--config/locales/export_tasks.fr.yml48
-rw-r--r--config/routes.rb3
29 files changed, 457 insertions, 306 deletions
diff --git a/Gemfile b/Gemfile
index bbbd6f77c..ae3be388b 100644
--- a/Gemfile
+++ b/Gemfile
@@ -39,12 +39,8 @@ gem 'spring', group: :development
gem "sitemap_generator"
# API Rest
-gem 'sawyer'
-gem 'faraday', '~> 0.9.1'
+gem 'sawyer', "~> 0.6.0"
gem 'faraday_middleware', '~> 0.9.1'
-gem 'kleisli'
-gem 'hashie'
-gem 'hashie_rails', '~> 0.0.2'
platforms :jruby do
gem 'activerecord-jdbcpostgresql-adapter', '~> 1.3.3'
diff --git a/Gemfile.lock b/Gemfile.lock
index 71ae6425e..76a675918 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -181,10 +181,6 @@ GEM
has_scope (0.6.0)
actionpack (>= 3.2, < 5)
activesupport (>= 3.2, < 5)
- hashie (3.4.0)
- hashie_rails (0.0.2)
- activesupport (~> 4.0)
- hashie (>= 3.0)
highline (1.7.1)
hike (1.2.3)
hitimes (1.2.2)
@@ -216,7 +212,6 @@ GEM
jruby-rack (>= 1.1.10)
json (1.8.2)
json (1.8.2-java)
- kleisli (0.2.6)
language_engine (0.0.6)
rails (~> 4.1.1)
launchy (2.4.3)
@@ -487,7 +482,6 @@ DEPENDENCIES
enumerize (~> 0.10.0)
factory_girl_rails (~> 4.0)
fakeweb
- faraday (~> 0.9.1)
faraday_middleware (~> 0.9.1)
font-awesome-sass (~> 4.2.0)
formtastic (= 2.3.1)
@@ -496,8 +490,6 @@ DEPENDENCIES
google-analytics-rails
guard
guard-rspec
- hashie
- hashie_rails (~> 0.0.2)
inherited_resources
jbuilder (~> 2.0)
jquery-rails
@@ -505,7 +497,6 @@ DEPENDENCIES
jruby-openssl
jruby-rack-worker
json
- kleisli
language_engine (= 0.0.6)
launchy
map_layers (= 0.0.4)
@@ -534,7 +525,7 @@ DEPENDENCIES
rspec-rails (~> 3.1.0)
rubyzip (~> 1.1.7)
sass-rails (~> 4.0.3)
- sawyer
+ sawyer (~> 0.6.0)
sdoc (~> 0.4.0)
simple_form (~> 3.1.0)
sitemap_generator
diff --git a/app/assets/stylesheets/main/export_tasks.css.scss b/app/assets/stylesheets/main/export_tasks.css.scss
new file mode 100644
index 000000000..5c04b8ea0
--- /dev/null
+++ b/app/assets/stylesheets/main/export_tasks.css.scss
@@ -0,0 +1,13 @@
+#workspace.export_tasks.new, #workspace.export_tasks.create {
+ .nav{
+ margin: 30px 0 10px 0;
+ }
+
+ .highlight {
+ padding: 9px 14px;
+ margin-bottom: 14px;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
+ border-radius: 4px;
+ }
+}
diff --git a/app/controllers/export_tasks_controller.rb b/app/controllers/export_tasks_controller.rb
new file mode 100644
index 000000000..dcc5e684d
--- /dev/null
+++ b/app/controllers/export_tasks_controller.rb
@@ -0,0 +1,66 @@
+class ExportTasksController < ChouetteController
+ defaults :resource_class => ExportTask
+
+ respond_to :html, :only => [:new, :create]
+ respond_to :js, :only => [:new, :create]
+ belongs_to :referential
+
+ def new
+ @available_exports = available_exports
+ begin
+ new!
+ rescue Ievkit::Error => error
+ logger.error("Iev failure : #{error.message}")
+ flash[:error] = t('iev.failure')
+ redirect_to referential_path(@referential)
+ end
+ end
+
+ def create
+ begin
+ create! do |success, failure|
+ success.html { redirect_to referential_exports_path(@referential) }
+ end
+ rescue Ievkit::Error => error
+ logger.error("Iev failure : #{error.message}")
+ flash[:error] = t('iev.failure')
+ redirect_to referential_path(@referential)
+ end
+ end
+
+ protected
+
+ def available_exports
+ @available_exports ||= [
+ NeptuneExport.new(:referential_id => @referential.id ),
+ NetexExport.new(:referential_id => @referential.id ),
+ GtfsExport.new(:referential_id => @referential.id ),
+ HubExport.new(:referential_id => @referential.id ),
+ KmlExport.new(:referential_id => @referential.id )
+ ]
+ end
+
+ def build_resource
+ export_task_parameters = params[:export_task]
+
+ if export_task_parameters.present?
+ case export_task_parameters[:data_format]
+ when "neptune"
+ @export_task = NeptuneExport.new(export_task_parameters)
+ when "netex"
+ @export_task = NetexExport.new(export_task_parameters)
+ when "gtfs"
+ @export_task = GtfsExport.new(export_task_parameters)
+ when "hub"
+ @export_task = HubExport.new(export_task_parameters)
+ when "kml"
+ @export_task = KmlExport.new(export_task_parameters)
+ else
+ @export_task = nil
+ end
+ else
+ @export_task = nil
+ end
+ end
+
+end
diff --git a/app/controllers/import_tasks_controller.rb b/app/controllers/import_tasks_controller.rb
index cb0bafdfa..2e0b325c7 100644
--- a/app/controllers/import_tasks_controller.rb
+++ b/app/controllers/import_tasks_controller.rb
@@ -6,9 +6,7 @@ class ImportTasksController < ChouetteController
def new
begin
- new! do
- puts "new"
- end
+ new!
rescue Ievkit::Error => error
logger.error("Iev failure : #{error.message}")
flash[:error] = t('iev.failure')
diff --git a/app/models/csv_export.rb b/app/models/csv_export.rb
index 9fff79be3..f7bbb7ed7 100644
--- a/app/models/csv_export.rb
+++ b/app/models/csv_export.rb
@@ -1,7 +1,23 @@
-# class CsvExport < Export
+class CsvExport < ExportTask
-# def export_options
-# super.merge(:format => :csv)
-# end
+ enumerize :references_type, in: %w( all network line company groupofline )
-# end
+ def action_params
+ {
+ "parameters" => {
+ "kml-export" => {
+ "name" => name,
+ "references_type" => references_type,
+ "user_name" => user_name,
+ "organisation_name" => organisation.name,
+ "referential_name" => referential.name
+ }
+ }
+ }
+ end
+
+ def data_format
+ "csv"
+ end
+
+end
diff --git a/app/models/export_task.rb b/app/models/export_task.rb
index 4d439b58a..0ca3b49b3 100644
--- a/app/models/export_task.rb
+++ b/app/models/export_task.rb
@@ -1,164 +1,64 @@
-class ExportTask < ActiveRecord::Base
- attr_accessor :resources, :rule_parameter_set_id
+class ExportTask
+ extend Enumerize
+ extend ActiveModel::Naming
+ extend ActiveModel::Translation
+ extend ActiveModel::Callbacks
+ include ActiveModel::Validations
+ include ActiveModel::Conversion
- belongs_to :referential
+ define_model_callbacks :initialize, only: :after
- has_one :user
- has_one :compliance_check_task, :dependent => :delete
-
- serialize :parameter_set, JSON
- serialize :result, JSON
+ # TODO : Move in configuration
+ @@root = "#{Rails.root}/tmp/exports"
+ cattr_accessor :root
+ enumerize :data_format, in: %w( neptune netex gtfs hub kml )
+ enumerize :references_type, in: %w( all network line company groupofline stoparea )
+ attr_accessor :referential_id, :user_id, :user_name, :references_type, :data_format, :name, :projection_type
+
validates_presence_of :referential_id
- validates_presence_of :resources
validates_presence_of :user_id
validates_presence_of :user_name
- validates_inclusion_of :status, :in => %w{ pending processing completed failed }
-
- def references_types
- []
+ validates_presence_of :name
+ validates_presence_of :data_format
+ validates_presence_of :references_type
+
+ def initialize( params = {} )
+ params.each {|k,v| send("#{k}=",v)}
end
- protected
-
- def self.option(name, type=nil)
- name = name.to_s
-
- define_method(name) do
- self.parameter_set and self.parameter_set[name]
- end
-
- if type.to_s == "boolean"
- define_method("#{name}=") do |prefix|
- (self.parameter_set ||= {})[name] = (prefix=="1" || prefix==true)
- end
- else
- define_method("#{name}=") do |prefix|
- (self.parameter_set ||= {})[name] = prefix
- end
- end
- end
-
- public
-
- def self.formats
- %w{Neptune Csv Gtfs Netex Hub}
+ def referential
+ Referential.find(referential_id)
end
- def self.format_label(format)
- I18n.t 'exchange.format.'+format.downcase
+ def organisation
+ referential.organisation
end
- def delayed_export
- delay.export
- end
-
- protected
-
- option :format
- option :file_path
- option :references_type
-
- validates_inclusion_of :format, :in => self.formats
-
- def chouette_command
- Chouette::Command.new(:schema => referential.slug)
- end
-
- before_validation :define_default_attributes, :on => :create
- def define_default_attributes
- self.status ||= "pending"
- end
-
- @@root = "#{Rails.root}/tmp/exports"
- cattr_accessor :root
-
- def compliance_check_task_attributes
- {:referential_id => referential.id,
- :user_id => user_id,
- :user_name => user_name,
- :rule_parameter_set_id => rule_parameter_set_id}
- end
-
- after_create :update_info, :save_resources
- def update_info
- self.file_path = saved_resources
- self.update_attribute :parameter_set, self.parameter_set
-
- self.create_compliance_check_task( self.compliance_check_task_attributes)
- end
-
- def save_resources
- FileUtils.mkdir_p root
- FileUtils.cp resources.path, saved_resources
- end
-
- after_destroy :destroy_resources
- def destroy_resources
- FileUtils.rm file_path if File.exists? file_path
- end
-
- def saved_resources
- raise Exception.new("Illegal call") if self.new_record?
- "#{root}/#{id}#{File.extname(resources.original_filename)}"
- end
-
- def chouette_command_args
- {:c => "export", :id => id}
- end
-
- public
-
- def failed?
- status == "failed"
- end
-
- def completed?
- status == "completed"
- end
-
- def file_path_extension
- extension = File.extname( self.file_path )
- if extension == ".xml"
- "xml"
- elsif extension == ".zip"
- "zip"
- else
- "basic"
+ def save
+ # Call Iev Server
+ begin
+ Ievkit.create_job( referential.name, "exporter", data_format, {
+ :file1 => action_params_io,
+ } )
+ rescue Exception => exception
+ raise exception
end
end
- def name
- "#{ExportTask.model_name.human} #{self.format} #{self.id}"
- end
-
- def full_name
- return name
+ def self.formats
+ self.data_format.values
end
- # Create ExportTask and ComplianceCheckTask associated and give export id to Chouette Loader
- def export
- return nil if self.new_record?
- begin
- chouette_command.run! chouette_command_args
- reload
- update_attribute :status, "completed"
- compliance_check_task.update_attribute :status, "completed"
- rescue => e
- Rails.logger.error "Export #{id} failed : #{e}, #{e.backtrace}"
- reload
- update_attribute :status, "failed"
- compliance_check_task.update_attribute :status, "failed"
- end
+ def action_params
+ {
+ "parameters" => {}
+ }
end
-
- def self.new(attributes = {}, parameter_set = {}, &block)
- if self == ExportTask
- attributes[:format] = "Neptune" unless attributes[:format]
- Object.const_get( attributes[:format] + "Export").new(attributes, parameter_set)
- else
- super
- end
+
+ def action_params_io
+ file = StringIO.new( action_params.to_s )
+ Faraday::UploadIO.new(file, "application/json", "parameters.json")
end
end
diff --git a/app/models/gtfs_export.rb b/app/models/gtfs_export.rb
index 5f3364ef1..279cc62d7 100644
--- a/app/models/gtfs_export.rb
+++ b/app/models/gtfs_export.rb
@@ -1,28 +1,40 @@
-# class GtfsExport < Export
+class GtfsExport < ExportTask
-# validates_presence_of :time_zone
-# option :time_zone
-# option :object_id_prefix
+ validates_presence_of :time_zone
+ attr_accessor :time_zone, :object_id_prefix
+
+ enumerize :references_type, in: %w( all network line company groupofline stoparea )
-# after_initialize :init_params
+ after_initialize :init_params
-# def references_types
-# [ Chouette::Line, Chouette::Network, Chouette::Company, Chouette::StopArea ]
-# end
+ def init_params
+ if time_zone.nil?
+ self.time_zone = "Paris"
+ end
+ end
-# def init_params
-# if time_zone.nil?
-# self.time_zone = "Paris"
-# end
-# end
-
-# def export_options
-# opts = super.merge(:format => :gtfs, :time_zone => ActiveSupport::TimeZone.find_tzinfo(time_zone).name)
-# if object_id_prefix.present?
-# opts = opts.merge(:object_id_prefix => object_id_prefix)
-# end
-# puts opts.inspect
-# opts
-# end
+ def time_zone=(time_zone)
+ ActiveSupport::TimeZone.find_tzinfo(time_zone).name
+ end
+
+ def action_params
+ {
+ "parameters" => {
+ "gtfs-export" => {
+ "name" => name,
+ "references_type" => references_type,
+ "user_name" => user_name,
+ "organisation_name" => organisation.name,
+ "referential_name" => referential.name,
+ "time_zone" => time_zone,
+ "object_id_prefix" => object_id_prefix
+ }
+ }
+ }
+ end
+
+ def data_format
+ "gtfs"
+ end
-# end
+end
diff --git a/app/models/hub_export.rb b/app/models/hub_export.rb
index 88c8e061c..8bd2e3a96 100644
--- a/app/models/hub_export.rb
+++ b/app/models/hub_export.rb
@@ -1,35 +1,42 @@
-# class HubExport < Export
+class HubExport < ExportTask
-# option :start_date
-# option :end_date
-
-# after_initialize :init_period
+ attr_accessor :start_date, :end_date
+ enumerize :references_type, in: %w( all network line company groupofline )
+
+ validates :start_date, presence: true , if: "end_date.present?"
+ validates :end_date, presence: true, if: "start_date.present?"
-# def init_period
-# unless Chouette::TimeTable.start_validity_period.nil?
-# if start_date.nil?
-# self.start_date = Chouette::TimeTable.start_validity_period
-# end
-# if end_date.nil?
-# self.end_date = Chouette::TimeTable.end_validity_period
-# end
-# end
-# end
+ after_initialize :init_period
-# def export_options
-# if (start_date.empty? && end_date.empty?)
-# super.merge(:format => :hub).except(:start_date).except(:end_date)
-# elsif start_date.empty?
-# super.merge(:format => :hub, :end_date => end_date).except(:start_date)
-# elsif end_date.empty?
-# super.merge(:format => :hub, :start_date => start_date).except(:end_date)
-# else
-# super.merge(:format => :hub, :start_date => start_date, :end_date => end_date)
-# end
-# end
+ def init_period
+ unless Chouette::TimeTable.start_validity_period.nil?
+ if start_date.nil?
+ self.start_date = Chouette::TimeTable.start_validity_period
+ end
+ if end_date.nil?
+ self.end_date = Chouette::TimeTable.end_validity_period
+ end
+ end
+ end
+
+ def action_params
+ {
+ "parameters" => {
+ "hub-export" => {
+ "name" => name,
+ "references_type" => references_type,
+ "user_name" => user_name,
+ "organisation_name" => organisation.name,
+ "referential_name" => referential.name,
+ "start_date" => start_date,
+ "end_date" => end_date
+ }
+ }
+ }
+ end
-# def exporter
-# exporter ||= ::Chouette::Hub::Exporter.new(referential, self)
-# end
+ def data_format
+ "hub"
+ end
-# end
+end
diff --git a/app/models/kml_export.rb b/app/models/kml_export.rb
index c450bd297..186108f6d 100644
--- a/app/models/kml_export.rb
+++ b/app/models/kml_export.rb
@@ -1,11 +1,23 @@
-class KmlExport < Export
+class KmlExport < ExportTask
- def export_options
- super.merge(:format => :kml)
- end
+ enumerize :references_type, in: %w( all network line company groupofline )
- def exporter
- exporter ||= ::Chouette::Kml::Exporter.new(referential, self)
+ def action_params
+ {
+ "parameters" => {
+ "kml-export" => {
+ "name" => name,
+ "references_type" => references_type,
+ "user_name" => user_name,
+ "organisation_name" => organisation.name,
+ "referential_name" => referential.name
+ }
+ }
+ }
+ end
+
+ def data_format
+ "kml"
end
end
diff --git a/app/models/neptune_export.rb b/app/models/neptune_export.rb
index 566117b32..90ccc1389 100644
--- a/app/models/neptune_export.rb
+++ b/app/models/neptune_export.rb
@@ -1,20 +1,30 @@
-class NeptuneExport < Export
+class NeptuneExport < ExportTask
-# option :start_date
-# option :end_date
+ attr_accessor :start_date, :end_date, :extensions, :export_type
+ enumerize :references_type, in: %w( all network line company groupofline )
+
+ validates :start_date, presence: true , if: "end_date.present?"
+ validates :end_date, presence: true, if: "start_date.present?"
-# def export_options
-# start_date ||= ""
-# end_date ||= ""
-# if (start_date.empty? && end_date.empty?)
-# super.merge(:format => :neptune).except(:start_date).except(:end_date)
-# elsif start_date.empty?
-# super.merge(:format => :neptune, :end_date => end_date).except(:start_date)
-# elsif end_date.empty?
-# super.merge(:format => :neptune, :start_date => start_date).except(:end_date)
-# else
-# super.merge(:format => :neptune, :start_date => start_date, :end_date => end_date)
-# end
-# end
+ def action_params
+ {
+ "parameters" => {
+ "neptune-export" => {
+ "name" => name,
+ "references_type" => references_type,
+ "user_name" => user_name,
+ "organisation_name" => organisation.name,
+ "referential_name" => referential.name,
+ "projection_type" => projection_type || "",
+ "start_date" => start_date,
+ "end_date" => end_date
+ }
+ }
+ }
+ end
+
+ def data_format
+ "neptune"
+ end
end
diff --git a/app/models/netex_export.rb b/app/models/netex_export.rb
index c29ef2b45..65f9f5340 100644
--- a/app/models/netex_export.rb
+++ b/app/models/netex_export.rb
@@ -1,7 +1,23 @@
-class NetexExport < Export
+class NetexExport < ExportTask
- def export_options
- super.merge(:format => :netex)
+ enumerize :references_type, in: %w( all network line company groupofline )
+
+ def action_params
+ {
+ "parameters" => {
+ "netex-export" => {
+ "name" => name,
+ "references_type" => references_type,
+ "user_name" => user_name,
+ "organisation_name" => organisation.name,
+ "referential_name" => referential.name,
+ }
+ }
+ }
+ end
+
+ def data_format
+ "netex"
end
end
diff --git a/app/views/exports/_fields_gtfs_export.erb b/app/views/export_tasks/_fields_gtfs_export.html.erb
index 3ec95c181..3ec95c181 100644
--- a/app/views/exports/_fields_gtfs_export.erb
+++ b/app/views/export_tasks/_fields_gtfs_export.html.erb
diff --git a/app/views/exports/_fields_hub_export.erb b/app/views/export_tasks/_fields_hub_export.html.erb
index 4d6f6f177..fc7cf7112 100644
--- a/app/views/exports/_fields_hub_export.erb
+++ b/app/views/export_tasks/_fields_hub_export.html.erb
@@ -1,3 +1,2 @@
-<%= I18n.t("formtastic.titles.export.vjas.size", size: Chouette::VehicleJourneyAtStop.count) if Chouette::VehicleJourneyAtStop.count > 50000 %>
<%= form.input :start_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export.start_date")} %>
<%= form.input :end_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export.end_date")} %>
diff --git a/app/views/export_tasks/_fields_kml_export.html.erb b/app/views/export_tasks/_fields_kml_export.html.erb
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/app/views/export_tasks/_fields_kml_export.html.erb
diff --git a/app/views/export_tasks/_fields_neptune_export.html.erb b/app/views/export_tasks/_fields_neptune_export.html.erb
new file mode 100644
index 000000000..57826d972
--- /dev/null
+++ b/app/views/export_tasks/_fields_neptune_export.html.erb
@@ -0,0 +1,4 @@
+<%= form.input :start_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export.start_date")} %>
+<%= form.input :end_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export.end_date")} %>
+<%= form.input :projection_type, :as => :hidden, :input_html => { :value => @referential.projection_type || "" } %>
+<%= form.input :extensions , :as => :boolean%>
diff --git a/app/views/export_tasks/_fields_netex_export.html.erb b/app/views/export_tasks/_fields_netex_export.html.erb
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/app/views/export_tasks/_fields_netex_export.html.erb
diff --git a/app/views/export_tasks/new.html.erb b/app/views/export_tasks/new.html.erb
new file mode 100644
index 000000000..92753a675
--- /dev/null
+++ b/app/views/export_tasks/new.html.erb
@@ -0,0 +1,31 @@
+<%= title_tag t(".title") %>
+<ul class="nav nav-pills">
+ <% ExportTask.formats.each do |format| %>
+ <li role="presentation"><a href="#<%= format %>" class="<%= format %>" title='<%= t(:"enumerize.data_format_detail.#{format}")%>' data-toggle="tab"><%= t(:"enumerize.data_format.#{format}") %></a></li>
+ <% end %>
+</ul>
+
+<div class="tab-content">
+<% @available_exports.each do |export_task| %>
+ <%= semantic_form_for [@referential, export_task], :as => :export_task, :url => referential_export_tasks_path(@referential), :namespace => export_task.data_format ,:html => { :id => "#{export_task.data_format}", :class => "tab-pane highlight"} do |form| %>
+ <%= form.inputs do %>
+ <%= form.input :user_name, :as => :hidden, :input_html => { :value => current_user.name } %> <%= form.input :user_id, :as => :hidden, :input_html => { :value => current_user.id } %>
+ <%= form.input :data_format, :as => :hidden %>
+ <%= form.input :referential_id, :as => :hidden, :input_html => { :value => @referential.id } %>
+ <%= form.input :name %>
+ <%= form.input :references_type, :as => :select, :include_blank => false %>
+ <% end %>
+
+ <%= render partial: "fields_#{export_task.data_format}_export", :locals => { :form => form } %>
+
+ <%= form.actions do %>
+ <%= form.action :submit, :as => :button , :label => t( 'formtastic.export' ) %>
+ <%= form.action :cancel, :as => :link %>
+ <% end %>
+
+ <% end %>
+<% end %>
+</div>
+
+<%= javascript_include_tag new_referential_export_task_path(@referential, :format => :js) %>
+
diff --git a/app/views/export_tasks/new.js.coffee b/app/views/export_tasks/new.js.coffee
new file mode 100644
index 000000000..21eba2e05
--- /dev/null
+++ b/app/views/export_tasks/new.js.coffee
@@ -0,0 +1,2 @@
+jQuery ->
+ $('#workspace.export_tasks .nav a:first').tab('show')
diff --git a/app/views/exports/_fields_neptune_export.erb b/app/views/exports/_fields_neptune_export.erb
deleted file mode 100644
index 20fa9085c..000000000
--- a/app/views/exports/_fields_neptune_export.erb
+++ /dev/null
@@ -1,3 +0,0 @@
- <%= form.input :start_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export.start_date")} %>
- <%= form.input :end_date, :as => :date_picker, :input_html => { :title => t("formtastic.titles.export.end_date")} %>
- <%= form.input :extensions , :as => :boolean%>
diff --git a/app/views/exports/index.html.erb b/app/views/exports/index.html.erb
index 8775bbd71..a0310e6d1 100644
--- a/app/views/exports/index.html.erb
+++ b/app/views/exports/index.html.erb
@@ -6,7 +6,7 @@
<% content_for :sidebar do %>
<ul class="actions">
- <li><%= link_to t('exports.actions.new'), new_referential_export_path(@referential), :class => "add" %></li>
+ <li><%= link_to t('exports.actions.new'), new_referential_export_task_path(@referential), :class => "add" %></li>
<li><%= link_to t('rule_parameter_sets.actions.index'), referential_rule_parameter_sets_path(@referential), :class => "link" %></li>
</ul>
<% end %>
diff --git a/app/views/exports/new.html.erb b/app/views/exports/new.html.erb
deleted file mode 100644
index fe5961ce9..000000000
--- a/app/views/exports/new.html.erb
+++ /dev/null
@@ -1,32 +0,0 @@
-<%= title_tag t(".title") %>
-
-<%= semantic_form_for([@referential, @export], :as => :export, :url => new_referential_export_path(@referential), :method => :get) do |form| %>
- <%= form.inputs do %>
- <%= form.input :type, :as => :radio, :collection => Export.types.map { |format| [ Export.format_label(format), format]}, :required => true, :include_blank => false %>
- <% end %>
-<% end %>
-
-<% @available_exports.each do |export| %>
- <%= semantic_form_for [@referential, export], :as => :export, :url => referential_exports_path(@referential), :namespace => export.type.underscore ,:html => { :id => "#{export.type}_new", :style => ('display: none' unless @export == export)} do |form| %>
- <%= form.inputs do %>
- <%= fields_for_export_type form %>
- <% end %>
- <%= form.inputs do %>
- <%= form.input :type, :as => :hidden %>
-
- <p class="warning"><%= t('.'+export_partial_name(form)+'.warning',:default => "")%></p>
- <%= form.input :references_type, :as => :select, :collection => export.references_types.map { |c| [ c.model_name.human.capitalize.pluralize, c.name ] }, :include_blank => t(".all") %>
-
- <% export.references_types.each do |type| %>
- <%= type_ids_model_references_input(form, @export, Export, type).input %>
- <% end %>
- <% end %>
-
- <%= form.actions do %>
- <%= form.action :submit, :as => :button , :label => t( 'formtastic.export' ) %>
- <%= form.action :cancel, :as => :link %>
- <% end %>
- <% end %>
-<% end %>
-
-<%= javascript_include_tag new_referential_export_path(@referential, :format => :js) %>
diff --git a/app/views/exports/new.js.coffee b/app/views/exports/new.js.coffee
deleted file mode 100644
index aafa70bed..000000000
--- a/app/views/exports/new.js.coffee
+++ /dev/null
@@ -1,4 +0,0 @@
-jQuery ->
- <% Export.all_references_types.map { |type| type_ids_model_references_type( Export, type)}.each do |rt| %>
- $("textarea.<%= rt.input_class %>").tokenInput('<%= references_referential_compliance_check_tasks_path(@referential, :type => rt.relation_name, :format => :json) %>', { prePopulate: $('#').data('pre'), minChars: 1, hintText: '<%= t('search_hint') %>', noResultsText: '<%= t('no_result_text') %>', searchingText: '<%= t('searching_term') %>'});
- <% end %>
diff --git a/config/locales/enumerize.en.yml b/config/locales/enumerize.en.yml
index 574c316cd..f65885ee8 100644
--- a/config/locales/enumerize.en.yml
+++ b/config/locales/enumerize.en.yml
@@ -14,4 +14,23 @@ en:
normal: "Regularly scheduled drop off"
forbidden: "No drop off available"
request_stop: "Drop off if requested"
- is_flexible: "Booking requested for drop off" \ No newline at end of file
+ is_flexible: "Booking requested for drop off"
+ references_type:
+ all: "All datas"
+ network: "Networks"
+ line: "Lines"
+ company: "Companies"
+ groupofline: "Group of lines"
+ stoparea: "Stop areas"
+ data_format:
+ neptune: "Neptune"
+ gtfs: "GTFS (General Transit Feed Specification)"
+ netex: "NeTEx"
+ hub: "HUB 1.3"
+ kml: "KML"
+ data_format_detail:
+ neptune: ""
+ gtfs: "General Transit Feed Specification"
+ netex: "Experimental"
+ hub: "Specific Transdev Format"
+ kml: "line, route, ... drawings on Keyhole Markup Language format" \ No newline at end of file
diff --git a/config/locales/enumerize.fr.yml b/config/locales/enumerize.fr.yml
index 0dad16319..2902f1835 100644
--- a/config/locales/enumerize.fr.yml
+++ b/config/locales/enumerize.fr.yml
@@ -14,4 +14,23 @@ fr:
normal: "Descente autorisée"
forbidden: "Descente interdite"
request_stop: "Descente sur demande au conducteur"
- is_flexible: "Descente sur réservation" \ No newline at end of file
+ is_flexible: "Descente sur réservation"
+ references_type:
+ all: "Toutes les données"
+ network: "Réseaux"
+ line: "Lignes"
+ company: "Transporteurs"
+ groupofline: "Groupe de lignes"
+ stoparea: "Arrêts"
+ data_format:
+ neptune: "Profil Neptune"
+ gtfs: "GTFS"
+ netex: "Profil NeTEx"
+ hub: "HUB 1.3"
+ kml: "KML"
+ data_format_detail:
+ neptune: ""
+ gtfs: "General Transit Feed Specification défini par Google"
+ netex: "Expérimental"
+ hub: "Format spécifique Transdev"
+ kml: "Tracés de lignes, séquences d'arrêts, ... en 'Keyhole Markup Language'" \ No newline at end of file
diff --git a/config/locales/exchange.yml b/config/locales/exchange.yml
deleted file mode 100644
index 7c8ff9646..000000000
--- a/config/locales/exchange.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-en:
- exchange:
- format:
- neptune: "Neptune"
- gtfs: "GTFS (General Transit Feed Specification)"
- csv: "CSV (Chouette format)"
- netex: "NeTEx (experimental)"
- hub: "HUB 1.3 (Specific Transdev Format)"
- kml: "KML (line, route, ... drawings on Keyhole Markup Language format)"
-fr:
- exchange:
- format:
- neptune: "profil Neptune"
- gtfs: "GTFS (General Transit Feed Specification défini par Google)"
- csv: "CSV (format spécifique à Chouette)"
- netex: "profil NeTEx expérimental"
- hub: "HUB 1.3 (format spécifique Transdev)"
- kml: "KML (tracés de lignes, séquences d'arrêts, ... en 'Keyhole Markup Language')"
diff --git a/config/locales/export_tasks.en.yml b/config/locales/export_tasks.en.yml
new file mode 100644
index 000000000..a2cb4bc35
--- /dev/null
+++ b/config/locales/export_tasks.en.yml
@@ -0,0 +1,48 @@
+en:
+ export_tasks:
+ actions:
+ new: "New export"
+ new:
+ title: "New export"
+ flash: "Export task on queue, refresh page to see progression"
+ fields_gtfs_export:
+ warning: "Filter on stop areas export only GTFS stops and transfers files, these may contain extra attributes"
+ activemodel:
+ models:
+ export_task:
+ zero: "export"
+ one: "export"
+ other: "exports"
+ neptune_export:
+ zero: "export"
+ one: "Neptune export"
+ other: "exports"
+ gtfs_export:
+ zero: "export"
+ one: "GTFS export"
+ other: "exports"
+ netex_export:
+ zero: "export"
+ one: "NeTEx export"
+ other: "exports"
+ attributes:
+ export_task:
+ name: "Export name"
+ start_date: "Start date"
+ end_date: "End date"
+ extensions: "Extensions"
+ created_at: "Created on"
+ status: "Status"
+ references_type: "subset"
+ 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"
+ formtastic:
+ titles:
+ export_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" \ No newline at end of file
diff --git a/config/locales/export_tasks.fr.yml b/config/locales/export_tasks.fr.yml
new file mode 100644
index 000000000..e5e3eaea6
--- /dev/null
+++ b/config/locales/export_tasks.fr.yml
@@ -0,0 +1,48 @@
+fr:
+ export_tasks:
+ actions:
+ new: "Nouvel export"
+ new:
+ title: "Nouvel export"
+ flash: "La demande d'export est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression"
+ fields_gtfs_export:
+ warning: "Le filtre sur arrêts exporte uniquement les fichiers GTFS stops et transfers gtfs, ceux-ci pouvant contenir des attributs supplémentaires"
+ activemodel:
+ models:
+ export_task:
+ zero: "export"
+ one: "export"
+ other: "exports"
+ neptune_export:
+ zero: "export"
+ one: "export Neptune"
+ other: "exports"
+ gtfs_export:
+ zero: "export"
+ one: "export GTFS"
+ other: "exports"
+ netex_export:
+ zero: "export"
+ one: "export NeTEx"
+ other: "exports"
+ attributes:
+ export_task:
+ name: "Nom de l'export"
+ start_date: "Date de début"
+ end_date: "Date de fin"
+ extensions: "Extensions"
+ created_at: "Créé le"
+ status: "Status"
+ references_type: "Sous ensemble"
+ 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"
+ formtastic:
+ titles:
+ export_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"
diff --git a/config/routes.rb b/config/routes.rb
index b795a2c70..d2d24dfe3 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -86,7 +86,8 @@ ChouetteIhm::Application.routes.draw do
end
end
- resources :exports do
+ resources :export_tasks, :only => [:new, :create]
+ resources :exports, :only => [:index, :show, :destroy] do
collection do
get 'references'
end