Skip to content

Commit

Permalink
[frontend] Group class and instance methods together
Browse files Browse the repository at this point in the history
  • Loading branch information
bgeuken committed Oct 11, 2017
1 parent ae97338 commit 15878f7
Showing 1 changed file with 108 additions and 108 deletions.
216 changes: 108 additions & 108 deletions src/api/app/models/bs_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,10 @@ class SaveError < APIException
after_update :send_state_change
after_commit :update_cache

def save!(args = {})
new = created_at ? nil : 1
sanitize! if new && !@skip_sanitize
super
notify if new
def self.delayed_auto_accept
to_accept.each do |request|
BsRequestAutoAcceptJob.perform_later(request.id)
end
end

def self.find_by_number!(number)
Expand All @@ -107,75 +106,40 @@ def self.find_by_number!(number)
r
end

def history_elements
HistoryElement::Base.where(id: request_history_elements.pluck(:id) + review_history_elements.pluck(:id)).order(:created_at)
end

def set_add_revision
@addrevision = true
end

def set_ignore_build_state
@ignore_build_state = true
end

def skip_sanitize
@skip_sanitize = true
end

def check_creator
unless creator
errors.add(:creator, 'No creator defined')
end
user = User.get_by_login creator
unless user
errors.add(:creator, "Invalid creator specified #{creator}")
def self.list(opts)
# All types means don't pass 'type'
if opts[:types] == 'all' || (opts[:types].respond_to?(:include?) && opts[:types].include?('all'))
opts.delete(:types)
end
return if user.is_active?
errors.add(:creator, "Login #{user.login} is not an active user")
end

def assign_number
return if number
# to assign a unique and steady incremental number.
# Using MySQL auto-increment mechanism is not working on clusters.
BsRequest.transaction do
request_counter = BsRequestCounter.lock(true).first_or_create
self.number = request_counter.counter
request_counter.increment(:counter)
request_counter.save!
# Do not allow a full collection to avoid server load
if [:project, :user, :package].all? { |filter| opts[filter].blank? }
raise RuntimeError, 'This call requires at least one filter, either by user, project or package'
end
end
roles = opts[:roles] || []
states = opts[:states] || []

def check_supersede_state
if state == :superseded && (!superseded_by.is_a?(Numeric) || !(superseded_by > 0))
errors.add(:superseded_by, 'Superseded_by should be set')
# it's wiser to split the queries
if opts[:project] && roles.empty? && (states.empty? || states.include?("review"))
(BsRequest.find_for(opts.merge(roles: ["reviewer"])) +
BsRequest.find_for(opts.merge(roles: ["target", "source"]))).uniq
else
BsRequest.find_for(opts).uniq
end

return unless superseded_by && !(state == :superseded)
errors.add(:superseded_by, 'Superseded_by should not be set')
end

def updated_when
self[:updated_when] || self[:updated_at]
end

def superseding
BsRequest.where(superseded_by: number)
end

def state
read_attribute(:state).to_sym
def self.list_numbers(opts)
list(opts).pluck(:number)
end

after_rollback :reset_cache
after_save :reset_cache

def reset_cache
return unless id
Rails.cache.delete("xml_bs_request_fullhistory_#{cache_key}")
Rails.cache.delete("xml_bs_request_history_#{cache_key}")
Rails.cache.delete("xml_bs_request_#{cache_key}")
def self.actions_summary(payload)
ret = []
payload.with_indifferent_access['actions'][0..ActionNotifyLimit].each do |a|
str = "#{a['type']} #{a['targetproject']}"
str += "/#{a['targetpackage']}" if a['targetpackage']
str += "/#{a['targetrepository']}" if a['targetrepository']
ret << str
end
ret.join(', ')
end

def self.new_from_xml(xml)
Expand Down Expand Up @@ -269,6 +233,84 @@ def self.new_from_xml(xml)
request
end

def save!(args = {})
new = created_at ? nil : 1
sanitize! if new && !@skip_sanitize
super
notify if new
end

def history_elements
HistoryElement::Base.where(id: request_history_elements.pluck(:id) + review_history_elements.pluck(:id)).order(:created_at)
end

def set_add_revision
@addrevision = true
end

def set_ignore_build_state
@ignore_build_state = true
end

def skip_sanitize
@skip_sanitize = true
end

def check_creator
unless creator
errors.add(:creator, 'No creator defined')
end
user = User.get_by_login creator
unless user
errors.add(:creator, "Invalid creator specified #{creator}")
end
return if user.is_active?
errors.add(:creator, "Login #{user.login} is not an active user")
end

def assign_number
return if number
# to assign a unique and steady incremental number.
# Using MySQL auto-increment mechanism is not working on clusters.
BsRequest.transaction do
request_counter = BsRequestCounter.lock(true).first_or_create
self.number = request_counter.counter
request_counter.increment(:counter)
request_counter.save!
end
end

def check_supersede_state
if state == :superseded && (!superseded_by.is_a?(Numeric) || !(superseded_by > 0))
errors.add(:superseded_by, 'Superseded_by should be set')
end

return unless superseded_by && !(state == :superseded)
errors.add(:superseded_by, 'Superseded_by should not be set')
end

def updated_when
self[:updated_when] || self[:updated_at]
end

def superseding
BsRequest.where(superseded_by: number)
end

def state
read_attribute(:state).to_sym
end

after_rollback :reset_cache
after_save :reset_cache

def reset_cache
return unless id
Rails.cache.delete("xml_bs_request_fullhistory_#{cache_key}")
Rails.cache.delete("xml_bs_request_history_#{cache_key}")
Rails.cache.delete("xml_bs_request_#{cache_key}")
end

def to_axml(opts = {})
if opts[:withfullhistory]
Rails.cache.fetch("xml_bs_request_fullhistory_#{cache_key}") do
Expand Down Expand Up @@ -824,17 +866,6 @@ def notify_parameters(ret = {})
ret
end

def self.actions_summary(payload)
ret = []
payload.with_indifferent_access['actions'][0..ActionNotifyLimit].each do |a|
str = "#{a['type']} #{a['targetproject']}"
str += "/#{a['targetpackage']}" if a['targetpackage']
str += "/#{a['targetrepository']}" if a['targetrepository']
ret << str
end
ret.join(', ')
end

def review_matches_user?(review, user)
return false unless user
if review.by_user
Expand Down Expand Up @@ -912,12 +943,6 @@ def auto_accept
end
end

def self.delayed_auto_accept
to_accept.each do |request|
BsRequestAutoAcceptJob.perform_later(request.id)
end
end

# Check if 'user' is maintainer in _all_ request targets:
def is_target_maintainer?(user = User.current)
has_target, is_target_maintainer = false, true
Expand Down Expand Up @@ -1125,31 +1150,6 @@ def expand_targets
newactions.each { |a| bs_request_actions << a }
end

def self.list(opts)
# All types means don't pass 'type'
if opts[:types] == 'all' || (opts[:types].respond_to?(:include?) && opts[:types].include?('all'))
opts.delete(:types)
end
# Do not allow a full collection to avoid server load
if [:project, :user, :package].all? { |filter| opts[filter].blank? }
raise RuntimeError, 'This call requires at least one filter, either by user, project or package'
end
roles = opts[:roles] || []
states = opts[:states] || []

# it's wiser to split the queries
if opts[:project] && roles.empty? && (states.empty? || states.include?("review"))
(BsRequest.find_for(opts.merge(roles: ["reviewer"])) +
BsRequest.find_for(opts.merge(roles: ["target", "source"]))).uniq
else
BsRequest.find_for(opts).uniq
end
end

def self.list_numbers(opts)
list(opts).pluck(:number)
end

def update_cache
target_package_ids = bs_request_actions.with_target_package.pluck(:target_package_id)
target_project_ids = bs_request_actions.with_target_project.pluck(:target_project_id)
Expand Down

0 comments on commit 15878f7

Please sign in to comment.