diff options
author | Matt Jankowski <mjankowski@thoughtbot.com> | 2017-04-11 16:00:43 -0400 |
---|---|---|
committer | Eugen <eugen@zeonfederated.com> | 2017-04-11 22:00:43 +0200 |
commit | 3ddd936b039474259cff3793c767ecb7f74e89e0 (patch) | |
tree | def84f4d35f11defaeb779049fec3f45998d9135 /app | |
parent | 1921c5416b08d8374ee7aee6c072eed9b67c58c8 (diff) |
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
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/settings/exports/blocked_accounts_controller.rb | 17 | ||||
-rw-r--r-- | app/controllers/settings/exports/following_accounts_controller.rb | 17 | ||||
-rw-r--r-- | app/controllers/settings/exports_controller.rb | 33 | ||||
-rw-r--r-- | app/models/export.rb | 18 | ||||
-rw-r--r-- | app/views/settings/exports/show.html.haml | 4 |
5 files changed, 54 insertions, 35 deletions
diff --git a/app/controllers/settings/exports/blocked_accounts_controller.rb b/app/controllers/settings/exports/blocked_accounts_controller.rb new file mode 100644 index 000000000..0bf8848b4 --- /dev/null +++ b/app/controllers/settings/exports/blocked_accounts_controller.rb @@ -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 diff --git a/app/controllers/settings/exports/following_accounts_controller.rb b/app/controllers/settings/exports/following_accounts_controller.rb new file mode 100644 index 000000000..a7f4344ca --- /dev/null +++ b/app/controllers/settings/exports/following_accounts_controller.rb @@ -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 diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb index ff688978c..e060f03d3 100644 --- a/app/controllers/settings/exports_controller.rb +++ b/app/controllers/settings/exports_controller.rb @@ -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 diff --git a/app/models/export.rb b/app/models/export.rb new file mode 100644 index 000000000..cd1a58eb6 --- /dev/null +++ b/app/models/export.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true +require 'csv' + +class Export + attr_reader :accounts + + def initialize(accounts) + @accounts = accounts + end + + def to_csv + CSV.generate do |csv| + accounts.each do |account| + csv << [(account.local? ? account.local_username_and_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 0a0ff8633..432a61b4a 100644 --- a/app/views/settings/exports/show.html.haml +++ b/app/views/settings/exports/show.html.haml @@ -10,8 +10,8 @@ %tr %th= t('exports.follows') %td= @total_follows - %td= table_link_to 'download', t('exports.csv'), follows_settings_export_path(format: :csv) + %td= table_link_to 'download', t('exports.csv'), settings_exports_follows_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) + %td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv) |