0
0
Fork 0

Refactor exports controller (#1567)

* Add basic coverage for settings/exports controller

* Remove unused @account variable from settings/exports controller

* Add coverage for download export actions

* Remove deprecated `render :text` in favor of `send_data` for csv downloads

* Add model to handle exports

* Use Export class in settings/exports controller

* Simplify settings/exports controller methods

* Move settings/export to more restful routes
This commit is contained in:
Matt Jankowski 2017-04-11 16:00:43 -04:00 committed by Eugen
parent 1921c5416b
commit 3ddd936b03
10 changed files with 123 additions and 40 deletions

View file

@ -0,0 +1,17 @@
# frozen_string_literal: true
module Settings
module Exports
class BlockedAccountsController < ApplicationController
before_action :authenticate_user!
def index
export_data = Export.new(current_account.blocking).to_csv
respond_to do |format|
format.csv { send_data export_data, filename: 'blocking.csv' }
end
end
end
end
end

View file

@ -0,0 +1,17 @@
# frozen_string_literal: true
module Settings
module Exports
class FollowingAccountsController < ApplicationController
before_action :authenticate_user!
def index
export_data = Export.new(current_account.following).to_csv
respond_to do |format|
format.csv { send_data export_data, filename: 'following.csv' }
end
end
end
end
end

View file

@ -1,46 +1,13 @@
# frozen_string_literal: true
require 'csv'
class Settings::ExportsController < ApplicationController
layout 'admin'
before_action :authenticate_user!
before_action :set_account
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.local_username_and_domain : account.acct)]
end
end
end
end