diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/export_task.rb | 35 | ||||
| -rw-r--r-- | app/models/gtfs_export.rb | 12 |
2 files changed, 32 insertions, 15 deletions
diff --git a/app/models/export_task.rb b/app/models/export_task.rb index 3dbda0a70..f02cb914e 100644 --- a/app/models/export_task.rb +++ b/app/models/export_task.rb @@ -12,7 +12,7 @@ class ExportTask enumerize :data_format, in: %w( neptune netex gtfs hub kml ) attr_accessor :referential_id, :user_id, :user_name, :references_type, :data_format, :name, :projection_type, :reference_ids - + validates_presence_of :referential_id validates_presence_of :user_id validates_presence_of :user_name @@ -22,16 +22,17 @@ class ExportTask validate :period_validation after_initialize :init_period - + def initialize( params = {} ) run_callbacks :initialize do params.each {|k,v| send("#{k}=",v)} end end - + def period_validation - st_date = Date.parse(start_date) unless start_date.blank? - ed_date = Date.parse(end_date) unless end_date.blank? + st_date = start_date.is_a?(String) ? Date.parse(start_date) : start_date + ed_date = end_date.is_a?(String) ? Date.parse(end_date) : end_date + unless Chouette::TimeTable.start_validity_period.nil? || st_date.nil? tt_st_date = Chouette::TimeTable.start_validity_period errors.add(:start_date, ExportTask.human_attribute_name("start_date_greater_than" , {:tt_st_date => tt_st_date})) unless tt_st_date <= st_date @@ -44,7 +45,7 @@ class ExportTask errors.add(:end_date, ExportTask.human_attribute_name("end_date_less_than", {:tt_ed_date => tt_ed_date})) unless ed_date <= tt_ed_date end end - + def init_period unless Chouette::TimeTable.start_validity_period.nil? if start_date.nil? @@ -65,14 +66,12 @@ class ExportTask end def save - puts self.errors.inspect - puts self.errors.size if self.valid? # Call Iev Server - begin + begin Ievkit.create_job( referential.slug, "exporter", data_format, { :file1 => params_io, - } ) + } ) rescue Exception => exception raise exception end @@ -95,14 +94,26 @@ class ExportTask h["parameters"] = action_params end end - + def action_params {} end - + def params_io file = StringIO.new( params.to_json ) Faraday::UploadIO.new(file, "application/json", "parameters.json") end + def self.optional_attributes(references_type) + [] + end + + def optional_attributes + self.class.optional_attributes(references_type.to_s) + end + + def optional_attribute?(attribute) + optional_attributes.include? attribute.to_sym + end + end diff --git a/app/models/gtfs_export.rb b/app/models/gtfs_export.rb index bef468c32..d0b9fc4f9 100644 --- a/app/models/gtfs_export.rb +++ b/app/models/gtfs_export.rb @@ -1,12 +1,12 @@ class GtfsExport < ExportTask - validates_presence_of :time_zone + validates_presence_of :time_zone, unless: Proc.new { |e| e.optional_attribute? :time_zone } attr_accessor :object_id_prefix, :time_zone enumerize :references_type, in: %w( network line company group_of_line stop_area ) - + after_initialize :init_params - + def init_params if time_zone.nil? self.time_zone = "Paris" @@ -34,6 +34,12 @@ class GtfsExport < ExportTask } end + def self.optional_attributes(references_type) + super.tap do |optional_attributes| + optional_attributes.push :time_zone, :start_date, :end_date if references_type == "stop_area" + end + end + def data_format "gtfs" end |
