about summary refs log tree commit diff
path: root/app/models/export.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-01-01 13:44:04 +0100
committerGitHub <noreply@github.com>2019-01-01 13:44:04 +0100
commit7fc7437d05bf1441bb694b847f7e65ce37cd74fa (patch)
tree2ecefba5f58a812ab429151841b30e25a331097e /app/models/export.rb
parent1d4215be777afde86208059e3eacf615533bc734 (diff)
Add CSV export for lists and domain blocks (#9677)
Fix #6893
Fix #9268
Diffstat (limited to 'app/models/export.rb')
-rw-r--r--app/models/export.rb38
1 files changed, 34 insertions, 4 deletions
diff --git a/app/models/export.rb b/app/models/export.rb
index 0eeac0dc0..a2520e9c2 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -9,15 +9,33 @@ class Export
   end
 
   def to_blocked_accounts_csv
-    to_csv account.blocking
+    to_csv account.blocking.select(:username, :domain)
   end
 
   def to_muted_accounts_csv
-    to_csv account.muting
+    to_csv account.muting.select(:username, :domain)
   end
 
   def to_following_accounts_csv
-    to_csv account.following
+    to_csv account.following.select(:username, :domain)
+  end
+
+  def to_lists_csv
+    CSV.generate do |csv|
+      account.owned_lists.select(:title).each do |list|
+        list.accounts.select(:username, :domain).each do |account|
+          csv << [list.title, acct(account)]
+        end
+      end
+    end
+  end
+
+  def to_blocked_domains_csv
+    CSV.generate do |csv|
+      account.domain_blocks.pluck(:domain).each do |domain|
+        csv << [domain]
+      end
+    end
   end
 
   def total_storage
@@ -32,6 +50,10 @@ class Export
     account.following_count
   end
 
+  def total_lists
+    account.owned_lists.count
+  end
+
   def total_followers
     account.followers_count
   end
@@ -44,13 +66,21 @@ class Export
     account.muting.count
   end
 
+  def total_domain_blocks
+    account.domain_blocks.count
+  end
+
   private
 
   def to_csv(accounts)
     CSV.generate do |csv|
       accounts.each do |account|
-        csv << [(account.local? ? account.local_username_and_domain : account.acct)]
+        csv << [acct(account)]
       end
     end
   end
+
+  def acct(account)
+    account.local? ? account.local_username_and_domain : account.acct
+  end
 end