Export follow/block lists as CSV

This commit is contained in:
Eugen Rochko
2017-03-19 20:29:41 +01:00
parent 08b96f1b9f
commit 56d998cbdb
6 changed files with 72 additions and 15 deletions

View File

@ -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

View File

@ -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)