diff options
| author | Zakaria BOUZIANE | 2015-02-26 14:54:18 +0100 |
|---|---|---|
| committer | Zakaria BOUZIANE | 2015-02-26 14:54:18 +0100 |
| commit | 6c799be447a241f0eb232fc4cea3405612acd4e8 (patch) | |
| tree | f4ca3be7a7ba189900dedeb0c66feb2045c8437b /app/models | |
| parent | 0adee77238b5c70bcf518e939e16136f3a481493 (diff) | |
| download | chouette-core-6c799be447a241f0eb232fc4cea3405612acd4e8.tar.bz2 | |
Instable state: postgresql_adapter.rb: undefined method table_name for Export:Class
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/csv_export.rb | 10 | ||||
| -rw-r--r-- | app/models/export.rb | 150 | ||||
| -rw-r--r-- | app/models/export_log_message.rb | 70 | ||||
| -rw-r--r-- | app/models/gtfs_export.rb | 44 | ||||
| -rw-r--r-- | app/models/hub_export.rb | 58 | ||||
| -rw-r--r-- | app/models/import.rb | 2 | ||||
| -rw-r--r-- | app/models/kml_export.rb | 16 | ||||
| -rw-r--r-- | app/models/neptune_export.rb | 34 | ||||
| -rw-r--r-- | app/models/netex_export.rb | 10 | ||||
| -rw-r--r-- | app/models/vehicle_journey_export.rb | 282 |
10 files changed, 297 insertions, 379 deletions
diff --git a/app/models/csv_export.rb b/app/models/csv_export.rb index 4afacf81a..9fff79be3 100644 --- a/app/models/csv_export.rb +++ b/app/models/csv_export.rb @@ -1,7 +1,7 @@ -class CsvExport < Export +# class CsvExport < Export - def export_options - super.merge(:format => :csv) - end +# def export_options +# super.merge(:format => :csv) +# end -end +# end diff --git a/app/models/export.rb b/app/models/export.rb index 99e499c2d..7ee9704f6 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -1,137 +1,55 @@ -class Export < ActiveRecord::Base - - belongs_to :referential - validates_presence_of :referential_id - - validates_inclusion_of :status, :in => %w{ pending processing completed failed } - - has_many :log_messages, -> { order('position ASC') }, :class_name => "ExportLogMessage", :dependent => :delete_all - - serialize :options - - include ::TypeIdsModelable - - def self.option(name) - name = name.to_s - - define_method(name) do - self.options and self.options[name] - end - - define_method("#{name}=") do |prefix| - (self.options ||= {})[name] = prefix - end - end - - - def exporter - exporter ||= ::Chouette::Exporter.new(referential.slug) - end - - @@root = "#{Rails.root}/tmp/exports" - cattr_accessor :root - - after_destroy :destroy_file - def destroy_file - FileUtils.rm file if File.exists? file - end - - def file - "#{root}/#{id}.zip" - end +class Export + extend Enumerize + extend ActiveModel::Naming + include ActiveModel::Model + + enumerize :export_status, in: %w{created scheduled terminated canceled aborted}, default: "created", predicates: true + enumerize :export_format, in: %w{neptune netex gtfs hub kml}, default: "neptune", predicates: true + + attr_reader :datas - def name - "#{self.class.model_name.human} #{id}" + def initialize(options=Hashie::Mash.new) + @datas = options + @export_status = @datas.status.downcase if @datas.status + @export_format = @datas.type.downcase if @datas.type end - def export_options - { :export_id => self.id, :o => export_object_type }.tap do |options| - options[:id] = reference_ids.join(',') if reference_ids.present? + def percentage_progress + if %w{created}.include? export_status + 0 + elsif %w{ terminated canceled aborted }.include? export_status + 100 + else + 20 end end - def export_object_type - references_relation ? references_relation.singularize : "line" + def links + @datas.links end - before_validation :define_default_attributes, :on => :create - def define_default_attributes - self.status ||= "pending" - self.options ||= {} + def name + @datas.parameters.name end - after_create :delayed_export - def delayed_export - delay.export + def user_name + @datas.parameters.user_name end - def export - result_severity = "ok" - FileUtils.mkdir_p root - - begin - # delayed job may repeat call - ExportLogMessage.where(:export_id => self.id).delete_all - log_messages.create :severity => "ok", :key => :started - - exporter.export file, export_options - - update_attribute :status, "completed" - rescue => e - Rails.logger.error "Export #{id} failed : #{e}, #{e.backtrace}" - update_attribute :status, "failed" - result_severity = "error" - end - - log_messages.create :severity => result_severity, :key => status + def no_save + @datas.parameters.no_save end - - def self.all_references_types - [ Chouette::Line, Chouette::Network, Chouette::Company , Chouette::StopArea] + def filename + @datas.filename end - def references_types - [ Chouette::Line, Chouette::Network, Chouette::Company ] + def created_at + Time.at(@datas.created.to_i / 1000) end - # @@references_types = [ Chouette::Line, Chouette::Network, Chouette::Company ] - # cattr_reader :references_types - - # validates_inclusion_of :references_type, :in => references_types.map(&:to_s), :allow_blank => true, :allow_nil => true - - def self.format_name(format) - name_by_format = { - "NeptuneExport" => "Neptune", - "CsvExport" => "CSV", - "GtfsExport" => "GTFS", - "NetexExport" => "NeTEx", - "KmlExport" => "KML", - "HubExport" => "HUB" - } - name_by_format[format] - end - - def self.format_label(format) - I18n.t 'exchange.format.'+format.sub("Export",'').downcase - end - - def self.types - unless Rails.env.development? - subclasses.map(&:to_s) - else - # FIXME - %w{NeptuneExport CsvExport GtfsExport NetexExport KmlExport HubExport} - end - end - - def self.new(attributes = {}, options = {}, &block) - if self == Export - Object.const_get(attributes.delete(:type) || "NeptuneExport").new(attributes, options) - else - super - end + def updated_at + Time.at(@datas.updated.to_i / 1000) end end - diff --git a/app/models/export_log_message.rb b/app/models/export_log_message.rb index 4bb9d3cc7..9d48f288e 100644 --- a/app/models/export_log_message.rb +++ b/app/models/export_log_message.rb @@ -1,42 +1,42 @@ -class ExportLogMessage < ActiveRecord::Base - belongs_to :export +# class ExportLogMessage < ActiveRecord::Base +# belongs_to :export - acts_as_list :scope => :export +# acts_as_list :scope => :export - validates_presence_of :key - validates_inclusion_of :severity, :in => %w{info warning error ok uncheck fatal} +# validates_presence_of :key +# validates_inclusion_of :severity, :in => %w{info warning error ok uncheck fatal} - def arguments=(arguments) - write_attribute :arguments, (arguments.to_json if arguments.present?) - end +# def arguments=(arguments) +# write_attribute :arguments, (arguments.to_json if arguments.present?) +# end - def arguments - @decoded_arguments ||= - begin - if (stored_arguments = raw_attributes).present? - ActiveSupport::JSON.decode stored_arguments - else - {} - end - end - end +# def arguments +# @decoded_arguments ||= +# begin +# if (stored_arguments = raw_attributes).present? +# ActiveSupport::JSON.decode stored_arguments +# else +# {} +# end +# end +# end - def raw_attributes - read_attribute(:arguments) - end +# def raw_attributes +# read_attribute(:arguments) +# end - before_validation :define_default_attributes, :on => :create - def define_default_attributes - self.severity ||= "info" - end +# before_validation :define_default_attributes, :on => :create +# def define_default_attributes +# self.severity ||= "info" +# end - def full_message - last_key=key.rpartition("|").last - begin - I18n.translate last_key, arguments.symbolize_keys.merge(:scope => "export_log_messages.messages").merge(:default => :undefined).merge(:key => last_key) - rescue => e - Rails.logger.error "missing arguments for message "+last_key - I18n.translate "WRONG_DATA",{"0"=>last_key}.symbolize_keys.merge(:scope => "export_log_messages.messages").merge(:default => :undefined).merge(:key => "WRONG_DATA") - end - end -end +# def full_message +# last_key=key.rpartition("|").last +# begin +# I18n.translate last_key, arguments.symbolize_keys.merge(:scope => "export_log_messages.messages").merge(:default => :undefined).merge(:key => last_key) +# rescue => e +# Rails.logger.error "missing arguments for message "+last_key +# I18n.translate "WRONG_DATA",{"0"=>last_key}.symbolize_keys.merge(:scope => "export_log_messages.messages").merge(:default => :undefined).merge(:key => "WRONG_DATA") +# end +# end +# end diff --git a/app/models/gtfs_export.rb b/app/models/gtfs_export.rb index 6ee83098f..5f3364ef1 100644 --- a/app/models/gtfs_export.rb +++ b/app/models/gtfs_export.rb @@ -1,28 +1,28 @@ -class GtfsExport < Export +# class GtfsExport < Export - validates_presence_of :time_zone - option :time_zone - option :object_id_prefix +# validates_presence_of :time_zone +# option :time_zone +# option :object_id_prefix - after_initialize :init_params +# after_initialize :init_params - def references_types - [ Chouette::Line, Chouette::Network, Chouette::Company, Chouette::StopArea ] - end +# 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 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 -end +# end diff --git a/app/models/hub_export.rb b/app/models/hub_export.rb index 3d93cbfae..88c8e061c 100644 --- a/app/models/hub_export.rb +++ b/app/models/hub_export.rb @@ -1,35 +1,35 @@ -class HubExport < Export +# class HubExport < Export - option :start_date - option :end_date +# option :start_date +# option :end_date - after_initialize :init_period +# after_initialize :init_period - 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 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 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 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 exporter - exporter ||= ::Chouette::Hub::Exporter.new(referential, self) - end +# def exporter +# exporter ||= ::Chouette::Hub::Exporter.new(referential, self) +# end -end +# end diff --git a/app/models/import.rb b/app/models/import.rb index 526d77783..6a6b78c9e 100644 --- a/app/models/import.rb +++ b/app/models/import.rb @@ -11,7 +11,7 @@ class Import def initialize(options=Hashie::Mash.new) @datas = options @import_status = @datas.status.downcase if @datas.status - @import_format = @datas.type.downcase + @import_format = @datas.type.downcase if @datas.type end def percentage_progress diff --git a/app/models/kml_export.rb b/app/models/kml_export.rb index c450bd297..aa27e331a 100644 --- a/app/models/kml_export.rb +++ b/app/models/kml_export.rb @@ -1,11 +1,11 @@ -class KmlExport < Export +# class KmlExport < Export - def export_options - super.merge(:format => :kml) - end +# def export_options +# super.merge(:format => :kml) +# end - def exporter - exporter ||= ::Chouette::Kml::Exporter.new(referential, self) - end +# def exporter +# exporter ||= ::Chouette::Kml::Exporter.new(referential, self) +# end -end +# end diff --git a/app/models/neptune_export.rb b/app/models/neptune_export.rb index 4d8aff76d..67dbc33d1 100644 --- a/app/models/neptune_export.rb +++ b/app/models/neptune_export.rb @@ -1,20 +1,20 @@ -class NeptuneExport < Export +# class NeptuneExport < Export - option :start_date - option :end_date +# option :start_date +# option :end_date - 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 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 -end +# end diff --git a/app/models/netex_export.rb b/app/models/netex_export.rb index c29ef2b45..1845d1c06 100644 --- a/app/models/netex_export.rb +++ b/app/models/netex_export.rb @@ -1,7 +1,7 @@ -class NetexExport < Export +# class NetexExport < Export - def export_options - super.merge(:format => :netex) - end +# def export_options +# super.merge(:format => :netex) +# end -end +# end diff --git a/app/models/vehicle_journey_export.rb b/app/models/vehicle_journey_export.rb index 4c2c62fa8..916c9af0d 100644 --- a/app/models/vehicle_journey_export.rb +++ b/app/models/vehicle_journey_export.rb @@ -1,167 +1,167 @@ -# -*- coding: utf-8 -*- -require "csv" -require "zip" +# # -*- coding: utf-8 -*- +# require "csv" +# require "zip" -class VehicleJourneyExport - include ActiveModel::Validations - include ActiveModel::Conversion - extend ActiveModel::Naming +# class VehicleJourneyExport +# include ActiveModel::Validations +# include ActiveModel::Conversion +# extend ActiveModel::Naming - attr_accessor :vehicle_journeys, :route +# attr_accessor :vehicle_journeys, :route - def initialize(attributes = {}) - attributes.each { |name, value| send("#{name}=", value) } - end +# def initialize(attributes = {}) +# attributes.each { |name, value| send("#{name}=", value) } +# end - def persisted? - false - end +# def persisted? +# false +# end - def label(name) - I18n.t "vehicle_journey_exports.label.#{name}" - end +# def label(name) +# I18n.t "vehicle_journey_exports.label.#{name}" +# end - def column_names - ["", label("vehicle_journey_id")] + vehicle_journeys.collect(&:id) - end +# def column_names +# ["", label("vehicle_journey_id")] + vehicle_journeys.collect(&:id) +# end - # produce a map stop_id => departure time for a vehicle_journey - def time_by_stops(vj) - {}.tap do |hash| - vj.vehicle_journey_at_stops.each do |vjas| - hash[ "#{vjas.stop_point_id}"] = vjas.departure_time.strftime("%H:%M") - end - end - end +# # produce a map stop_id => departure time for a vehicle_journey +# def time_by_stops(vj) +# {}.tap do |hash| +# vj.vehicle_journey_at_stops.each do |vjas| +# hash[ "#{vjas.stop_point_id}"] = vjas.departure_time.strftime("%H:%M") +# end +# end +# end - def time_tables (vj) - (vj.time_tables.collect{ |t| t.id }) - end +# def time_tables (vj) +# (vj.time_tables.collect{ |t| t.id }) +# end - def time_tables_array - (vehicle_journeys.collect{ |vj| time_tables(vj).to_s[1..-2] } ) - end +# def time_tables_array +# (vehicle_journeys.collect{ |vj| time_tables(vj).to_s[1..-2] } ) +# end - def vehicle_journey_at_stops_array - (vehicle_journeys.collect{ |vj| time_by_stops vj } ) - end +# def vehicle_journey_at_stops_array +# (vehicle_journeys.collect{ |vj| time_by_stops vj } ) +# end - def boolean_code(b) - b.nil? ? "" : label("b_"+b.to_s) - end +# def boolean_code(b) +# b.nil? ? "" : label("b_"+b.to_s) +# end - def number_array - (vehicle_journeys.collect{ |vj| vj.number ? vj.number.to_s : "" } ) - end +# def number_array +# (vehicle_journeys.collect{ |vj| vj.number ? vj.number.to_s : "" } ) +# end - def published_journey_name_array - (vehicle_journeys.collect{ |vj| vj.published_journey_name ? vj.published_journey_name : "" } ) - end +# def published_journey_name_array +# (vehicle_journeys.collect{ |vj| vj.published_journey_name ? vj.published_journey_name : "" } ) +# end - def flexible_service_array - (vehicle_journeys.collect{ |vj| boolean_code vj.flexible_service } ) - end +# def flexible_service_array +# (vehicle_journeys.collect{ |vj| boolean_code vj.flexible_service } ) +# end - def mobility_restricted_suitability_array - (vehicle_journeys.collect{ |vj| boolean_code vj.mobility_restricted_suitability } ) - end +# def mobility_restricted_suitability_array +# (vehicle_journeys.collect{ |vj| boolean_code vj.mobility_restricted_suitability } ) +# end - def empty_array - (vehicle_journeys.collect{ |vj| "" } ) - end +# def empty_array +# (vehicle_journeys.collect{ |vj| "" } ) +# end - def times_of_stop(stop_id,vjas_array) - a = [] - vjas_array.each do |map| - a << (map[stop_id.to_s].present? ? map[stop_id.to_s] : "") - end - a - end +# def times_of_stop(stop_id,vjas_array) +# a = [] +# vjas_array.each do |map| +# a << (map[stop_id.to_s].present? ? map[stop_id.to_s] : "") +# end +# a +# end - def to_csv(options = {}) - CSV.generate(options) do |csv| - csv << column_names - csv << ["", label("number")] + number_array - csv << ["", label("published_journey_name")] + published_journey_name_array - csv << ["", label("mobility")] + mobility_restricted_suitability_array - csv << ["", label("flexible_service")] + flexible_service_array - csv << ["", label("time_table_ids")] + time_tables_array - csv << [label("stop_id"), label("stop_name")] + empty_array - vjas_array = vehicle_journey_at_stops_array - route.stop_points.each_with_index do |stop_point, index| - times = times_of_stop(stop_point.id,vjas_array) - csv << [stop_point.id, stop_point.stop_area.name] + times - end - end - end +# def to_csv(options = {}) +# CSV.generate(options) do |csv| +# csv << column_names +# csv << ["", label("number")] + number_array +# csv << ["", label("published_journey_name")] + published_journey_name_array +# csv << ["", label("mobility")] + mobility_restricted_suitability_array +# csv << ["", label("flexible_service")] + flexible_service_array +# csv << ["", label("time_table_ids")] + time_tables_array +# csv << [label("stop_id"), label("stop_name")] + empty_array +# vjas_array = vehicle_journey_at_stops_array +# route.stop_points.each_with_index do |stop_point, index| +# times = times_of_stop(stop_point.id,vjas_array) +# csv << [stop_point.id, stop_point.stop_area.name] + times +# end +# end +# end - def tt_day_types(tt) - type = tt.monday ? label("monday") : ".." - type += tt.tuesday ? label("tuesday") : ".." - type += tt.wednesday ? label("wednesday") : ".." - type += tt.thursday ? label("thursday") : ".." - type += tt.friday ? label("friday") : ".." - type += tt.saturday ? label("saturday") : ".." - type += tt.sunday ? label("sunday") : ".." - type - end +# def tt_day_types(tt) +# type = tt.monday ? label("monday") : ".." +# type += tt.tuesday ? label("tuesday") : ".." +# type += tt.wednesday ? label("wednesday") : ".." +# type += tt.thursday ? label("thursday") : ".." +# type += tt.friday ? label("friday") : ".." +# type += tt.saturday ? label("saturday") : ".." +# type += tt.sunday ? label("sunday") : ".." +# type +# end - def tt_periods(tt) - periods = "" - tt.periods.each do |p| - periods += "["+p.period_start.to_s+" -> "+p.period_end.to_s+"] " - end - periods - end +# def tt_periods(tt) +# periods = "" +# tt.periods.each do |p| +# periods += "["+p.period_start.to_s+" -> "+p.period_end.to_s+"] " +# end +# periods +# end - def tt_peculiar_days(tt) - days = "" - tt.included_days.each do |d| - days += d.to_s+" " - end - days - end +# def tt_peculiar_days(tt) +# days = "" +# tt.included_days.each do |d| +# days += d.to_s+" " +# end +# days +# end - def tt_excluded_days(tt) - days = "" - tt.excluded_days.each do |d| - days += d.to_s+" " - end - days - end +# def tt_excluded_days(tt) +# days = "" +# tt.excluded_days.each do |d| +# days += d.to_s+" " +# end +# days +# end - def tt_data(tt) - [].tap do |array| - # code;name;tags;start;end;day types;periods;peculiar days;excluded days - array << tt.id.to_s - array << tt.comment - array << tt.tag_list - array << tt.start_date.to_s - array << tt.end_date.to_s - array << tt_day_types(tt) - array << tt_day_types(tt) - array << tt_periods(tt) - array << tt_peculiar_days(tt) - array << tt_excluded_days(tt) - end - end +# def tt_data(tt) +# [].tap do |array| +# # code;name;tags;start;end;day types;periods;peculiar days;excluded days +# array << tt.id.to_s +# array << tt.comment +# array << tt.tag_list +# array << tt.start_date.to_s +# array << tt.end_date.to_s +# array << tt_day_types(tt) +# array << tt_day_types(tt) +# array << tt_periods(tt) +# array << tt_peculiar_days(tt) +# array << tt_excluded_days(tt) +# end +# end - def time_tables_to_csv (options = {}) - tts = Chouette::TimeTable.all - CSV.generate(options) do |csv| - csv << label("tt_columns").split(";") - tts.each do |tt| - csv << tt_data(tt) - end - end - end +# def time_tables_to_csv (options = {}) +# tts = Chouette::TimeTable.all +# CSV.generate(options) do |csv| +# csv << label("tt_columns").split(";") +# tts.each do |tt| +# csv << tt_data(tt) +# 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) } - 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) } +# end +# end -end +# end |
