X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/a9b616af123d52a82b8f65915164e11ab8d71ba8..2dfe6f3f2e911101f4e4e3b90a00e2ae97725d04:/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)