mirror of
https://github.com/internetee/registry.git
synced 2025-07-28 05:26:17 +02:00
Fix contact history csv
This commit is contained in:
parent
a9b942dac0
commit
578b75da20
3 changed files with 50 additions and 11 deletions
|
@ -1,9 +1,13 @@
|
||||||
module Admin
|
module Admin
|
||||||
class ContactVersionsController < BaseController
|
class ContactVersionsController < BaseController
|
||||||
|
include ApplicationHelper
|
||||||
include ObjectVersionsHelper
|
include ObjectVersionsHelper
|
||||||
|
|
||||||
load_and_authorize_resource class: Version::ContactVersion
|
load_and_authorize_resource class: Version::ContactVersion
|
||||||
|
|
||||||
|
MODEL = Contact
|
||||||
|
CSV_HEADER = ['Name', 'ID', 'Ident', 'Registrar', 'Action', 'Created at'].freeze
|
||||||
|
|
||||||
def index
|
def index
|
||||||
params[:q] ||= {}
|
params[:q] ||= {}
|
||||||
|
|
||||||
|
@ -56,5 +60,19 @@ module Admin
|
||||||
def create_where_string(key, value)
|
def create_where_string(key, value)
|
||||||
" AND object->>'#{key}' ~* '#{value}'"
|
" AND object->>'#{key}' ~* '#{value}'"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def render_by_format(page, filename)
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { render page }
|
||||||
|
format.csv do
|
||||||
|
raw_csv = csv_generate(MODEL, CSV_HEADER)
|
||||||
|
send_data raw_csv,
|
||||||
|
filename: "#{filename}_#{Time.zone.now.to_formatted_s(:number)}.csv",
|
||||||
|
type: "#{Mime[:csv]}; charset=utf-8"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,9 @@ module Admin
|
||||||
|
|
||||||
load_and_authorize_resource class: Version::DomainVersion
|
load_and_authorize_resource class: Version::DomainVersion
|
||||||
|
|
||||||
|
MODEL = Domain
|
||||||
|
CSV_HEADER = ['Name', 'Registrant', 'Registrar', 'Action', 'Created at'].freeze
|
||||||
|
|
||||||
def index
|
def index
|
||||||
params[:q] ||= {}
|
params[:q] ||= {}
|
||||||
|
|
||||||
|
@ -93,7 +96,7 @@ module Admin
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { render page }
|
format.html { render page }
|
||||||
format.csv do
|
format.csv do
|
||||||
raw_csv = csv_generate
|
raw_csv = csv_generate(MODEL, CSV_HEADER)
|
||||||
send_data raw_csv,
|
send_data raw_csv,
|
||||||
filename: "#{filename}_#{Time.zone.now.to_formatted_s(:number)}.csv",
|
filename: "#{filename}_#{Time.zone.now.to_formatted_s(:number)}.csv",
|
||||||
type: "#{Mime[:csv]}; charset=utf-8"
|
type: "#{Mime[:csv]}; charset=utf-8"
|
||||||
|
|
|
@ -13,15 +13,15 @@ module ObjectVersionsHelper
|
||||||
version.object.to_h.select { |key, _value| field_names.include?(key) }
|
version.object.to_h.select { |key, _value| field_names.include?(key) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def csv_generate
|
def csv_generate(model, header)
|
||||||
CSV.generate do |csv|
|
CSV.generate do |csv|
|
||||||
csv << CSV_HEADER
|
csv << header
|
||||||
@versions.each do |version|
|
@versions.each do |version|
|
||||||
attributes = only_present_fields(version, Domain)
|
attributes = only_present_fields(version, model)
|
||||||
domain = Domain.new(attributes)
|
history_object = model.new(attributes)
|
||||||
attach_existing_fields(version, domain) unless version.event == 'destroy'
|
attach_existing_fields(version, history_object) unless version.event == 'destroy'
|
||||||
|
|
||||||
csv << create_row(domain, version)
|
csv << create_row(history_object, version)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -46,10 +46,28 @@ module ObjectVersionsHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_row(domain, version)
|
def create_row(history_object, version)
|
||||||
name = domain.name
|
if history_object.is_a?(Domain)
|
||||||
registrant = registrant_name(domain, version)
|
domain_history_row(history_object, version)
|
||||||
registrar = domain.registrar
|
else
|
||||||
|
contact_history_row(history_object, version)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def contact_history_row(history_object, version)
|
||||||
|
name = history_object.name
|
||||||
|
code = history_object.code
|
||||||
|
ident = ident_for(history_object)
|
||||||
|
registrar = history_object.registrar
|
||||||
|
event = version.event
|
||||||
|
created_at = version.created_at.to_formatted_s(:db)
|
||||||
|
[name, code, ident, registrar, event, created_at]
|
||||||
|
end
|
||||||
|
|
||||||
|
def domain_history_row(history_object, version)
|
||||||
|
name = history_object.name
|
||||||
|
registrant = registrant_name(history_object, version)
|
||||||
|
registrar = history_object.registrar
|
||||||
event = version.event
|
event = version.event
|
||||||
created_at = version.created_at.to_formatted_s(:db)
|
created_at = version.created_at.to_formatted_s(:db)
|
||||||
[name, registrant, registrar, event, created_at]
|
[name, registrant, registrar, event, created_at]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue