]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/old_relation.rb
Fixed redaction attribute on old nodes and ways, added same
[rails.git] / app / models / old_relation.rb
index e4be8fc7fd168c3433c44910e894662c0870e547..34d76ff9c664fb122c955c749871501a1e755247 100644 (file)
@@ -1,10 +1,13 @@
 class OldRelation < ActiveRecord::Base
   include ConsistencyValidations
-  include Redactable
   
   self.table_name = "relations"
   self.primary_keys = "relation_id", "version"
 
+  # note this needs to be included after the table name changes, or
+  # the queries generated by Redactable will use the wrong table name.
+  include Redactable
+
   belongs_to :changeset
   belongs_to :redaction
   belongs_to :current_relation, :class_name => "Relation", :foreign_key => "relation_id"
@@ -102,20 +105,27 @@ class OldRelation < ActiveRecord::Base
     el1['version'] = self.version.to_s
     el1['changeset'] = self.changeset_id.to_s
     
-    self.old_members.each do |member|
-      e = XML::Node.new 'member'
-      e['type'] = member.member_type.to_s.downcase
-      e['ref'] = member.member_id.to_s # "id" is considered uncool here as it should be unique in XML
-      e['role'] = member.member_role.to_s
-      el1 << e
+    if self.redacted?
+      el1['redacted'] = self.redaction.id.to_s
     end
+    
+    unless self.redacted? and (@user.nil? or not @user.moderator?)
+      self.old_members.each do |member|
+        e = XML::Node.new 'member'
+        e['type'] = member.member_type.to_s.downcase
+        e['ref'] = member.member_id.to_s # "id" is considered uncool here as it should be unique in XML
+        e['role'] = member.member_role.to_s
+        el1 << e
+      end
  
-    self.old_tags.each do |tag|
-      e = XML::Node.new 'tag'
-      e['k'] = tag.k
-      e['v'] = tag.v
-      el1 << e
+      self.old_tags.each do |tag|
+        e = XML::Node.new 'tag'
+        e['k'] = tag.k
+        e['v'] = tag.v
+        el1 << e
+      end
     end
+
     return el1
   end