Merge rails_port as of r4613 & fix tests.

This commit is contained in:
Gabriel Ebner 2007-09-20 14:37:29 +00:00
commit cfbdd3f7e1
52 changed files with 696 additions and 256 deletions

View file

@ -1,3 +1,8 @@
class DiaryEntry < ActiveRecord::Base
belongs_to :user
validates_presence_of :title, :body
validates_numericality_of :latitude, :allow_nil => true
validates_numericality_of :longitude, :allow_nil => true
validates_associated :user
end

View file

@ -1,4 +1,8 @@
class Message < ActiveRecord::Base
belongs_to :sender, :class_name => "User", :foreign_key => :from_user_id
belongs_to :recipient, :class_name => "User", :foreign_key => :to_user_id
validates_presence_of :title, :body, :sent_on
validates_inclusion_of :message_read, :in => [ true, false ]
validates_associated :sender, :recipient
end

View file

@ -68,18 +68,12 @@ class Node < ActiveRecord::Base
return node
end
def save_with_history
begin
Node.transaction do
self.timestamp = Time.now
self.save!
old_node = OldNode.from_node(self)
old_node.save!
end
return true
rescue
return nil
def save_with_history!
Node.transaction do
self.timestamp = Time.now
self.save!
old_node = OldNode.from_node(self)
old_node.save!
end
end

View file

@ -37,4 +37,16 @@ class Notifier < ActionMailer::Base
@body['trace_name'] = trace.name
@body['error'] = error
end
def message_notification(message)
@recipients = message.recipient.email
@from = 'abuse@openstreetmap.org'
@subject = "[OpenStreetMap] #{message.sender.display_name} sent you a new message"
@body['to_user'] = message.recipient.display_name
@body['from_user'] = message.sender.display_name
@body['body'] = message.body
@body['subject'] = message.title
@body['readurl'] = "http://#{SERVER_URL}/message/read/#{message.id}"
@body['replyurl'] = "http://#{SERVER_URL}/message/new/#{message.from_user_id}"
end
end

View file

@ -141,46 +141,40 @@ class Relation < ActiveRecord::Base
@tags[k] = v
end
def save_with_history
begin
Relation.transaction do
t = Time.now
self.timestamp = t
self.save!
def save_with_history!
Relation.transaction do
t = Time.now
self.timestamp = t
self.save!
tags = self.tags
tags = self.tags
RelationTag.delete_all(['id = ?', self.id])
RelationTag.delete_all(['id = ?', self.id])
tags.each do |k,v|
tag = RelationTag.new
tag.k = k
tag.v = v
tag.id = self.id
tag.save!
end
members = self.members
RelationMember.delete_all(['id = ?', self.id])
members.each do |n|
mem = RelationMember.new
mem.id = self.id
mem.member_type = n[0];
mem.member_id = n[1];
mem.member_role = n[2];
mem.save!
end
old_relation = OldRelation.from_relation(self)
old_relation.timestamp = t
old_relation.save_with_dependencies!
tags.each do |k,v|
tag = RelationTag.new
tag.k = k
tag.v = v
tag.id = self.id
tag.save!
end
return true
rescue Exception => ex
return nil
members = self.members
RelationMember.delete_all(['id = ?', self.id])
members.each do |n|
mem = RelationMember.new
mem.id = self.id
mem.member_type = n[0];
mem.member_id = n[1];
mem.member_role = n[2];
mem.save!
end
old_relation = OldRelation.from_relation(self)
old_relation.timestamp = t
old_relation.save_with_dependencies!
end
end

View file

@ -175,7 +175,12 @@ class Trace < ActiveRecord::Base
f_lon = 0
first = true
Tracepoint.delete_all(['gpx_id = ?', self.id])
# If there are any existing points for this trace then delete
# them - we check for existing points first to avoid locking
# the table in the common case where there aren't any.
if Tracepoint.exists?(['gpx_id = ?', self.id])
Tracepoint.delete_all(['gpx_id = ?', self.id])
end
gpx.points do |point|
if first
@ -199,10 +204,10 @@ class Trace < ActiveRecord::Base
max_lon = Tracepoint.maximum('longitude', :conditions => ['gpx_id = ?', id])
min_lon = Tracepoint.minimum('longitude', :conditions => ['gpx_id = ?', id])
max_lat = max_lat.to_f / 1000000
min_lat = min_lat.to_f / 1000000
max_lon = max_lon.to_f / 1000000
min_lon = min_lon.to_f / 1000000
max_lat = max_lat.to_f / 10000000
min_lat = min_lat.to_f / 10000000
max_lon = max_lon.to_f / 10000000
min_lon = min_lon.to_f / 10000000
self.latitude = f_lat
self.longitude = f_lon

View file

@ -1,26 +1,40 @@
class Tracepoint < ActiveRecord::Base
set_table_name 'gps_points'
set_table_name 'gps_points'
# validates_numericality_of :latitude
# validates_numericality_of :longitude
validates_numericality_of :trackid, :only_integer => true
validates_numericality_of :latitude, :only_integer => true
validates_numericality_of :longitude, :only_integer => true
validates_associated :trace
validates_presence_of :timestamp
belongs_to :user
belongs_to :trace, :foreign_key => 'gpx_id'
before_save :update_tile
def self.find_by_area(minlat, minlon, maxlat, maxlon, options)
self.with_scope(:find => {:conditions => OSM.sql_for_area(minlat, minlon, maxlat, maxlon)}) do
return self.find(:all, options)
end
end
def update_tile
self.tile = QuadTile.tile_for_point(lat, lon)
end
def lat=(l)
self.latitude = l * 1000000
self.latitude = (l * 10000000).round
end
def lng=(l)
self.longitude = l * 1000000
self.longitude = (l * 10000000).round
end
def lat
return self.latitude.to_f / 1000000
return self.latitude.to_f / 10000000
end
def lon
return self.longitude.to_f / 1000000
return self.longitude.to_f / 10000000
end
def to_xml_node
@ -29,5 +43,4 @@ set_table_name 'gps_points'
el1['lon'] = self.lon.to_s
return el1
end
end

View file

@ -142,49 +142,47 @@ class Way < ActiveRecord::Base
@tags[k] = v
end
def save_with_history
begin
Way.transaction do
t = Time.now
self.timestamp = t
self.save!
def save_with_history!
t = Time.now
tags = self.tags
WayTag.delete_all(['id = ?', self.id])
tags.each do |k,v|
tag = WayTag.new
tag.k = k
tag.v = v
tag.id = self.id
tag.save!
end
nds = self.nds
WayNode.delete_all(['id = ?', self.id])
i = 1
nds.each do |n|
nd = WayNode.new
nd.id = self.id
nd.node_id = n
nd.sequence_id = i
nd.save!
i += 1
end
old_way = OldWay.from_way(self)
old_way.timestamp = t
old_way.save_with_dependencies!
end
return true
rescue => ex
puts ex
return nil
Way.transaction do
self.timestamp = t
self.save!
end
WayTag.transaction do
tags = self.tags
WayTag.delete_all(['id = ?', self.id])
tags.each do |k,v|
tag = WayTag.new
tag.k = k
tag.v = v
tag.id = self.id
tag.save!
end
end
WayNode.transaction do
nds = self.nds
WayNode.delete_all(['id = ?', self.id])
i = 1
nds.each do |n|
nd = WayNode.new
nd.id = self.id
nd.node_id = n
nd.sequence_id = i
nd.save!
i += 1
end
end
old_way = OldWay.from_way(self)
old_way.timestamp = t
old_way.save_with_dependencies!
end
def preconditions_ok?