Merge pull request #162 from internetee/108869472-objects_archive

108869472 objects archive
This commit is contained in:
Timo Võhmar 2016-08-05 09:55:29 +03:00 committed by GitHub
commit 6d4facf1c0
14 changed files with 229 additions and 106 deletions

View file

@ -20,7 +20,7 @@ class Admin::ContactVersionsController < AdminController
end
end
versions = ContactVersion.includes(:item).where(whereS)
versions = ContactVersion.includes(:item).where(whereS).order(created_at: :desc, id: :desc)
@q = versions.search(params[:q])
@versions = @q.result.page(params[:page])
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
@ -30,9 +30,19 @@ class Admin::ContactVersionsController < AdminController
def show
per_page = 7
@version = ContactVersion.find(params[:id])
@q = ContactVersion.where(item_id: @version.item_id).order(created_at: :asc).search
@versions = @q.result.page(params[:page])
@versions = @versions.per(per_page)
@versions = ContactVersion.where(item_id: @version.item_id).order(created_at: :desc, id: :desc)
@versions_map = @versions.all.map(&:id)
# what we do is calc amount of results until needed version
# then we cacl which page it is
if params[:page].blank?
counter = @versions_map.index(@version.id) + 1
page = counter / per_page
page += 1 if (counter % per_page) != 0
params[:page] = page
end
@versions = @versions.page(params[:page]).per(per_page)
end
def search
@ -40,7 +50,7 @@ class Admin::ContactVersionsController < AdminController
end
def create_where_string(key, value)
" AND object->>'#{key}' ~ '#{value}'"
" AND object->>'#{key}' ~* '#{value}'"
end
end

View file

@ -8,13 +8,13 @@ class Admin::DomainVersionsController < AdminController
@versions = @q.result.page(params[:page])
search_params = params[:q].deep_dup
if search_params[:registrant]
registrant = Contact.find_by(name: search_params[:registrant])
if search_params[:registrant].present?
registrants = Contact.where("name ilike ?", "%#{search_params[:registrant].strip}%")
search_params.delete(:registrant)
end
if search_params[:registrar]
registrar = Registrar.find_by(name: search_params[:registrar])
if search_params[:registrar].present?
registrars = Registrar.where("name ilike ?", "%#{search_params[:registrar].strip}%")
search_params.delete(:registrar)
end
@ -25,15 +25,19 @@ class Admin::DomainVersionsController < AdminController
case key
when 'event'
whereS += " AND event = '#{value}'"
when 'name'
whereS += " AND (object->>'name' ~* '#{value}' OR object_changes->>'name' ~* '#{value}')"
else
whereS += create_where_string(key, value)
end
end
whereS += " AND object->>'registrant_id' = '#{registrant.id}'" if registrant
whereS += " AND object->>'registrar_id' = '#{registrar.id}'" if registrar
whereS += " AND object->>'registrant_id' IN (#{registrants.map { |r| "'#{r.id.to_s}'" }.join ','})" if registrants.present?
whereS += " AND 1=0" if registrants == []
whereS += " AND object->>'registrar_id' IN (#{registrars.map { |r| "'#{r.id.to_s}'" }.join ','})" if registrars.present?
whereS += " AND 1=0" if registrars == []
versions = DomainVersion.includes(:item).where(whereS)
versions = DomainVersion.includes(:item).where(whereS).order(created_at: :desc, id: :desc)
@q = versions.search(params[:q])
@versions = @q.result.page(params[:page])
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
@ -44,9 +48,19 @@ class Admin::DomainVersionsController < AdminController
def show
per_page = 7
@version = DomainVersion.find(params[:id])
@q = DomainVersion.where(item_id: @version.item_id).order(created_at: :desc).search
@versions = @q.result.page(params[:page])
@versions = @versions.per(per_page)
@versions = DomainVersion.where(item_id: @version.item_id).order(created_at: :desc, id: :desc)
@versions_map = @versions.all.map(&:id)
# what we do is calc amount of results until needed version
# then we cacl which page it is
if params[:page].blank?
counter = @versions_map.index(@version.id) + 1
page = counter / per_page
page += 1 if (counter % per_page) != 0
params[:page] = page
end
@versions = @versions.page(params[:page]).per(per_page)
end
def search
@ -54,7 +68,7 @@ class Admin::DomainVersionsController < AdminController
end
def create_where_string(key, value)
" AND object->>'#{key}' ~ '#{value}'"
" AND object->>'#{key}' ~* '#{value}'"
end

View file

@ -11,21 +11,18 @@
.col-md-3
.form-group
= f.label :id
= f.search_field :id, value: params[:q][:id], class: 'form-control', placeholder: t(:id)
= f.search_field :code, value: params[:q][:code], class: 'form-control', placeholder: t(:id)
.col-md-3
.form-group
= f.label :ident
= f.search_field :ident, value: params[:q][:ident], class: 'form-control', placeholder: t(:ident)
.col-md-3
.form-group
= f.label :phone
= f.search_field :phone, value: params[:q][:phone], class: 'form-control', placeholder: t(:phone)
= label_tag :action
= select_tag '[q][event]', options_for_select([['Update', 'update'], ['Destroy', 'destroy'], ['Create', 'create']], params[:q][:event]), { include_blank:true, multiple: false, placeholder: t(:choose), class: 'form-control js-combobox' }
.row
.col-md-3
.col-md-3
.form-group
= label_tag :action
= select_tag '[q][event]', options_for_select([['Update', 'update'], ['Destroy', 'destroy']], params[:q][:event]), { include_blank:true, multiple: false, placeholder: t(:choose), class: 'form-control js-combobox' }
.col-md-3
.form-group
= label_tag t(:results_per_page)
@ -52,33 +49,35 @@
= t(:id)
%th{class: 'col-xs-2'}
= t(:ident)
%th{class: 'col-xs-2'}
= t(:phone)
%th{class: 'col-xs-2'}
= t(:registrar)
%th{class: 'col-xs-2'}
= t(:action_date)
%th{class: 'col-xs-2'}
= t(:action)
%th{class: 'col-xs-2'}
= t(:created_at)
%tbody
- @versions.each do |version|
- if version.reify
- if version
- contact = Contact.new(version.object.to_h)
- version.object_changes.to_h.each{|k,v| contact[k]=v.last}
%tr
%td= link_to(version.reify.name, admin_contact_version_path(version.id))
%td= version.reify.code
%td= ident_for(version.reify)
%td= version.reify.phone
%td= link_to(contact.name, admin_contact_version_path(version.id))
%td= contact.code
%td= ident_for(contact)
%td
- if version.reify.registrar
= link_to(version.reify.registrar, admin_registrar_path(version.reify.registrar))
%td= l(version.created_at, format: :short)
- if contact.registrar
= link_to(contact.registrar, admin_registrar_path(contact.registrar))
%td= version.event
%td= l(version.created_at, format: :short)
.row
.col-md-6
= paginate @versions
.col-md-6.text-right
.pagination
= t(:result_count, count: @versions.total_count)
:coffee

View file

@ -24,15 +24,17 @@
%dd{class: changing_css_class(@version,"ident_country_code", "ident_type", "ident")}
= ident_for(contact)
- if contact.email.present?
%dt= t(:email)
%dd{class: changing_css_class(@version,"email")}
= contact.email
- if contact.phone.present?
%dt= t(:phone)
%dd{class: changing_css_class(@version,"phone")}
= contact.phone
- if contact.fax
- if contact.fax.present?
%dt= t(:fax)
%dd{class: changing_css_class(@version,"fax")}
= contact.fax
@ -57,51 +59,50 @@
%dt= t(:org_name)
%dd{class: changing_css_class(@version,"org_name")}= contact.org_name
- if contact.street.present?
%dt= t(:street)
%dd{class: changing_css_class(@version,"street")}= contact.street.to_s.gsub("\n", '<br>').html_safe
- if contact.city.present?
%dt= t(:city)
%dd{class: changing_css_class(@version,"city")}= contact.city
- if contact.zip.present?
%dt= t(:zip)
%dd{class: changing_css_class(@version,"zip")}= contact.zip
- if contact.state.present?
%dt= t(:state)
%dd{class: changing_css_class(@version,"state")}= contact.state
- if contact.country.present?
%dt= t(:country)
%dd{class: changing_css_class(@version,"country_code")}= contact.country
%span{:style => "padding-right:10px; float: right;"}
- if @version.previous
- if (prev = @versions_map[(@versions_map.index(@version.id) - 1)]) && @versions_map.index(@version.id) != 0
= link_to(t(:previous),
admin_contact_version_path(@version.previous.id),
admin_contact_version_path(prev),
class: 'btn btn-primary')
- else
%a.btn.btn-primary.disabled{:href => "#"}
%span= t(:previous)
- if @version.next
- if nxt = @versions_map[(@versions_map.index(@version.id) + 1)]
= link_to(t(:next),
admin_contact_version_path(@version.next.id),
admin_contact_version_path(nxt),
class: 'btn btn-default')
- else
%a.btn.btn-default.disabled{:href => "#"}
%span= t(:next)
.col-md-4
.panel.panel-default{:style => "min-height:420px;"}
.panel.panel-default{:style => "min-height:450px;"}
%ul.nav.nav-pills.nav-stacked
- @versions.each do |vs|
- if vs.id == @version.id
%li.active
= link_to admin_contact_version_path(vs.id) do
= l(vs.created_at, format: :short)
= vs.event
- else
%li
= link_to admin_contact_version_path(vs.id) do
%li{class: (vs.id == @version.id) && :active}
= link_to admin_contact_version_path(vs) do
= l(vs.created_at, format: :short)
= vs.event
%span{:style => "padding-left:10px; position: absolute; bottom: 10px;"}
= paginate @versions
= paginate @versions, theme: :admin

View file

@ -19,7 +19,7 @@
.col-md-3
.form-group
= label_tag :action
= select_tag '[q][event]', options_for_select([['Update', 'update'], ['Destroy', 'destroy']], params[:q][:event]), { include_blank:true, multiple: false, placeholder: t(:choose), class: 'form-control js-combobox' }
= select_tag '[q][event]', options_for_select([['Update', 'update'], ['Destroy', 'destroy'], ['Create', 'create']], params[:q][:event]), { include_blank:true, multiple: false, placeholder: t(:choose), class: 'form-control js-combobox' }
.row
.col-md-3
.col-md-3
@ -49,29 +49,41 @@
= t(:registrant)
%th{class: 'col-xs-2'}
= t(:registrar)
%th{class: 'col-xs-2'}
= t(:action_date)
%th{class: 'col-xs-2'}
= t(:action)
%th{class: 'col-xs-2'}
= t(:created_at)
%tbody
- @versions.each do |version|
- if version.reify
- if version
- domain = Domain.new(version.object.to_h)
- version.object_changes.to_h.each{|k,v| domain[k]=v.last}
%tr
%td= link_to(version.reify.name, admin_domain_version_path(version.id))
%td= link_to(domain.name, admin_domain_version_path(version.id))
%td
- if version.reify.registrant
= link_to(version.reify.registrant, admin_registrant_path(version.reify.registrant))
- if domain.registrant
= domain.registrant.name
- else
- contact = Contact.all_versions_for([domain.registrant_id], version.created_at).first
- if contact.nil? && ver = ContactVersion.where(item_id: domain.registrant_id).last
- contact = Contact.new(ver.object.to_h.merge(ver.object_changes.to_h.each_with_object({}){|(k,v), o| o[k]=v.last } ))
= contact.try(:name)
= "&#160;".html_safe
= "(#{t(:deleted)})"
%td
- if version.reify.registrar
= link_to(version.reify.registrar, admin_registrar_path(version.reify.registrar))
%td= l(version.created_at, format: :short)
- if domain.registrar
= link_to(domain.registrar, admin_registrar_path(domain.registrar))
%td= version.event
%td= l(version.created_at, format: :short)
.row
.col-md-6
= paginate @versions
.col-md-6.text-right
.pagination
= t(:result_count, count: @versions.total_count)
:coffee

View file

@ -1,8 +1,6 @@
- domain = Domain.new(@version.object.to_h)
- @version.object_changes.to_h.each{|k,v| domain[k]=v.last}
= render 'shared/title', name: @version.reify.name
- if @version
- children = HashWithIndifferentAccess.new(@version.children)
- nameservers = Nameserver.all_versions_for(children[:nameservers], @version.created_at)
@ -13,10 +11,11 @@
- event = @version.event
- creator = plain_username(@version.terminator)
= render 'shared/title', name: domain.name
.row
.col-md-8
.panel.panel-default{:style => "min-height:400px;"}
.panel.panel-default{:style => "min-height:450px;"}
.panel-heading
%h3.panel-title
= l(@version.created_at, format: :short)
@ -25,7 +24,21 @@
.panel-body
%dl.dl-horizontal
%dt= t(:name)
%dd= link_to(domain.name, admin_domain_path(@version.item_id))
- if !domain.name
- domain_name = Domain.find(@version.item_id).try(:name)
- else
- domain_name = domain.name
%dd= link_to(domain_name, admin_domain_path(@version.item_id))
%dt= t(:created)
%dd
= l(domain.created_at, format: :short)
%dt= t(:updated)
%dd
= l(domain.updated_at, format: :short)
%br
%dt= t(:statuses)
%dd{class: changing_css_class(@version,"statuses")}
@ -84,40 +97,35 @@
\...#{ns[:public_key].to_s[-20,20]}
%br
- if domain.registrar
%dt= t(:registrar)
%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 => "margin: 20px 20px; clear:both;"}
%span{:style => "padding-right:10px; padding-top:40px; float: right; bottom: 10px;"}
- if @version.previous
- if (prev = @versions_map[(@versions_map.index(@version.id) - 1)]) && @versions_map.index(@version.id) != 0
= link_to(t(:previous),
admin_domain_version_path(@version.previous.id),
admin_domain_version_path(prev),
class: 'btn btn-primary')
- else
%a.btn.btn-primary.disabled{:href => "#"}
%span= t(:previous)
- if @version.next
- if nxt = @versions_map[(@versions_map.index(@version.id) + 1)]
= link_to(t(:next),
admin_domain_version_path(@version.next.id),
admin_domain_version_path(nxt),
class: 'btn btn-default')
- else
%a.btn.btn-default.disabled{:href => "#"}
%span= t(:next)
.col-md-4
.panel.panel-default{:style => "min-height:400px;"}
.panel.panel-default{:style => "min-height:450px;"}
%ul.nav.nav-pills.nav-stacked
- @versions.each do |vs|
- if vs.id == @version.id and vs.reify
%li.active
= link_to admin_domain_version_path(vs.id) do
= l(vs.created_at, format: :short)
= vs.event
- else
%li
= link_to admin_domain_version_path(vs.id) do
%li{class: (vs.id == @version.id) && :active}
= link_to admin_domain_version_path(vs) do
= l(vs.created_at, format: :short)
= vs.event
%span{:style => "padding-left:10px; position: absolute; bottom: 10px;"}
= paginate @versions
= paginate @versions, theme: :admin

View file

@ -0,0 +1,11 @@
-# Link to the "First" page
-# available local variables
-# url: url to the first page
-# current_page: a page object for the currently displayed page
-# total_pages: total number of pages
-# per_page: number of items to fetch per page
-# remote: data-remote
%span.first
- param_name = current_page.instance_variable_get("@options")[:param_name] || Kaminari.config.param_name
- urlik = url_for( params.merge(param_name => 1, :only_path => true))
= link_to_unless current_page.first?, t('views.pagination.first').html_safe, urlik, :remote => remote

View file

@ -0,0 +1,8 @@
-# Non-link tag that stands for skipped pages...
-# available local variables
-# current_page: a page object for the currently displayed page
-# total_pages: total number of pages
-# per_page: number of items to fetch per page
-# remote: data-remote
%span.page.gap
= t('views.pagination.truncate').html_safe

View file

@ -0,0 +1,9 @@
-# Link to the "Last" page
-# available local variables
-# url: url to the last page
-# current_page: a page object for the currently displayed page
-# total_pages: total number of pages
-# per_page: number of items to fetch per page
-# remote: data-remote
%span.last
= link_to_unless current_page.last?, t('views.pagination.last').html_safe, url, :remote => remote

View file

@ -0,0 +1,9 @@
-# Link to the "Next" page
-# available local variables
-# url: url to the next page
-# current_page: a page object for the currently displayed page
-# total_pages: total number of pages
-# per_page: number of items to fetch per page
-# remote: data-remote
%span.next
= link_to_unless current_page.last?, t('views.pagination.next').html_safe, url, :rel => 'next', :remote => remote

View file

@ -0,0 +1,12 @@
-# Link showing page number
-# available local variables
-# page: a page object for "this" page
-# url: url to this page
-# current_page: a page object for the currently displayed page
-# total_pages: total number of pages
-# per_page: number of items to fetch per page
-# remote: data-remote
%span{:class => "page#{' current' if page.current?}"}
- param_name = current_page.instance_variable_get("@options")[:param_name] || Kaminari.config.param_name
- urlik = url_for( params.merge(param_name => page.to_i, :only_path => true))
= link_to_unless page.current?, page, urlik, {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil}

View file

@ -0,0 +1,18 @@
-# The container tag
-# available local variables
-# current_page: a page object for the currently displayed page
-# total_pages: total number of pages
-# per_page: number of items to fetch per page
-# remote: data-remote
-# paginator: the paginator that renders the pagination tags inside
= paginator.render do
%nav.pagination
= first_page_tag unless current_page.first?
= prev_page_tag unless current_page.first?
- each_page do |page|
- if page.left_outer? || page.right_outer? || page.inside_window?
= page_tag page
- elsif !page.was_truncated?
= gap_tag
= next_page_tag unless current_page.last?
= last_page_tag unless current_page.last?

View file

@ -0,0 +1,11 @@
-# Link to the "Previous" page
-# available local variables
-# url: url to the previous page
-# current_page: a page object for the currently displayed page
-# total_pages: total number of pages
-# per_page: number of items to fetch per page
-# remote: data-remote
%span.prev
- param_name = current_page.instance_variable_get("@options")[:param_name] || Kaminari.config.param_name
- urlik = url_for( params.merge(param_name => current_page.to_i - 1, :only_path => true))
= link_to_unless current_page.first?, t('views.pagination.previous').html_safe, urlik, :rel => 'prev', :remote => remote

View file

@ -959,4 +959,5 @@ en:
verified_confirm: 'Verified status is for cases when current registrant is the one applying for the update. Legal document signed by the registrant is required. Are you sure this update is properly verified with the registrant?'
verified: 'Verified'
only_estonian_residets_can_signin: "Access currently available only to Estonian citizens and e-residents with Estonian ID-card or Mobile-ID."
deleted: 'Deleted'
cant_match_version: 'Impossible match version with request'