X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/38369675b7b574c044a178d9f67ce91ed3d407c1..f3a9d2e9d61f3f596d559ac75d54c08bc60fc629:/app/models/trace.rb diff --git a/app/models/trace.rb b/app/models/trace.rb index 35fee0bf4..818cc363b 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -202,14 +202,14 @@ class Trace < ApplicationRecord logger.info("GPX Import importing #{name} (#{id}) from #{user.email}") file.open do |file| - gpx = GPX::File.new(file.path) + gpx = GPX::File.new(file.path, :maximum_points => Settings.max_trace_size) f_lat = 0 f_lon = 0 first = true # If there are any existing points for this trace then delete them - Tracepoint.where(:gpx_id => id).delete_all + Tracepoint.where(:trace => id).delete_all gpx.points.each_slice(1_000) do |points| # Gather the trace points together for a bulk import @@ -242,10 +242,10 @@ class Trace < ApplicationRecord end if gpx.actual_points.positive? - max_lat = Tracepoint.where(:gpx_id => id).maximum(:latitude) - min_lat = Tracepoint.where(:gpx_id => id).minimum(:latitude) - max_lon = Tracepoint.where(:gpx_id => id).maximum(:longitude) - min_lon = Tracepoint.where(:gpx_id => id).minimum(:longitude) + max_lat = Tracepoint.where(:trace => id).maximum(:latitude) + min_lat = Tracepoint.where(:trace => id).minimum(:latitude) + max_lon = Tracepoint.where(:trace => id).maximum(:longitude) + min_lon = Tracepoint.where(:trace => id).minimum(:longitude) max_lat = max_lat.to_f / 10000000 min_lat = min_lat.to_f / 10000000 @@ -267,6 +267,14 @@ class Trace < ApplicationRecord end end + def schedule_import + TraceImporterJob.new(self).enqueue(:priority => user.traces.where(:inserted => false).count) + end + + def schedule_destruction + TraceDestroyerJob.perform_later(self) + end + private def content_type(file)