internetee/registry

View on GitHub
app/views/admin/domains/partials/_version.haml

Summary

Maintainability
Test Coverage
-#- statuses_link ||= false
- version ||= false
- domain ||= false
- pending_user ||= false

- if domain.present?
  - if version # normal history
    - epp_req = ApiLog::EppLog.find_by(uuid: version.uuid).try(:request) if version.uuid
    - children       = HashWithIndifferentAccess.new(version.children)
    - nameservers    = Nameserver.all_versions_for(children[:nameservers], version.created_at)
    - dnskeys        = Dnskey.all_versions_for(children[:dnskeys], 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)
    - whodunnit      = version.try(:whodunnit)
  - else # pending history
    - epp_req = false
    - nameservers    = domain.nameservers
    - dnskeys        = domain.dnskeys
    - tech_contacts  = domain.tech_contacts
    - admin_contacts = domain.admin_contacts
    - registrant     = domain.registrant
    - unless registrant
      - ver = Version::ContactVersion.where(item_id: domain.registrant_id).where(event: :destroy).last
      - registrant = ver.reify
      - registrant.version_loader = ver
    - registrant     = [registrant]
    - creator        = pending_user.try(:username)
    - event          = 'pending'
    - whodunnit      = false

  %td
    %p.nowrap
      = l domain.updated_at
      -#- if statuses_link
        %br= link_to t(:edit_statuses), edit_admin_domain_path(params[:domain_id])

    %p.text-right
      - if (event == 'update' || event == 'create') && epp_req
        = link_to event, '#', class: 'js-event'
      - else
        = event
      %br
      - if whodunnit
        = whodunnit
      - else
        = creator
    - if version
      %p.text-right
        = link_to "Pure history", admin_domain_version_path(version)

  %td{class: changing_css_class(version,"statuses")}
    %p
      - if domain.statuses.present?
        - domain.statuses.each do |s|
          = s
          - if domain.status_notes.present?
            - notes = domain.status_notes[s]
            - if notes
              %br
              %i= notes
            %br
    - if domain.pending_json.present?
      %p
        = link_to t(:pending_epp), '#', class: 'js-pending'

  %td{class: changing_css_class(version, "period", "period_unit", "valid_to")}
    %p
      = "#{domain.period}#{domain.period_unit}"
      %br
      = "#{l(domain.valid_to, format: :date)}"

  %td
    - 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
    - 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
    - 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
      - Array(nameservers).each do |ns|
        = ns[:hostname]
        %br
        = ns[:ipv4].presence
        = ns[:ipv6].presence
        %br
  %td
    - Array(dnskeys).each do |ns|
      %p
        = ns.flags
        = ns.protocol
        = ns.alg
        - if ns.public_key.present?
          \...#{ns.public_key.to_s[-20,20]}

  %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 (event == 'create' || event == 'update') && epp_req
    %tr.js-event{ style: 'display: none;' }
      %td{colspan: 9}
        %pre
          = Nokogiri::XML(epp_req)

  - if domain.pending_json.present?
    %tr.js-pending{ style: 'display: none;' }
      %td{colspan: 9}
        = preserve do
          %pre
            - formatted_req = Nokogiri::XML(domain.pending_json['frame'].to_json)
            - if formatted_req.errors.none?
              = formatted_req
            - else
              = domain.pending_json['frame']