mirror of
https://github.com/internetee/registry.git
synced 2025-05-29 17:10:08 +02:00
Merge branch 'story/115762063--show-historical-nested' into staging
# Conflicts: # app/models/domain.rb # app/views/admin/domains/partials/_version.haml # config/locales/en.yml
This commit is contained in:
commit
f69c4ef919
7 changed files with 155 additions and 86 deletions
|
@ -72,4 +72,15 @@ module ApplicationHelper
|
|||
|
||||
link_to(title, url_for(sort: {param_name => order}), class: "sort_link #{order}")
|
||||
end
|
||||
|
||||
def changing_css_class(version, *attrs)
|
||||
return unless version
|
||||
css_class = "text-warning"
|
||||
|
||||
if attrs.size == 1
|
||||
version.object_changes.to_h[attrs.first] && css_class
|
||||
else
|
||||
version.object_changes.to_h.slice(*attrs).any? && css_class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,6 +3,7 @@ module Versions
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
attr_accessor :version_loader
|
||||
has_paper_trail class_name: "#{model_name}Version"
|
||||
|
||||
# add creator and updator
|
||||
|
@ -55,4 +56,23 @@ module Versions
|
|||
domains.each(&:touch_with_version)
|
||||
end
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
def all_versions_for(ids, time)
|
||||
ver_klass = paper_trail_version_class
|
||||
from_history = ver_klass.where(item_id: ids).
|
||||
order(:item_id).
|
||||
preceding(time + 1, true).
|
||||
select("distinct on (item_id) #{ver_klass.table_name}.*").
|
||||
map do |ver|
|
||||
o = new(ver.object)
|
||||
o.version_loader = ver
|
||||
ver.object_changes.to_h.each { |k, v| o[k]=v[-1] }
|
||||
o
|
||||
end
|
||||
not_in_history = where(id: (ids - from_history.map(&:id)))
|
||||
|
||||
from_history + not_in_history
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -746,6 +746,7 @@ class Domain < ActiveRecord::Base
|
|||
log[:dnskeys] = dnskey_ids
|
||||
log[:legal_documents]= [legal_document_id]
|
||||
log[:registrant] = [registrant_id]
|
||||
log[:dnskeys] = dnskeys_ids
|
||||
log
|
||||
end
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
= render 'shared/title', name: @version.reify.name
|
||||
- contact = Contact.new(@version.object.to_h)
|
||||
- @version.object_changes.to_h.each{|k,v| contact[k]=v.last}
|
||||
= render 'shared/title', name: contact.name
|
||||
|
||||
.row
|
||||
.col-md-8
|
||||
|
@ -11,55 +13,64 @@
|
|||
.panel-body
|
||||
%dl.dl-horizontal
|
||||
%dt= t(:id)
|
||||
%dd= @version.reify.code
|
||||
%dd{class: changing_css_class(@version,"code")}
|
||||
= contact.code
|
||||
|
||||
%dt= t(:statuses)
|
||||
%dd{class: changing_css_class(@version,"statuses")}
|
||||
= contact.statuses.join(", ")
|
||||
|
||||
%dt= t(:ident)
|
||||
%dd= ident_for(@version.reify)
|
||||
%dd{class: changing_css_class(@version,"ident_country_code", "ident_type", "ident")}
|
||||
= ident_for(contact)
|
||||
|
||||
%dt= t(:email)
|
||||
%dd= @version.reify.email
|
||||
%dd{class: changing_css_class(@version,"email")}
|
||||
= contact.email
|
||||
|
||||
%dt= t(:phone)
|
||||
%dd= @version.reify.phone
|
||||
%dd{class: changing_css_class(@version,"phone")}
|
||||
= contact.phone
|
||||
|
||||
- if @version.reify.fax
|
||||
- if contact.fax
|
||||
%dt= t(:fax)
|
||||
%dd= @version.reify.fax
|
||||
%dd{class: changing_css_class(@version,"fax")}
|
||||
= contact.fax
|
||||
|
||||
%br
|
||||
|
||||
%dt= t(:created)
|
||||
%dd
|
||||
= l(@version.reify.created_at, format: :short)
|
||||
%dd{class: changing_css_class(@version,"created_at")}
|
||||
= l(contact.created_at, format: :short)
|
||||
|
||||
%dt= t(:updated)
|
||||
%dd
|
||||
= l(@version.reify.updated_at, format: :short)
|
||||
%dd{class: changing_css_class(@version,"updated_at")}
|
||||
= l(contact.updated_at, format: :short)
|
||||
|
||||
%dt= t(:registrar)
|
||||
%dd
|
||||
- if @version.reify.registrar.present?
|
||||
= link_to(@version.reify.registrar, admin_registrar_path(@version.reify.registrar))
|
||||
%dd{class: changing_css_class(@version,"registrar_id")}
|
||||
- if contact.registrar.present?
|
||||
= link_to(contact.registrar, admin_registrar_path(contact.registrar))
|
||||
|
||||
%dl.dl-horizontal
|
||||
- if @version.reify.org_name.present?
|
||||
- if contact.org_name.present?
|
||||
%dt= t(:org_name)
|
||||
%dd= @version.reify.org_name
|
||||
%dd{class: changing_css_class(@version,"org_name")}= contact.org_name
|
||||
|
||||
%dt= t(:street)
|
||||
%dd= @version.reify.street.to_s.gsub("\n", '<br>').html_safe
|
||||
%dd{class: changing_css_class(@version,"street")}= contact.street.to_s.gsub("\n", '<br>').html_safe
|
||||
|
||||
%dt= t(:city)
|
||||
%dd= @version.reify.city
|
||||
%dd{class: changing_css_class(@version,"city")}= contact.city
|
||||
|
||||
%dt= t(:zip)
|
||||
%dd= @version.reify.zip
|
||||
%dd{class: changing_css_class(@version,"zip")}= contact.zip
|
||||
|
||||
%dt= t(:state)
|
||||
%dd= @version.reify.state
|
||||
%dd{class: changing_css_class(@version,"state")}= contact.state
|
||||
|
||||
%dt= t(:country)
|
||||
%dd= @version.reify.country
|
||||
%dd{class: changing_css_class(@version,"country_code")}= contact.country
|
||||
|
||||
|
||||
%span{:style => "padding-right:10px; float: right;"}
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
= render 'shared/title', name: @version.reify.name
|
||||
- domain = Domain.new(@version.object.to_h)
|
||||
- @version.object_changes.to_h.each{|k,v| domain[k]=v.last}
|
||||
|
||||
- if @version
|
||||
- children = HashWithIndifferentAccess.new(@version.children)
|
||||
- nameservers = Nameserver.where(id: children[:nameservers])
|
||||
- tech_contacts = Contact.where(id: children[:tech_contacts])
|
||||
- admin_contacts = Contact.where(id: children[:admin_contacts])
|
||||
- registrant = Contact.where(id: children[:registrant])
|
||||
- nameservers = Nameserver.all_versions_for(children[:nameservers], @version.created_at)
|
||||
- tech_contacts = Contact.all_versions_for(children[:tech_contacts], @version.created_at)
|
||||
- admin_contacts = Contact.all_versions_for(children[:admin_contacts], @version.created_at)
|
||||
- registrant = Contact.all_versions_for(children[:registrant], @version.created_at)
|
||||
- event = @version.event
|
||||
- creator = plain_username(@version.terminator)
|
||||
|
||||
|
@ -21,36 +23,47 @@
|
|||
.panel-body
|
||||
%dl.dl-horizontal
|
||||
%dt= t(:name)
|
||||
%dd= link_to(@version.reify.name, admin_domain_path(@version.item_id))
|
||||
%dd= link_to(domain.name, admin_domain_path(@version.item_id))
|
||||
|
||||
%dt= t(:statuses)
|
||||
%dd
|
||||
- if @version.reify.statuses.present?
|
||||
- @version.reify.statuses.each do |s|
|
||||
%dd{class: changing_css_class(@version,"statuses")}
|
||||
- if domain.statuses.present?
|
||||
- domain.statuses.each do |s|
|
||||
= s
|
||||
|
||||
%dt= t(:registrant)
|
||||
%dd
|
||||
%dd{class: changing_css_class(@version,"registrant_id")}
|
||||
- registrant.each do |r|
|
||||
= r[:name]
|
||||
= r[:phone]
|
||||
= r[:email]
|
||||
= r[:code]
|
||||
%br
|
||||
- link = r.version_loader ? admin_contact_version_path(r.version_loader.try(:id)) : admin_contact_path(r.id)
|
||||
= link_to link, target: "contact_#{r.id}" do
|
||||
= r[:name]
|
||||
= r[:phone]
|
||||
= r[:email]
|
||||
= r[:code]
|
||||
%br
|
||||
|
||||
%dt= t(:admin_contacts)
|
||||
%dd
|
||||
- admin_contacts.each do |r|
|
||||
= r[:name]
|
||||
= r[:phone]
|
||||
= r[:email]
|
||||
= r[:code]
|
||||
%br
|
||||
- link = r.version_loader ? admin_contact_version_path(r.version_loader.try(:id)) : admin_contact_path(r.id)
|
||||
= link_to link, target: "contact_#{r.id}" do
|
||||
= r[:name]
|
||||
= r[:phone]
|
||||
= r[:email]
|
||||
= r[:code]
|
||||
%br
|
||||
|
||||
%dt= t(:tech_contacts)
|
||||
%dd
|
||||
- tech_contacts.each do |r|
|
||||
= r[:name]
|
||||
= r[:phone]
|
||||
= r[:email]
|
||||
= r[:code]
|
||||
%br
|
||||
- link = r.version_loader ? admin_contact_version_path(r.version_loader.try(:id)) : admin_contact_path(r.id)
|
||||
= link_to link, target: "contact_#{r.id}" do
|
||||
= r[:name]
|
||||
= r[:phone]
|
||||
= r[:email]
|
||||
= r[:code]
|
||||
%br
|
||||
|
||||
%dt= t(:nameservers)
|
||||
%dd
|
||||
- nameservers.each do |ns|
|
||||
|
@ -58,8 +71,12 @@
|
|||
= ns[:ipv4]
|
||||
= ns[:ipv6]
|
||||
%br
|
||||
|
||||
%dt= t(:registrar)
|
||||
%dd= @version.reify.registrar.name
|
||||
%dd{class: changing_css_class(@version,"registrar_id")}
|
||||
= link_to admin_registrar_path(domain.registrar), target: "registrar_#{domain.registrar.id}" do
|
||||
= domain.registrar.name
|
||||
|
||||
%span{:style => "padding-right:10px; padding-top:40px; float: right; bottom: 10px;"}
|
||||
- if @version.previous
|
||||
= link_to(t(:previous),
|
||||
|
|
|
@ -5,20 +5,20 @@
|
|||
|
||||
- if domain.present?
|
||||
- if version # normal history
|
||||
- children = HashWithIndifferentAccess.new(version.children)
|
||||
- nameservers = Nameserver.where(id: children[:nameservers])
|
||||
- tech_contacts = Contact.where(id: children[:tech_contacts])
|
||||
- admin_contacts = Contact.where(id: children[:admin_contacts])
|
||||
- registrant = Contact.where(id: children[:registrant])
|
||||
- event = version.event
|
||||
- creator = plain_username(version.terminator)
|
||||
- children = HashWithIndifferentAccess.new(version.children)
|
||||
- nameservers = Nameserver.all_versions_for(children[:nameservers], version.created_at)
|
||||
- tech_contacts = Contact.all_versions_for(children[:tech_contacts], version.created_at)
|
||||
- admin_contacts = Contact.all_versions_for(children[:admin_contacts], version.created_at)
|
||||
- registrant = Contact.all_versions_for(children[:registrant], version.created_at)
|
||||
- event = version.event
|
||||
- creator = plain_username(version.terminator)
|
||||
- else # pending history
|
||||
- nameservers = domain.nameservers
|
||||
- tech_contacts = domain.tech_contacts
|
||||
- admin_contacts = domain.admin_contacts
|
||||
- registrant = [domain.registrant]
|
||||
- creator = pending_user.try(:username)
|
||||
- event = 'pending'
|
||||
- registrant = [domain.registrant]
|
||||
- creator = pending_user.try(:username)
|
||||
- event = 'pending'
|
||||
|
||||
%td
|
||||
%p.nowrap
|
||||
|
@ -31,7 +31,7 @@
|
|||
%br
|
||||
= creator
|
||||
|
||||
%td
|
||||
%td{class: changing_css_class(version,"statuses")}
|
||||
%p
|
||||
- if domain.statuses.present?
|
||||
- domain.statuses.each do |s|
|
||||
|
@ -46,7 +46,7 @@
|
|||
%p
|
||||
= link_to t(:pending_epp), '#', class: 'js-pending-toggle'
|
||||
|
||||
%td
|
||||
%td{class: changing_css_class(version, "period", "period_unit", "valid_from", "valid_to")}
|
||||
%p
|
||||
= "#{domain.period}#{domain.period_unit}"
|
||||
%br
|
||||
|
@ -55,43 +55,52 @@
|
|||
= "#{l(domain.valid_to, format: :date)}"
|
||||
|
||||
%td
|
||||
- registrant.each do |r|
|
||||
%p
|
||||
= r[:name]
|
||||
= r[:phone]
|
||||
= r[:email]
|
||||
%p
|
||||
= r[:code]
|
||||
- Array(registrant).each do |r|
|
||||
- link = r.version_loader ? admin_contact_version_path(r.version_loader.try(:id)) : admin_contact_path(r.id)
|
||||
= link_to link, target: "contact_#{r.id}" do
|
||||
%p
|
||||
= r[:name]
|
||||
= r[:phone]
|
||||
= r[:email]
|
||||
%p
|
||||
= r[:code]
|
||||
|
||||
%td
|
||||
- admin_contacts.each do |ac|
|
||||
%p
|
||||
= ac[:name]
|
||||
= ac[:phone]
|
||||
= ac[:email]
|
||||
%p
|
||||
= ac[:code]
|
||||
- Array(admin_contacts).each do |ac|
|
||||
- link = ac.version_loader ? admin_contact_version_path(ac.version_loader.try(:id)) : admin_contact_path(ac.id)
|
||||
= link_to link, target: "contact_#{ac.id}" do
|
||||
%p
|
||||
= ac[:name]
|
||||
= ac[:phone]
|
||||
= ac[:email]
|
||||
%p
|
||||
= ac[:code]
|
||||
|
||||
%td
|
||||
- tech_contacts.each do |tc|
|
||||
%p
|
||||
= tc[:name]
|
||||
= tc[:phone]
|
||||
= tc[:email]
|
||||
%p
|
||||
= tc[:code]
|
||||
- Array(tech_contacts).each do |tc|
|
||||
- link = tc.version_loader ? admin_contact_version_path(tc.version_loader.try(:id)) : admin_contact_path(tc.id)
|
||||
= link_to link, target: "contact_#{tc.id}" do
|
||||
%p
|
||||
= tc[:name]
|
||||
= tc[:phone]
|
||||
= tc[:email]
|
||||
%p
|
||||
= tc[:code]
|
||||
|
||||
%td
|
||||
%p
|
||||
- nameservers.each do |ns|
|
||||
- Array(nameservers).each do |ns|
|
||||
= ns[:hostname]
|
||||
%br
|
||||
= ns[:ipv4]
|
||||
= ns[:ipv6]
|
||||
= ns[:ipv4].presence
|
||||
= ns[:ipv6].presence
|
||||
%br
|
||||
|
||||
%td
|
||||
%p
|
||||
= domain.registrar.name
|
||||
%td{class: changing_css_class(version,"registrar_id")}
|
||||
- if domain.registrar
|
||||
%p
|
||||
= link_to admin_registrar_path(domain.registrar), target: "registrar_#{domain.registrar.id}" do
|
||||
= domain.registrar.name
|
||||
|
||||
- if domain.pending_json.present?
|
||||
%tr.js-pending{ style: 'display: none;' }
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
.row
|
||||
.col-md-12
|
||||
.table-responsive
|
||||
%table.table-hover.table-bordered.table-condensed
|
||||
%table.table.table-bordered.table-condensed
|
||||
%thead
|
||||
%tr
|
||||
%th{class: 'col-xs-1'}= t(:timestap)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue