From a65cb8428867d92d76bbf051bbd4614966636cf5 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 11 Nov 2020 16:43:58 +0000 Subject: [PATCH 1/3] Remove unused code --- app/models/user.rb | 20 -------------------- test/models/user_test.rb | 20 -------------------- 2 files changed, 40 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 7e1f1c6d63..9cc8b7d836 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -153,26 +153,6 @@ def self.authenticate(options) user end - def to_xml - doc = OSM::API.new.get_xml_doc - doc.root << to_xml_node - doc - end - - def to_xml_node - el1 = XML::Node.new "user" - el1["display_name"] = display_name.to_s - el1["account_created"] = creation_time.xmlschema - if home_lat && home_lon - home = XML::Node.new "home" - home["lat"] = home_lat.to_s - home["lon"] = home_lon.to_s - home["zoom"] = home_zoom.to_s - el1 << home - end - el1 - end - def description RichText.new(self[:description_format], self[:description]) end diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 330f40df28..58c1d174b2 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -268,24 +268,4 @@ def test_delete assert_not user.visible? assert_not user.active? end - - def test_to_xml - user = build(:user, :with_home_location) - xml = user.to_xml - assert_select Nokogiri::XML::Document.parse(xml.to_s), "user" do - assert_select "[display_name=?]", user.display_name - assert_select "[account_created=?]", user.creation_time.xmlschema - assert_select "home[lat=?][lon=?][zoom=?]", user.home_lat.to_s, user.home_lon.to_s, user.home_zoom.to_s - end - end - - def test_to_xml_node - user = build(:user, :with_home_location) - xml = user.to_xml_node - assert_select Nokogiri::XML::DocumentFragment.parse(xml.to_s), "user" do - assert_select "[display_name=?]", user.display_name - assert_select "[account_created=?]", user.creation_time.xmlschema - assert_select "home[lat=?][lon=?][zoom=?]", user.home_lat.to_s, user.home_lon.to_s, user.home_zoom.to_s - end - end end From a15a3744da38c82e57c155f016fdc32e7e3ff158 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 11 Nov 2020 17:51:52 +0000 Subject: [PATCH 2/3] Use point.trace instead of an additional gpx_file variable Every point knows which trace it's associated with, so there's no need to search for it separately --- app/controllers/api/tracepoints_controller.rb | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/app/controllers/api/tracepoints_controller.rb b/app/controllers/api/tracepoints_controller.rb index 5fbece05b7..81de17bbcd 100644 --- a/app/controllers/api/tracepoints_controller.rb +++ b/app/controllers/api/tracepoints_controller.rb @@ -53,24 +53,22 @@ def index 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 @@ def index end if trackid != point.trackid - if gpx_file.trackable? + if point.trace.trackable? trkseg = XML::Node.new "trkseg" track << trkseg trackid = point.trackid From e6d7da3a629c952a5d27f4d356dd4d5c4293848a Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 11 Nov 2020 17:52:33 +0000 Subject: [PATCH 3/3] Preload traces for the selected points It doesn't make a huge difference, since rails caches all the results of the queries generated by point.trace lookups, but at least it cuts down on the logs. --- app/controllers/api/tracepoints_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/tracepoints_controller.rb b/app/controllers/api/tracepoints_controller.rb index 81de17bbcd..9dc6e0d8b3 100644 --- a/app/controllers/api/tracepoints_controller.rb +++ b/app/controllers/api/tracepoints_controller.rb @@ -33,7 +33,7 @@ def index # 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