updates from hacking day
This commit is contained in:
parent
e5a5f957ef
commit
89e976c6e5
12 changed files with 150 additions and 45 deletions
|
@ -78,12 +78,22 @@ class Node < ActiveRecord::Base
|
|||
return doc
|
||||
end
|
||||
|
||||
def to_xml_node
|
||||
def to_xml_node(user_display_name_cache = nil)
|
||||
el1 = XML::Node.new 'node'
|
||||
el1['id'] = self.id.to_s
|
||||
el1['lat'] = self.latitude.to_s
|
||||
el1['lon'] = self.longitude.to_s
|
||||
el1['user'] = self.user.display_name if self.user.data_public?
|
||||
|
||||
# el['user'] = self.user.display_name if self.user.data_public?
|
||||
|
||||
if user_display_name_cache and user_display_name_cache[self.user_id]
|
||||
# use the cache if available
|
||||
else
|
||||
user_display_name_cache[self.user_id] = self.user.display_name
|
||||
end
|
||||
|
||||
el1['user'] = user_display_name_cache[self.user_id]
|
||||
|
||||
Node.split_tags(el1, self.tags)
|
||||
el1['visible'] = self.visible.to_s
|
||||
el1['timestamp'] = self.timestamp.xmlschema
|
||||
|
|
|
@ -73,12 +73,20 @@ class Segment < ActiveRecord::Base
|
|||
return doc
|
||||
end
|
||||
|
||||
def to_xml_node
|
||||
def to_xml_node(user_display_name_cache = nil)
|
||||
el1 = XML::Node.new 'segment'
|
||||
el1['id'] = self.id.to_s
|
||||
el1['from'] = self.node_a.to_s
|
||||
el1['to'] = self.node_b.to_s
|
||||
el1['user'] = self.user.display_name if self.user.data_public?
|
||||
if user_display_name_cache and user_display_name_cache[self.user_id]
|
||||
# use the cache if available
|
||||
else
|
||||
user_display_name_cache[self.user_id] = self.user.display_name
|
||||
end
|
||||
|
||||
#el1['user'] = self.user.display_name if self.user.data_public?
|
||||
el1['user'] = user_display_name_cache[self.user_id]
|
||||
|
||||
Segment.split_tags(el1, self.tags)
|
||||
el1['visible'] = self.visible.to_s
|
||||
el1['timestamp'] = self.timestamp.xmlschema
|
||||
|
|
|
@ -1,9 +1,25 @@
|
|||
class Tracepoint < ActiveRecord::Base
|
||||
set_table_name 'gps_points'
|
||||
set_table_name 'gps_points'
|
||||
|
||||
# validates_numericality_of :latitude
|
||||
# validates_numericality_of :longitude
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :trace, :foreign_key => 'gpx_id'
|
||||
|
||||
def lat=(l)
|
||||
self.latitude = l * 1000000
|
||||
end
|
||||
|
||||
def lng=(l)
|
||||
self.longitude = l * 1000000
|
||||
end
|
||||
|
||||
def lat
|
||||
return self.latitude.to_f / 1000000
|
||||
end
|
||||
|
||||
def lon
|
||||
return self.longitude.to_f / 1000000
|
||||
end
|
||||
end
|
||||
|
|
|
@ -28,8 +28,8 @@ class User < ActiveRecord::Base
|
|||
write_attribute("pass_crypt_confirm", Digest::MD5.hexdigest(str))
|
||||
end
|
||||
|
||||
def self.authenticate(email, passwd)
|
||||
find(:first, :conditions => [ "email = ? AND pass_crypt = ?", email, Digest::MD5.hexdigest(passwd)])
|
||||
def self.authenticate(email, passwd)
|
||||
find(:first, :conditions => [ "email = ? AND pass_crypt = ? AND active = true", email, Digest::MD5.hexdigest(passwd)])
|
||||
end
|
||||
|
||||
def self.authenticate_token(token)
|
||||
|
|
|
@ -50,22 +50,44 @@ class Way < ActiveRecord::Base
|
|||
return doc
|
||||
end
|
||||
|
||||
def to_xml_node
|
||||
def to_xml_node(visible_segments = nil, user_display_name_cache = nil)
|
||||
el1 = XML::Node.new 'way'
|
||||
el1['id'] = self.id.to_s
|
||||
el1['visible'] = self.visible.to_s
|
||||
el1['timestamp'] = self.timestamp.xmlschema
|
||||
el1['user'] = self.user.display_name if self.user.data_public?
|
||||
# make sure segments are output in sequence_id order
|
||||
ordered_segments = []
|
||||
self.way_segments.each do |seg|
|
||||
ordered_segments[seg.sequence_id] = seg.segment_id.to_s
|
||||
end
|
||||
ordered_segments.each do |seg_id|
|
||||
e = XML::Node.new 'seg'
|
||||
e['id'] = seg_id
|
||||
el1 << e
|
||||
end
|
||||
|
||||
if user_display_name_cache and user_display_name_cache[self.user_id]
|
||||
# use the cache if available
|
||||
else
|
||||
user_display_name_cache[self.user_id] = self.user.display_name
|
||||
end
|
||||
|
||||
#el1['user'] = self.user.display_name if self.user.data_public?
|
||||
el1['user'] = user_display_name_cache[self.user_id]
|
||||
|
||||
# make sure segments are output in sequence_id order
|
||||
ordered_segments = []
|
||||
self.way_segments.each do |seg|
|
||||
if visible_segments
|
||||
# if there is a list of visible segments then use that to weed out deleted segments
|
||||
if visible_segments[seg.segment_id]
|
||||
ordered_segments[seg.sequence_id] = seg.segment_id.to_s
|
||||
end
|
||||
else
|
||||
# otherwise, manually go to the db to check things
|
||||
if seg.segment.visible? and seg.segment.from_node.visible? and seg.segment.to_node.visible?
|
||||
ordered_segments[seg.sequence_id] = seg.segment_id.to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ordered_segments.each do |seg_id|
|
||||
if seg_id
|
||||
e = XML::Node.new 'seg'
|
||||
e['id'] = seg_id
|
||||
el1 << e
|
||||
end
|
||||
end
|
||||
|
||||
self.way_tags.each do |tag|
|
||||
e = XML::Node.new 'tag'
|
||||
|
@ -76,7 +98,6 @@ class Way < ActiveRecord::Base
|
|||
return el1
|
||||
end
|
||||
|
||||
|
||||
def segs
|
||||
unless @segs
|
||||
@segs = Array.new
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue