From cb15a2e25b3db45815f23589797812884785b35c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Checa?= Date: Thu, 15 Feb 2018 16:23:23 +0100 Subject: [PATCH] Added EmailsDownload controller and routes Removed original method to return emails file from Newsletters controller and NewsletterZip class, included `rubyzip` gem that's no longer necessary. --- Gemfile | 1 - .../admin/emails_download_controller.rb | 18 +++++++++++++ .../admin/newsletters_controller.rb | 6 ----- config/routes/admin.rb | 4 +++ lib/newsletter_zip.rb | 25 ------------------- 5 files changed, 22 insertions(+), 32 deletions(-) create mode 100644 app/controllers/admin/emails_download_controller.rb delete mode 100644 lib/newsletter_zip.rb diff --git a/Gemfile b/Gemfile index 55d9a5284..5a9141ae9 100644 --- a/Gemfile +++ b/Gemfile @@ -41,7 +41,6 @@ gem 'redcarpet', '~> 3.4.0' gem 'responders', '~> 2.4.0' gem 'rinku', '~> 2.0.2', require: 'rails_rinku' gem 'rollbar', '~> 2.15.5' -gem 'rubyzip', '~> 1.2.0' gem 'sass-rails', '~> 5.0', '>= 5.0.4' gem 'savon', '~> 2.11.1' gem 'sitemap_generator', '~> 6.0.1' diff --git a/app/controllers/admin/emails_download_controller.rb b/app/controllers/admin/emails_download_controller.rb new file mode 100644 index 000000000..326c32ff1 --- /dev/null +++ b/app/controllers/admin/emails_download_controller.rb @@ -0,0 +1,18 @@ +class Admin::EmailsDownloadController < Admin::BaseController + def index + end + + def generate_csv + users_segment = params[:users_segment] + filename = t("admin.segment_recipient.#{users_segment}") + + csv_file = users_segment_emails_csv(users_segment) + send_data csv_file, filename: "#{filename}.csv" + end + + private + + def users_segment_emails_csv(users_segment) + UserSegments.send(users_segment).pluck(:email).to_csv + end +end diff --git a/app/controllers/admin/newsletters_controller.rb b/app/controllers/admin/newsletters_controller.rb index dc06a5488..4dbf963f7 100644 --- a/app/controllers/admin/newsletters_controller.rb +++ b/app/controllers/admin/newsletters_controller.rb @@ -44,12 +44,6 @@ class Admin::NewslettersController < Admin::BaseController redirect_to admin_newsletters_path, notice: t("admin.newsletters.delete_success") end - def users - zip = NewsletterZip.new('emails') - zip.create - send_file(File.join(zip.path), type: 'application/zip') - end - def deliver @newsletter = Newsletter.find(params[:id]) Mailer.newsletter(@newsletter).deliver_later diff --git a/config/routes/admin.rb b/config/routes/admin.rb index fb3c2a4de..384fb685c 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -149,6 +149,10 @@ namespace :admin do get :users, on: :collection end + resources :emails_download, only: :index do + get :generate_csv, on: :collection + end + resource :stats, only: :show do get :proposal_notifications, on: :collection get :direct_messages, on: :collection diff --git a/lib/newsletter_zip.rb b/lib/newsletter_zip.rb deleted file mode 100644 index dead7cf82..000000000 --- a/lib/newsletter_zip.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'zip' -class NewsletterZip - attr_accessor :filename - - def initialize(filename) - @filename = filename - end - - def emails - User.newsletter.pluck(:email).join("\n") - end - - def path - Rails.root + "/tmp/#{filename}.zip" - end - - def create - Zip::File.open(path, Zip::File::CREATE) do |zipfile| - zipfile.get_output_stream("#{filename}.txt") do |file| - file.write emails - end - end - end - -end \ No newline at end of file