about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-03-19 20:29:41 +0100
committerEugen Rochko <eugen@zeonfederated.com>2017-03-19 20:29:41 +0100
commit56d998cbdbf9743ced5a77895b902ccf33b36332 (patch)
tree616546158b2c7098b28efc3ffc7c4e6435bf71a0 /app
parent08b96f1b9f419ab250f24f3828db28a247ef11ac (diff)
Export follow/block lists as CSV
Diffstat (limited to 'app')
-rw-r--r--app/controllers/settings/exports_controller.rb32
-rw-r--r--app/views/settings/exports/show.html.haml15
2 files changed, 46 insertions, 1 deletions
diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb
index d4ecb6e8a..4fcec5322 100644
--- a/app/controllers/settings/exports_controller.rb
+++ b/app/controllers/settings/exports_controller.rb
@@ -1,16 +1,46 @@
 # frozen_string_literal: true
 
+require 'csv'
+
 class Settings::ExportsController < ApplicationController
   layout 'admin'
 
   before_action :authenticate_user!
   before_action :set_account
 
-  def show; end
+  def show
+    @total_storage = current_account.media_attachments.sum(:file_file_size)
+    @total_follows = current_account.following.count
+    @total_blocks  = current_account.blocking.count
+  end
+
+  def download_following_list
+    @accounts = current_account.following
+
+    respond_to do |format|
+      format.csv { render text: accounts_list_to_csv(@accounts) }
+    end
+  end
+
+  def download_blocking_list
+    @accounts = current_account.blocking
+
+    respond_to do |format|
+      format.csv { render text: accounts_list_to_csv(@accounts) }
+    end
+  end
 
   private
 
   def set_account
     @account = current_user.account
   end
+
+  def accounts_list_to_csv(list)
+    CSV.generate do |csv|
+      list.each do |account|
+        csv << [(account.local? ? "#{account.username}@#{Rails.configuration.x.local_domain}" : account.acct)]
+      end
+    end
+  end
 end
diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml
index d9006efdb..0a0ff8633 100644
--- a/app/views/settings/exports/show.html.haml
+++ b/app/views/settings/exports/show.html.haml
@@ -1,2 +1,17 @@
 - content_for :page_title do
   = t('settings.export')
+
+%table.table
+  %tbody
+    %tr
+      %th= t('exports.storage')
+      %td= number_to_human_size @total_storage
+      %td
+    %tr
+      %th= t('exports.follows')
+      %td= @total_follows
+      %td= table_link_to 'download', t('exports.csv'), follows_settings_export_path(format: :csv)
+    %tr
+      %th= t('exports.blocks')
+      %td= @total_blocks
+      %td= table_link_to 'download', t('exports.csv'), blocks_settings_export_path(format: :csv)