mirror of
https://github.com/internetee/registry.git
synced 2025-06-03 19:27:29 +02:00
parent
f8765eca4d
commit
199085f8ac
15 changed files with 152 additions and 113 deletions
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -18,6 +18,13 @@
|
|||
<%= f.search_field :registrant_ident_eq, class: 'form-control', placeholder: t(:registrant_ident) %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<%= label_tag t(:results_per_page) %>
|
||||
<%= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
|
@ -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) %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<%= label_tag t(:results_per_page) %>
|
||||
<%= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 actions">
|
||||
<button class="btn btn-primary">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button class="btn btn-primary search">
|
||||
|
||||
<span class="glyphicon glyphicon-search"></span>
|
||||
|
||||
</button>
|
||||
<%= link_to(t('.reset_btn'), registrant_domains_path, class: 'btn btn-default') %>
|
||||
<%= button_tag t('.download_pdf_btn'),
|
||||
formaction: registrant_domains_path(format: :pdf),
|
||||
name: nil,
|
||||
class: 'btn btn-default' %>
|
||||
<%= button_tag t('.download_csv_btn'),
|
||||
formaction: registrant_domains_path(format: :csv),
|
||||
name: nil,
|
||||
class: 'btn btn-default' %>
|
||||
<%= link_to t('.reset_btn'), registrant_domains_path,
|
||||
class: 'btn btn-default' %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="btn-group" role="group">
|
||||
<button aria-expanded="false" aria-haspopup="true" class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">
|
||||
Download
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<%= link_to 'PDF', download_list_registrant_domains_path(q: params[:q], format: "pdf") %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to 'CSV', download_list_registrant_domains_path(q: params[:q], format: "csv") %>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -83,49 +83,35 @@
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-5">
|
||||
<div class="form-group">
|
||||
<%= 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' } %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<%= label_tag t(:results_per_page) %>
|
||||
<%= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3" style="padding-top: 25px;">
|
||||
<div class="col-md-5 text-right" style="padding-top: 25px;">
|
||||
<button class="btn btn-primary">
|
||||
|
||||
<span class="glyphicon glyphicon-search"></span>
|
||||
|
||||
</button>
|
||||
<%= 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') %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="btn-group" role="group">
|
||||
<button aria-expanded="false" aria-haspopup="true" class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">
|
||||
Download
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<%= link_to 'PDF', download_list_registrar_contacts_path(q: params[:q], format: "pdf") %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to 'CSV', download_list_registrar_contacts_path(q: params[:q], format: "csv") %>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
@ -74,14 +74,14 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-offset-6 col-md-4 text-right">
|
||||
<div class="col-md-10 text-right">
|
||||
<button class="btn btn-primary search">
|
||||
|
||||
<span class="glyphicon glyphicon-search"></span>
|
||||
|
||||
</button>
|
||||
<%= 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' %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -2,6 +2,8 @@ en:
|
|||
registrar:
|
||||
contacts:
|
||||
search_form:
|
||||
download_pdf_btn: Download PDF
|
||||
download_csv_btn: Download CSV
|
||||
reset_btn: Reset
|
||||
|
||||
partials:
|
||||
|
|
|
@ -17,7 +17,7 @@ en:
|
|||
transfer_btn: Transfer
|
||||
|
||||
search_form:
|
||||
download_btn: Download as CSV
|
||||
download_btn: Download CSV
|
||||
reset_btn: Reset
|
||||
|
||||
domain:
|
||||
|
|
|
@ -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
|
||||
|
|
25
test/integration/registrant_area/domains_test.rb
Normal file
25
test/integration/registrant_area/domains_test.rb
Normal file
|
@ -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
|
25
test/integration/registrar_area/contacts_test.rb
Normal file
25
test/integration/registrar_area/contacts_test.rb
Normal file
|
@ -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
|
20
test/integration/registrar_area/domains_test.rb
Normal file
20
test/integration/registrar_area/domains_test.rb
Normal file
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue