]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/2999'
authorTom Hughes <tom@compton.nu>
Wed, 9 Dec 2020 14:51:04 +0000 (14:51 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 9 Dec 2020 14:51:04 +0000 (14:51 +0000)
1  2 
app/controllers/api/tracepoints_controller.rb

index f7b812f7c6be5d6d86d842e6dfaf50c8e96a7fd9,9dc6e0d8b3ca996ff91ae3f846704b42159d22aa..b2d755fe6caeaefccfac88a7e94ddf569c6467b6
@@@ -33,7 -33,7 +33,7 @@@ module Ap
        # get all the points
        ordered_points = Tracepoint.bbox(bbox).joins(:trace).where(:gpx_files => { :visibility => %w[trackable identifiable] }).order("gpx_id DESC, trackid ASC, timestamp ASC")
        unordered_points = Tracepoint.bbox(bbox).joins(:trace).where(:gpx_files => { :visibility => %w[public private] }).order("gps_points.latitude", "gps_points.longitude", "gps_points.timestamp")
-       points = ordered_points.union_all(unordered_points).offset(offset).limit(Settings.tracepoints_per_page)
+       points = ordered_points.union_all(unordered_points).offset(offset).limit(Settings.tracepoints_per_page).preload(:trace)
  
        doc = XML::Document.new
        doc.encoding = XML::Encoding::UTF_8
        trkseg = nil
        anon_track = nil
        anon_trkseg = nil
-       gpx_file = nil
        timestamps = false
  
        points.each do |point|
          if gpx_id != point.gpx_id
            gpx_id = point.gpx_id
            trackid = -1
-           gpx_file = Trace.find(gpx_id)
  
-           if gpx_file.trackable?
+           if point.trace.trackable?
              track = XML::Node.new "trk"
              doc.root << track
              timestamps = true
  
-             if gpx_file.identifiable?
-               track << (XML::Node.new("name") << gpx_file.name)
-               track << (XML::Node.new("desc") << gpx_file.description)
-               track << (XML::Node.new("url") << url_for(:controller => "/traces", :action => "show", :display_name => gpx_file.user.display_name, :id => gpx_file.id))
+             if point.trace.identifiable?
+               track << (XML::Node.new("name") << point.trace.name)
+               track << (XML::Node.new("desc") << point.trace.description)
+               track << (XML::Node.new("url") << url_for(:controller => "/traces", :action => "show", :display_name => point.trace.user.display_name, :id => point.trace.id))
              end
            else
              # use the anonymous track segment if the user hasn't allowed
@@@ -85,7 -83,7 +83,7 @@@
          end
  
          if trackid != point.trackid
-           if gpx_file.trackable?
+           if point.trace.trackable?
              trkseg = XML::Node.new "trkseg"
              track << trkseg
              trackid = point.trackid
@@@ -98,7 -96,7 +96,7 @@@
            end
          end
  
 -        trkseg << point.to_xml_node(timestamps)
 +        trkseg << point.to_xml_node(:print_timestamp => timestamps)
        end
  
        response.headers["Content-Disposition"] = "attachment; filename=\"tracks.gpx\""