X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/be0e33862fedbf02e52a9e126cac31dfb5775b43..400db5803633c92cf5ac0adf1ec7de32211aedea:/app/models/trace.rb diff --git a/app/models/trace.rb b/app/models/trace.rb index d2c715245..bd8ab72b3 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -110,15 +110,15 @@ class Trace < ActiveRecord::Base end def large_picture_name - "#{GPX_IMAGE_DIR}/#{id}.gif" + "#{Settings.gpx_image_dir}/#{id}.gif" end def icon_picture_name - "#{GPX_IMAGE_DIR}/#{id}_icon.gif" + "#{Settings.gpx_image_dir}/#{id}_icon.gif" end def trace_name - "#{GPX_TRACE_DIR}/#{id}.gpx" + "#{Settings.gpx_trace_dir}/#{id}.gpx" end def mime_type @@ -289,6 +289,8 @@ class Trace < ActiveRecord::Base # If there are any existing points for this trace then delete them Tracepoint.where(:gpx_id => id).delete_all + # Gather the trace points together for a bulk import + tracepoints = [] gpx.points do |point| if first f_lat = point.latitude @@ -303,9 +305,16 @@ class Trace < ActiveRecord::Base tp.timestamp = point.timestamp tp.gpx_id = id tp.trackid = point.segment - tp.save! + tracepoints << tp end + # Run the before_save and before_create callbacks, and then import them in bulk with activerecord-import + tracepoints.each do |tp| + tp.run_callbacks(:save) { false } + tp.run_callbacks(:create) { false } + end + Tracepoint.import(tracepoints) + if gpx.actual_points.positive? max_lat = Tracepoint.where(:gpx_id => id).maximum(:latitude) min_lat = Tracepoint.where(:gpx_id => id).minimum(:latitude)