Convert some model mixins to concerns

This commit is contained in:
Tom Hughes 2018-10-29 19:14:55 +00:00
parent ad85a03e21
commit 82f3dc6823
3 changed files with 9 additions and 5 deletions

View file

@ -1,57 +0,0 @@
require "delegate"
module GeoRecord
# Ensure that when coordinates are printed that they are always in decimal degrees,
# and not e.g. 4.0e-05
# Unfortunately you can't extend Numeric classes directly (e.g. `Coord < Float`).
class Coord < DelegateClass(Float)
def initialize(obj)
super(obj)
end
def to_s
format("%.7f", self)
end
end
# This scaling factor is used to convert between the float lat/lon that is
# returned by the API, and the integer lat/lon equivalent that is stored in
# the database.
SCALE = 10000000
def self.included(base)
base.scope :bbox, ->(bbox) { base.where(OSM.sql_for_area(bbox)) }
base.before_save :update_tile
end
# Is this node within -90 >= latitude >= 90 and -180 >= longitude >= 180
# * returns true/false
def in_world?
return false if lat < -90 || lat > 90
return false if lon < -180 || lon > 180
true
end
def update_tile
self.tile = QuadTile.tile_for_point(lat, lon)
end
def lat=(l)
self.latitude = (l * SCALE).round
end
def lon=(l)
self.longitude = (l * SCALE).round
end
# Return WGS84 latitude
def lat
Coord.new(latitude.to_f / SCALE)
end
# Return WGS84 longitude
def lon
Coord.new(longitude.to_f / SCALE)
end
end

View file

@ -1,11 +0,0 @@
require "osm"
module NotRedactable
def redacted?
false
end
def redact!(_r)
raise OSM::APICannotRedactError
end
end

View file

@ -1,41 +0,0 @@
module ObjectMetadata
def add_metadata_to_xml_node(el, osm, changeset_cache, user_display_name_cache)
el["changeset"] = osm.changeset_id.to_s
el["redacted"] = osm.redaction.id.to_s if osm.redacted?
el["timestamp"] = osm.timestamp.xmlschema
el["version"] = osm.version.to_s
el["visible"] = osm.visible.to_s
if changeset_cache.key?(osm.changeset_id)
# use the cache if available
else
changeset_cache[osm.changeset_id] = osm.changeset.user_id
end
user_id = changeset_cache[osm.changeset_id]
if user_display_name_cache.key?(user_id)
# use the cache if available
elsif osm.changeset.user.data_public?
user_display_name_cache[user_id] = osm.changeset.user.display_name
else
user_display_name_cache[user_id] = nil
end
unless user_display_name_cache[user_id].nil?
el["user"] = user_display_name_cache[user_id]
el["uid"] = user_id.to_s
end
end
def add_tags_to_xml_node(el, tags)
tags.each do |tag|
tag_el = XML::Node.new("tag")
tag_el["k"] = tag.k
tag_el["v"] = tag.v
el << tag_el
end
end
end