X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/fd6f00b069af5a7b87227ea4c3401dc461d7311a..6e64d5474ffe6fde6a31f642c008c152a99c60a2:/app/models/changeset.rb?ds=sidebyside diff --git a/app/models/changeset.rb b/app/models/changeset.rb index fa2d556b1..5c961a064 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -89,6 +89,16 @@ class Changeset < ActiveRecord::Base def has_valid_bbox? not bbox.include? nil end + + ## + # returns area of the changset bbox as a rough comparitive quantity for use of changset displays + def area + if has_valid_bbox? + (max_lon - min_lon) * (max_lat - min_lat) + else + 0 + end + end ## # expand the bounding box to include the given bounding box. also, @@ -144,19 +154,9 @@ class Changeset < ActiveRecord::Base end def save_with_tags! - t = Time.now.getutc - # do the changeset update and the changeset tags update in the # same transaction to ensure consistency. Changeset.transaction do - # set the auto-close time to be one hour in the future unless - # that would make it more than 24h long, in which case clip to - # 24h, as this has been decided is a reasonable time limit. - if (closed_at - created_at) > (MAX_TIME_OPEN - IDLE_TIMEOUT) - self.closed_at = created_at + MAX_TIME_OPEN - else - self.closed_at = Time.now.getutc + IDLE_TIMEOUT - end self.save! tags = self.tags @@ -171,6 +171,20 @@ class Changeset < ActiveRecord::Base end end end + + ## + # set the auto-close time to be one hour in the future unless + # that would make it more than 24h long, in which case clip to + # 24h, as this has been decided is a reasonable time limit. + def before_save + if self.is_open? + if (closed_at - created_at) > (MAX_TIME_OPEN - IDLE_TIMEOUT) + self.closed_at = created_at + MAX_TIME_OPEN + else + self.closed_at = Time.now.getutc + IDLE_TIMEOUT + end + end + end def to_xml doc = OSM::API.new.get_xml_doc