mirror of
https://github.com/internetee/registry.git
synced 2025-05-20 19:29:39 +02:00
108869472-archive
This commit is contained in:
parent
a8ff887717
commit
9278e6703f
5 changed files with 171 additions and 39 deletions
|
@ -3,37 +3,30 @@ class Admin::ContactVersionsController < AdminController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
params[:q] ||= {}
|
params[:q] ||= {}
|
||||||
|
|
||||||
@q = ContactVersion.search(params[:q])
|
@q = ContactVersion.search(params[:q])
|
||||||
@versions = @q.result.page(params[:page])
|
@versions = @q.result.page(params[:page])
|
||||||
|
|
||||||
versions = ContactVersion.all
|
whereS = "1=1"
|
||||||
|
|
||||||
normalize_search_parameters do
|
params[:q].each do |key, value|
|
||||||
@q = versions.search(params[:q])
|
next if value.empty?
|
||||||
@versions = @q.result.page(params[:page])
|
whereS += create_where_string(key, value)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
versions = ContactVersion.includes(:item).where(whereS)
|
||||||
|
@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
|
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def search
|
def search
|
||||||
render json: ContactVersion.search_by_query(params[:q])
|
render json: ContactVersion.search_by_query(params[:q])
|
||||||
end
|
end
|
||||||
|
|
||||||
def normalize_search_parameters
|
def create_where_string(key, value)
|
||||||
ca_cache = params[:q][:created_at_lteq]
|
" AND object->>'#{key}' ~ '#{value}'"
|
||||||
begin
|
|
||||||
end_time = params[:q][:created_at_lteq].try(:to_date)
|
|
||||||
params[:q][:created_at_lteq] = end_time.try(:end_of_day)
|
|
||||||
end_time = params[:q][:updated_at_gteq].try(:to_date)
|
|
||||||
params[:q][:updated_at_lteq] = end_time.try(:end_of_day)
|
|
||||||
rescue
|
|
||||||
logger.warn('Invalid date')
|
|
||||||
end
|
|
||||||
|
|
||||||
yield
|
|
||||||
|
|
||||||
params[:q][:created_at_lteq] = ca_cache
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,18 +1,48 @@
|
||||||
class Admin::DomainVersionsController < AdminController
|
class Admin::DomainVersionsController < AdminController
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource
|
||||||
|
|
||||||
# rubocop:disable Style/GuardClause
|
|
||||||
def index
|
def index
|
||||||
# @domain = Domain.where(id: params[:domain_id]).includes({versions: :item}).first
|
params[:q] ||= {}
|
||||||
# @versions = @domain.versions
|
|
||||||
|
@q = DomainVersion.includes(:item).search(params[:q])
|
||||||
|
@versions = @q.result.page(params[:page])
|
||||||
|
search_params = params[:q].deep_dup
|
||||||
|
|
||||||
|
if search_params[:registrant]
|
||||||
|
registrant = Contact.find_by_name(search_params[:registrant])
|
||||||
|
search_params.delete(:registrant)
|
||||||
|
end
|
||||||
|
|
||||||
|
if search_params[:registrar]
|
||||||
|
registrar = Registrar.find_by_name(search_params[:registrar])
|
||||||
|
search_params.delete(:registrar)
|
||||||
|
end
|
||||||
|
|
||||||
|
whereS = "1=1"
|
||||||
|
|
||||||
|
search_params.each do |key, value|
|
||||||
|
next if value.empty?
|
||||||
|
whereS += create_where_string(key, value)
|
||||||
|
end
|
||||||
|
|
||||||
|
whereS += " AND object->>'registrant_id' ~ '#{registrant.id}'" if registrant
|
||||||
|
whereS += " AND object->>'registrar_id' ~ '#{registrar.id}'" if registrar
|
||||||
|
|
||||||
|
versions = DomainVersion.includes(:item).where(whereS)
|
||||||
|
@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
|
||||||
|
render "admin/domain_versions/archive"
|
||||||
|
|
||||||
# Depricated it had to load legal document. We may do it by parsing and adding link.
|
|
||||||
# if @domain.pending_json.present?
|
|
||||||
# frame = Nokogiri::XML(@domain.pending_json['frame'])
|
|
||||||
# @pending_user = User.find(@domain.pending_json['current_user_id'])
|
|
||||||
# @pending_domain = Epp::Domain.find(@domain.id)
|
|
||||||
# @pending_domain.update(frame, @pending_user, false)
|
|
||||||
# end
|
|
||||||
end
|
end
|
||||||
# rubocop:enable Style/GuardClause
|
|
||||||
|
def search
|
||||||
|
render json: DomainVersion.search_by_query(params[:q])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_where_string(key, value)
|
||||||
|
" AND object->>'#{key}' ~ '#{value}'"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
|
@ -38,7 +38,7 @@ class DomainNameValidator < ActiveModel::EachValidator
|
||||||
|
|
||||||
def validate_blocked(value)
|
def validate_blocked(value)
|
||||||
return true unless value
|
return true unless value
|
||||||
return false if BlockedDomain.where("names @> ?::varchar[]", "{#{value}}").count > 0
|
return false if BlockedDomain.where(name: value).count > 0
|
||||||
ZonefileSetting.where(origin: value).count == 0
|
ZonefileSetting.where(origin: value).count == 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,40 @@
|
||||||
= render 'shared/title', name: t(:contact_versions)
|
= render 'shared/title', name: t(:contacts)
|
||||||
|
|
||||||
|
.row
|
||||||
|
.col-md-12
|
||||||
|
= search_form_for [:admin, @q], html: { style: 'margin-bottom: 0;', class: 'js-form', autocomplete: 'off' } do |f|
|
||||||
|
.row
|
||||||
|
.col-md-3
|
||||||
|
.form-group
|
||||||
|
= f.label :name
|
||||||
|
= f.search_field :name, value: params[:q][:name], class: 'form-control', placeholder: t(:name)
|
||||||
|
.col-md-3
|
||||||
|
.form-group
|
||||||
|
= f.label :id
|
||||||
|
= f.search_field :id, value: params[:q][:id], 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)
|
||||||
|
.row
|
||||||
|
.col-md-3
|
||||||
|
.col-md-3
|
||||||
|
.col-md-3
|
||||||
|
.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)
|
||||||
|
.col-md-3{style: 'padding-top: 25px;'}
|
||||||
|
%button.btn.btn-primary
|
||||||
|
|
||||||
|
%span.glyphicon.glyphicon-search
|
||||||
|
|
||||||
|
%button.btn.btn-default.js-reset-form
|
||||||
|
= t(:clear_fields)
|
||||||
|
%hr
|
||||||
|
|
||||||
|
|
||||||
.row
|
.row
|
||||||
|
@ -8,30 +44,30 @@
|
||||||
%thead
|
%thead
|
||||||
%tr
|
%tr
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'name', t(:name))
|
= t(:name)
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'code', t(:id))
|
= t(:id)
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'ident', t(:ident))
|
= t(:ident)
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'registrar_name', t(:registrar))
|
= t(:phone)
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'email', t(:created_at))
|
= t(:registrar)
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'action', t(:action))
|
= t(:action)
|
||||||
%tbody
|
%tbody
|
||||||
- @versions.each do |version|
|
- @versions.each do |version|
|
||||||
%tr
|
%tr
|
||||||
%td= version.reify.name
|
%td= version.reify.name
|
||||||
%td= version.reify.code
|
%td= version.reify.code
|
||||||
%td= ident_for(version.reify)
|
%td= ident_for(version.reify)
|
||||||
%td= l(version.created_at, format: :short)
|
%td= version.reify.phone
|
||||||
%td
|
%td
|
||||||
- if version.reify.registrar
|
- if version.reify.registrar
|
||||||
= link_to(version.reify.registrar, admin_registrar_path(version.reify.registrar))
|
= link_to(version.reify.registrar, admin_registrar_path(version.reify.registrar))
|
||||||
|
|
||||||
%td= version.event
|
%td= version.event
|
||||||
|
|
||||||
|
|
||||||
.row
|
.row
|
||||||
.col-md-6
|
.col-md-6
|
||||||
= paginate @versions
|
= paginate @versions
|
||||||
|
|
73
app/views/admin/domain_versions/archive.haml
Normal file
73
app/views/admin/domain_versions/archive.haml
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
= render 'shared/title', name: t(:domains)
|
||||||
|
|
||||||
|
.row
|
||||||
|
.col-md-12
|
||||||
|
= search_form_for [:admin, @q], html: { style: 'margin-bottom: 0;', class: 'js-form', autocomplete: 'off' } do |f|
|
||||||
|
.row
|
||||||
|
.col-md-3
|
||||||
|
.form-group
|
||||||
|
= label_tag :name
|
||||||
|
= f.search_field :name, value: params[:q][:name], class: 'form-control', placeholder: t(:name)
|
||||||
|
.col-md-3
|
||||||
|
.form-group
|
||||||
|
= label_tag :registrant
|
||||||
|
= f.search_field :registrant, value: params[:q][:registrant], class: 'form-control', placeholder: t(:registrant)
|
||||||
|
.col-md-3
|
||||||
|
.form-group
|
||||||
|
= label_tag t(:registrar)
|
||||||
|
= f.search_field :registrar, value: params[:q][:registrar], class: 'form-control', placeholder: t(:registrant)
|
||||||
|
.col-md-3
|
||||||
|
.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)
|
||||||
|
.row
|
||||||
|
.col-md-3
|
||||||
|
.col-md-3
|
||||||
|
.col-md-3
|
||||||
|
.col-md-3{style: 'padding-top: 25px;'}
|
||||||
|
%button.btn.btn-primary
|
||||||
|
|
||||||
|
%span.glyphicon.glyphicon-search
|
||||||
|
|
||||||
|
%button.btn.btn-default.js-reset-form
|
||||||
|
= t(:clear_fields)
|
||||||
|
%hr
|
||||||
|
|
||||||
|
|
||||||
|
.row
|
||||||
|
.col-md-12
|
||||||
|
.table-responsive
|
||||||
|
%table.table.table-hover.table-bordered.table-condensed
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th{class: 'col-xs-2'}
|
||||||
|
= t(:name)
|
||||||
|
%th{class: 'col-xs-2'}
|
||||||
|
= t(:registrant)
|
||||||
|
%th{class: 'col-xs-2'}
|
||||||
|
= t(:registrar)
|
||||||
|
%th{class: 'col-xs-2'}
|
||||||
|
= t(:action)
|
||||||
|
%tbody
|
||||||
|
- @versions.each do |version|
|
||||||
|
%tr
|
||||||
|
%td= version.reify.name
|
||||||
|
%td
|
||||||
|
- if version.reify.registrant.ident
|
||||||
|
= link_to(version.reify.registrant, admin_registrant_path(version.reify.registrant))
|
||||||
|
%td
|
||||||
|
- if version.reify.registrar
|
||||||
|
= link_to(version.reify.registrar, admin_registrar_path(version.reify.registrar))
|
||||||
|
%td= version.event
|
||||||
|
|
||||||
|
|
||||||
|
.row
|
||||||
|
.col-md-6
|
||||||
|
= paginate @versions
|
||||||
|
.col-md-6.text-right
|
||||||
|
|
||||||
|
|
||||||
|
:coffee
|
||||||
|
$(".js-reset-form").on "click", (e) ->
|
||||||
|
e.preventDefault();
|
||||||
|
window.location = "#{admin_domain_versions_path}"
|
Loading…
Add table
Add a link
Reference in a new issue