diff --git a/app/controllers/registrant/domains_controller.rb b/app/controllers/registrant/domains_controller.rb
index b8cd8f37a..15d38ad7f 100644
--- a/app/controllers/registrant/domains_controller.rb
+++ b/app/controllers/registrant/domains_controller.rb
@@ -4,11 +4,27 @@ class Registrant::DomainsController < RegistrantController
params[:q] ||= {}
normalize_search_parameters do
- @q = current_user_domains.search(params[:q])
- @domains = @q.result.page(params[:page])
+ @q = current_user_domains.search(search_params)
end
- @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
+ domains = @q.result
+
+ respond_to do |format|
+ format.html do
+ @domains = domains.page(params[:page])
+ domains_per_page = params[:results_per_page].to_i
+ @domains = @domains.per(domains_per_page) if domains_per_page.positive?
+ end
+ format.csv do
+ raw_csv = @q.result.to_csv
+ send_data raw_csv, filename: 'domains.csv', type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ format.pdf do
+ @domains = domains
+ raw_pdf = domains.pdf(render_to_string('registrant/domains/download_list', layout: false))
+ send_data raw_pdf, filename: 'domains.pdf'
+ end
+ end
end
def show
@@ -32,23 +48,6 @@ class Registrant::DomainsController < RegistrantController
end
end
- def download_list
- authorize! :view, :registrant_domains
- params[:q] ||= {}
- normalize_search_parameters do
- @q = current_user_domains.search(params[:q])
- @domains = @q
- end
-
- respond_to do |format|
- format.csv { render text: @domains.result.to_csv }
- format.pdf do
- pdf = @domains.result.pdf(render_to_string('registrant/domains/download_list', layout: false))
- send_data pdf, filename: 'domains.pdf'
- end
- end
- end
-
private
def normalize_search_parameters
@@ -70,4 +69,9 @@ class Registrant::DomainsController < RegistrantController
registrant_domain_delete_confirm_url(token: domain.registrant_verification_token)
end
end
+
+ def search_params
+ params.require(:q).permit(:name_matches, :registrant_ident_eq, :valid_to_gteq, :valid_to_lteq,
+ :results_per_page)
+ end
end
\ No newline at end of file
diff --git a/app/controllers/registrar/contacts_controller.rb b/app/controllers/registrar/contacts_controller.rb
index f343f9bfb..2bc15fd9c 100644
--- a/app/controllers/registrar/contacts_controller.rb
+++ b/app/controllers/registrar/contacts_controller.rb
@@ -30,37 +30,26 @@ class Registrar
normalize_search_parameters do
@q = contacts.search(search_params)
- @contacts = @q.result(distinct: :true).page(params[:page])
end
- @contacts = @contacts.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
- end
-
- def download_list
- authorize! :view, Depp::Contact
-
- params[:q] ||= {}
- params[:q].delete_if { |_k, v| v.blank? }
- if params[:q].length == 1 && params[:q][:name_matches].present?
- @contacts = Contact.find_by(name: params[:q][:name_matches])
- end
-
- contacts = current_registrar_user.registrar.contacts.includes(:registrar)
- contacts = contacts.filter_by_states(params[:statuses_contains]) if params[:statuses_contains]
-
- normalize_search_parameters do
- @q = contacts.search(params[:q])
- @contacts = @q.result
- end
+ contacts = @q.result
respond_to do |format|
- format.csv { render text: @contacts.to_csv }
+ format.html do
+ contacts_per_page = params[:results_per_page].to_i
+ @contacts = contacts.page(params[:page])
+ @contacts = @contacts.per(contacts_per_page) if contacts_per_page.positive?
+ end
+ format.csv do
+ raw_csv = contacts.to_csv
+ send_data raw_csv, filename: 'contacts.csv', type: "#{Mime[:csv]}; charset=utf-8"
+ end
format.pdf do
- pdf = @contacts.pdf(render_to_string('registrar/contacts/download_list', layout: false))
- send_data pdf, filename: 'contacts.pdf'
+ @contacts = contacts
+ raw_pdf = contacts.pdf(render_to_string('registrar/contacts/download_list', layout: false))
+ send_data raw_pdf, filename: 'contacts.pdf'
end
end
-
end
def new
diff --git a/app/controllers/registrar/domains_controller.rb b/app/controllers/registrar/domains_controller.rb
index d2969bb69..bdab2eefc 100644
--- a/app/controllers/registrar/domains_controller.rb
+++ b/app/controllers/registrar/domains_controller.rb
@@ -47,9 +47,10 @@ class Registrar
domain_presenters << ::DomainPresenter.new(domain: domain, view: view_context)
end
- csv = Registrar::DomainListCSVPresenter.new(domains: domain_presenters, view: view_context).to_s
+ raw_csv = Registrar::DomainListCSVPresenter.new(domains: domain_presenters,
+ view: view_context).to_s
filename = "Domains_#{l(Time.zone.now, format: :filename)}.csv"
- send_data(csv, filename: filename)
+ send_data raw_csv, filename: filename, type: "#{Mime[:csv]}; charset=utf-8"
end
end
end
diff --git a/app/views/registrant/domains/download_list.haml b/app/views/registrant/domains/download_list.haml
index f0af344cd..b37e3a42a 100644
--- a/app/views/registrant/domains/download_list.haml
+++ b/app/views/registrant/domains/download_list.haml
@@ -18,7 +18,7 @@
%th{class: 'col-xs-2'}
=t(:registrar_name)
%tbody
- - @domains.result.each do |x|
+ - @domains.each do |x|
%tr
%td= x.name
%td= x.registrant
diff --git a/app/views/registrant/domains/index.html.erb b/app/views/registrant/domains/index.html.erb
index acb9afcff..1254bfbc8 100644
--- a/app/views/registrant/domains/index.html.erb
+++ b/app/views/registrant/domains/index.html.erb
@@ -18,6 +18,13 @@
<%= f.search_field :registrant_ident_eq, class: 'form-control', placeholder: t(:registrant_ident) %>
+
+
+
+ <%= label_tag t(:results_per_page) %>
+ <%= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) %>
+
+
@@ -32,43 +39,27 @@
<%= f.search_field :valid_to_lteq, value: params[:q][:valid_to_lteq], class: 'form-control js-datepicker', placeholder: t(:valid_to_until) %>
-
-
- <%= label_tag t(:results_per_page) %>
- <%= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) %>
-
-
+
-
-
diff --git a/app/views/registrar/contacts/_search_form.html.erb b/app/views/registrar/contacts/_search_form.html.erb
index 66bb263bd..e15ff1880 100644
--- a/app/views/registrar/contacts/_search_form.html.erb
+++ b/app/views/registrar/contacts/_search_form.html.erb
@@ -83,49 +83,35 @@
-
+
<%= label_tag t(:status) %>
<%= select_tag :statuses_contains, options_for_select(Contact::STATUSES, params[:statuses_contains]), { multiple: true, placeholder: t(:choose), class: 'form-control js-combobox' } %>
-
+
<%= label_tag t(:results_per_page) %>
<%= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) %>
-
+
+ <%= button_tag t('.download_pdf_btn'),
+ formaction: registrar_contacts_path(format: :pdf),
+ name: nil,
+ class: 'btn btn-default' %>
+ <%= button_tag t('.download_csv_btn'),
+ formaction: registrar_contacts_path(format: :csv),
+ name: nil,
+ class: 'btn btn-default' %>
<%= link_to(t('.reset_btn'), registrar_contacts_path, class: 'btn btn-default') %>
-
-
<% end %>
diff --git a/app/views/registrar/domains/_search_form.html.erb b/app/views/registrar/domains/_search_form.html.erb
index b494e0d8d..743f8de60 100644
--- a/app/views/registrar/domains/_search_form.html.erb
+++ b/app/views/registrar/domains/_search_form.html.erb
@@ -74,14 +74,14 @@
-
+
- <%= button_tag t('.download_btn'), class: 'btn btn-primary export-domains-csv-btn',
- formaction: registrar_domains_path(format: 'csv') %>
+ <%= button_tag t('.download_btn'), formaction: registrar_domains_path(format: 'csv'),
+ class: 'btn btn-default' %>
<%= link_to t('.reset_btn'), registrar_domains_path, class: 'btn btn-default' %>
diff --git a/config/locales/registrant/domains.en.yml b/config/locales/registrant/domains.en.yml
index 2dbdce79a..a56d10b69 100644
--- a/config/locales/registrant/domains.en.yml
+++ b/config/locales/registrant/domains.en.yml
@@ -4,6 +4,8 @@ en:
index:
header: Domains
registrant: Registrant
+ download_pdf_btn: Download PDF
+ download_csv_btn: Download CSV
reset_btn: Reset
download_list:
diff --git a/config/locales/registrar/contacts.en.yml b/config/locales/registrar/contacts.en.yml
index 7eeb3c518..590e419d2 100644
--- a/config/locales/registrar/contacts.en.yml
+++ b/config/locales/registrar/contacts.en.yml
@@ -2,6 +2,8 @@ en:
registrar:
contacts:
search_form:
+ download_pdf_btn: Download PDF
+ download_csv_btn: Download CSV
reset_btn: Reset
partials:
diff --git a/config/locales/registrar/domains.en.yml b/config/locales/registrar/domains.en.yml
index 31380074f..c98002b8f 100644
--- a/config/locales/registrar/domains.en.yml
+++ b/config/locales/registrar/domains.en.yml
@@ -17,7 +17,7 @@ en:
transfer_btn: Transfer
search_form:
- download_btn: Download as CSV
+ download_btn: Download CSV
reset_btn: Reset
domain:
diff --git a/config/routes.rb b/config/routes.rb
index 4b65087b5..4c1e25864 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -87,7 +87,6 @@ Rails.application.routes.draw do
collection do
get 'check'
- get 'download_list'
end
end
@@ -151,11 +150,6 @@ Rails.application.routes.draw do
resources :registrars, only: :show
resources :domains, only: %i[index show] do
resources :contacts, only: %i[show edit update]
-
- collection do
- get :download_list
- end
-
member do
get 'confirmation'
end
diff --git a/test/integration/registrant_area/domains_test.rb b/test/integration/registrant_area/domains_test.rb
new file mode 100644
index 000000000..11709dd5b
--- /dev/null
+++ b/test/integration/registrant_area/domains_test.rb
@@ -0,0 +1,25 @@
+require 'test_helper'
+
+class RegistrantAreaDomainsIntegrationTest < ApplicationIntegrationTest
+ setup do
+ sign_in users(:registrant)
+ end
+
+ def test_downloads_list_as_csv
+ get registrant_domains_path(format: :csv)
+
+ assert_response :ok
+ assert_equal "#{Mime[:csv]}; charset=utf-8", response.headers['Content-Type']
+ assert_equal 'attachment; filename="domains.csv"', response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+
+ def test_downloads_list_as_pdf
+ get registrant_domains_path(format: :pdf)
+
+ assert_response :ok
+ assert_equal Mime[:pdf], response.headers['Content-Type']
+ assert_equal 'attachment; filename="domains.pdf"', response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+end
diff --git a/test/integration/registrar_area/contacts_test.rb b/test/integration/registrar_area/contacts_test.rb
new file mode 100644
index 000000000..2597518b1
--- /dev/null
+++ b/test/integration/registrar_area/contacts_test.rb
@@ -0,0 +1,25 @@
+require 'test_helper'
+
+class RegistrarAreaContactsIntegrationTest < ApplicationIntegrationTest
+ setup do
+ sign_in users(:api_bestnames)
+ end
+
+ def test_downloads_list_as_csv
+ get registrar_contacts_path(format: :csv)
+
+ assert_response :ok
+ assert_equal "#{Mime[:csv]}; charset=utf-8", response.headers['Content-Type']
+ assert_equal 'attachment; filename="contacts.csv"', response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+
+ def test_downloads_list_as_pdf
+ get registrar_contacts_path(format: :pdf)
+
+ assert_response :ok
+ assert_equal Mime[:pdf], response.headers['Content-Type']
+ assert_equal 'attachment; filename="contacts.pdf"', response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+end
diff --git a/test/integration/registrar_area/domains_test.rb b/test/integration/registrar_area/domains_test.rb
new file mode 100644
index 000000000..eaa43e674
--- /dev/null
+++ b/test/integration/registrar_area/domains_test.rb
@@ -0,0 +1,20 @@
+require 'test_helper'
+
+class RegistrarAreaDomainsIntegrationTest < ApplicationIntegrationTest
+ setup do
+ sign_in users(:api_bestnames)
+ end
+
+ def test_downloads_list_as_csv
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get registrar_domains_path(format: :csv)
+
+ assert_response :ok
+ assert_equal "#{Mime[:csv]}; charset=utf-8", response.headers['Content-Type']
+ assert_equal %(attachment; filename="Domains_#{l(now, format: :filename)}.csv"),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+end
diff --git a/test/system/registrar_area/domains_test.rb b/test/system/registrar_area/domains_test.rb
index 00d5c9e43..db51d7096 100644
--- a/test/system/registrar_area/domains_test.rb
+++ b/test/system/registrar_area/domains_test.rb
@@ -14,7 +14,7 @@ class RegistrarDomainsTest < ApplicationSystemTestCase
CSV
visit registrar_domains_url
- click_button 'Download as CSV'
+ click_button 'Download CSV'
assert_equal 'attachment; filename="Domains_2010-07-05_10.30.csv"', response_headers['Content-Disposition']
assert_equal expected_csv, page.body
end