mirror of
https://github.com/internetee/registry.git
synced 2025-07-03 09:43:36 +02:00
Story#109014746 - save only ident_country_code through EPP
This commit is contained in:
parent
a74216c5e5
commit
9e9dbc813c
1 changed files with 32 additions and 17 deletions
|
@ -21,7 +21,7 @@ class Epp::Contact < Contact
|
||||||
# rubocop: disable Metrics/PerceivedComplexity
|
# rubocop: disable Metrics/PerceivedComplexity
|
||||||
# rubocop: disable Metrics/CyclomaticComplexity
|
# rubocop: disable Metrics/CyclomaticComplexity
|
||||||
# rubocop: disable Metrics/AbcSize
|
# rubocop: disable Metrics/AbcSize
|
||||||
def attrs_from(frame)
|
def attrs_from(frame, new_record: false)
|
||||||
f = frame
|
f = frame
|
||||||
at = {}.with_indifferent_access
|
at = {}.with_indifferent_access
|
||||||
at[:name] = f.css('postalInfo name').text if f.css('postalInfo name').present?
|
at[:name] = f.css('postalInfo name').text if f.css('postalInfo name').present?
|
||||||
|
@ -40,7 +40,7 @@ class Epp::Contact < Contact
|
||||||
if legal_frame.present?
|
if legal_frame.present?
|
||||||
at[:legal_documents_attributes] = legal_document_attrs(legal_frame)
|
at[:legal_documents_attributes] = legal_document_attrs(legal_frame)
|
||||||
end
|
end
|
||||||
at.merge!(ident_attrs(f.css('ident').first))
|
at.merge!(ident_attrs(f.css('ident').first)) if new_record
|
||||||
at
|
at
|
||||||
end
|
end
|
||||||
# rubocop: enable Metrics/PerceivedComplexity
|
# rubocop: enable Metrics/PerceivedComplexity
|
||||||
|
@ -51,7 +51,7 @@ class Epp::Contact < Contact
|
||||||
return super if frame.blank?
|
return super if frame.blank?
|
||||||
|
|
||||||
super(
|
super(
|
||||||
attrs_from(frame).merge(
|
attrs_from(frame, new_record: true).merge(
|
||||||
code: frame.css('id').text,
|
code: frame.css('id').text,
|
||||||
registrar: registrar
|
registrar: registrar
|
||||||
)
|
)
|
||||||
|
@ -59,10 +59,7 @@ class Epp::Contact < Contact
|
||||||
end
|
end
|
||||||
|
|
||||||
def ident_attrs(ident_frame)
|
def ident_attrs(ident_frame)
|
||||||
return {} if ident_frame.blank?
|
return {} unless ident_attr_valid?(ident_frame)
|
||||||
return {} if ident_frame.try('text').blank?
|
|
||||||
return {} if ident_frame.attr('type').blank?
|
|
||||||
return {} if ident_frame.attr('cc').blank?
|
|
||||||
|
|
||||||
{
|
{
|
||||||
ident: ident_frame.text,
|
ident: ident_frame.text,
|
||||||
|
@ -71,6 +68,15 @@ class Epp::Contact < Contact
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def ident_attr_valid?(ident_frame)
|
||||||
|
return false if ident_frame.blank?
|
||||||
|
return false if ident_frame.try('text').blank?
|
||||||
|
return false if ident_frame.attr('type').blank?
|
||||||
|
return false if ident_frame.attr('cc').blank?
|
||||||
|
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
def legal_document_attrs(legal_frame)
|
def legal_document_attrs(legal_frame)
|
||||||
return [] if legal_frame.blank?
|
return [] if legal_frame.blank?
|
||||||
return [] if legal_frame.try('text').blank?
|
return [] if legal_frame.try('text').blank?
|
||||||
|
@ -137,7 +143,7 @@ class Epp::Contact < Contact
|
||||||
def update_attributes(frame)
|
def update_attributes(frame)
|
||||||
return super if frame.blank?
|
return super if frame.blank?
|
||||||
at = {}.with_indifferent_access
|
at = {}.with_indifferent_access
|
||||||
at.deep_merge!(self.class.attrs_from(frame.css('chg')))
|
at.deep_merge!(self.class.attrs_from(frame.css('chg'), new_record: false))
|
||||||
|
|
||||||
if Setting.client_status_editing_enabled
|
if Setting.client_status_editing_enabled
|
||||||
at[:statuses] = statuses - statuses_attrs(frame.css('rem'), 'rem') + statuses_attrs(frame.css('add'), 'add')
|
at[:statuses] = statuses - statuses_attrs(frame.css('rem'), 'rem') + statuses_attrs(frame.css('add'), 'add')
|
||||||
|
@ -147,17 +153,26 @@ class Epp::Contact < Contact
|
||||||
at[:legal_documents_attributes] = self.class.legal_document_attrs(legal_frame)
|
at[:legal_documents_attributes] = self.class.legal_document_attrs(legal_frame)
|
||||||
self.deliver_emails = true # turn on email delivery for epp
|
self.deliver_emails = true # turn on email delivery for epp
|
||||||
|
|
||||||
|
|
||||||
# allow to update ident code for legacy contacts
|
# allow to update ident code for legacy contacts
|
||||||
if frame.css('ident').first.present?
|
if frame.css('ident').first
|
||||||
if ident_updated_at.present?
|
self.ident_updated_at ||= Time.zone.now # not in use
|
||||||
throw :epp_error, {
|
ident_frame = frame.css('ident').first
|
||||||
code: '2306',
|
|
||||||
msg: I18n.t(:ident_update_error)
|
if ident_frame && ident_attr_valid?(ident_frame) && ident_country_code.blank? && ident_type.in?(%w(org priv).freeze)
|
||||||
}
|
at.merge!(ident_country_code: ident_frame.attr('cc'))
|
||||||
else
|
|
||||||
at.merge!(self.class.ident_attrs(frame.css('ident').first))
|
|
||||||
self.ident_updated_at = Time.zone.now
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Deprecated
|
||||||
|
# if ident_updated_at.present?
|
||||||
|
# throw :epp_error, {
|
||||||
|
# code: '2306',
|
||||||
|
# msg: I18n.t(:ident_update_error)
|
||||||
|
# }
|
||||||
|
# else
|
||||||
|
# at.merge!(self.class.ident_attrs(frame.css('ident').first))
|
||||||
|
# self.ident_updated_at = Time.zone.now
|
||||||
|
# end
|
||||||
end
|
end
|
||||||
|
|
||||||
super(at)
|
super(at)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue