2012-11-06 14:13:16 +00:00
|
|
|
# -*- encoding : utf-8 -*-
|
|
|
|
module Modules
|
|
|
|
module Models
|
|
|
|
module CommitAndVersion
|
|
|
|
extend ActiveSupport::Concern
|
|
|
|
|
|
|
|
included do
|
2012-12-03 17:43:24 +00:00
|
|
|
|
2012-11-06 14:13:16 +00:00
|
|
|
validate lambda {
|
2012-11-06 17:17:44 +00:00
|
|
|
if project && (commit_hash.blank? || project.repo.commit(commit_hash).blank?)
|
2012-11-06 14:13:16 +00:00
|
|
|
errors.add :commit_hash, I18n.t('flash.build_list.wrong_commit_hash', :commit_hash => commit_hash)
|
|
|
|
end
|
|
|
|
}
|
|
|
|
|
|
|
|
before_validation :set_commit_and_version
|
2012-12-03 17:43:24 +00:00
|
|
|
before_create :set_last_published_commit
|
2012-11-06 14:13:16 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
protected
|
|
|
|
|
|
|
|
def set_commit_and_version
|
2012-11-06 18:01:54 +00:00
|
|
|
if project && project_version.present? && commit_hash.blank?
|
2012-11-06 14:13:16 +00:00
|
|
|
self.commit_hash = project.repo.commits(project_version.match(/^latest_(.+)/).to_a.last ||
|
|
|
|
project_version).try(:first).try(:id)
|
|
|
|
elsif project_version.blank? && commit_hash.present?
|
|
|
|
self.project_version = commit_hash
|
|
|
|
end
|
|
|
|
end
|
2012-12-03 17:43:24 +00:00
|
|
|
|
|
|
|
def set_last_published_commit
|
|
|
|
self.last_published_commit_hash = self.last_published.try :commit_hash
|
|
|
|
end
|
2012-11-06 14:13:16 +00:00
|
|
|
end
|
|
|
|
end
|
2012-12-03 17:43:24 +00:00
|
|
|
end
|