added migration, updated models, UI
This commit is contained in:
parent
541a739c12
commit
ecec330b4d
|
@ -23,6 +23,7 @@ class Platforms::ProductsController < Platforms::BaseController
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
@product.project = find_project
|
||||||
if @product.save
|
if @product.save
|
||||||
flash[:notice] = t('flash.product.saved')
|
flash[:notice] = t('flash.product.saved')
|
||||||
redirect_to platform_product_path(@platform, @product)
|
redirect_to platform_product_path(@platform, @product)
|
||||||
|
@ -34,6 +35,7 @@ class Platforms::ProductsController < Platforms::BaseController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
@product.project = find_project
|
||||||
if @product.update_attributes(params[:product])
|
if @product.update_attributes(params[:product])
|
||||||
flash[:notice] = t('flash.product.saved')
|
flash[:notice] = t('flash.product.saved')
|
||||||
redirect_to platform_product_path(@platform, @product)
|
redirect_to platform_product_path(@platform, @product)
|
||||||
|
@ -53,4 +55,19 @@ class Platforms::ProductsController < Platforms::BaseController
|
||||||
redirect_to platform_products_path(@platform)
|
redirect_to platform_products_path(@platform)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def autocomplete_project
|
||||||
|
items = Project.accessible_by(current_ability, :membered).
|
||||||
|
search(params[:term]).search_order
|
||||||
|
items.select! {|e| e.repo.branches.count > 0}
|
||||||
|
render :json => items.map{ |p|
|
||||||
|
{:id => p.id, :label => p.name_with_owner, :value => p.name_with_owner}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def find_project
|
||||||
|
args = params[:src_project].try(:split, '/') || []
|
||||||
|
(args.length == 2) ? Project.find_by_owner_and_name(*args) : nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# -*- encoding : utf-8 -*-
|
# -*- encoding : utf-8 -*-
|
||||||
class BuildList < ActiveRecord::Base
|
class BuildList < ActiveRecord::Base
|
||||||
|
include Modules::Models::CommitAndVersion
|
||||||
|
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
belongs_to :arch
|
belongs_to :arch
|
||||||
belongs_to :save_to_platform, :class_name => 'Platform'
|
belongs_to :save_to_platform, :class_name => 'Platform'
|
||||||
|
@ -32,11 +34,6 @@ class BuildList < ActiveRecord::Base
|
||||||
errors.add(:save_to_repository, I18n.t('flash.build_list.wrong_include_repos')) unless build_for_platform.repository_ids.include? ir.to_i
|
errors.add(:save_to_repository, I18n.t('flash.build_list.wrong_include_repos')) unless build_for_platform.repository_ids.include? ir.to_i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
validate lambda {
|
|
||||||
if commit_hash.blank? || project.repo.commit(commit_hash).blank?
|
|
||||||
errors.add :commit_hash, I18n.t('flash.build_list.wrong_commit_hash', :commit_hash => commit_hash)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
LIVE_TIME = 4.week # for unpublished
|
LIVE_TIME = 4.week # for unpublished
|
||||||
MAX_LIVE_TIME = 3.month # for published
|
MAX_LIVE_TIME = 3.month # for published
|
||||||
|
@ -115,7 +112,6 @@ class BuildList < ActiveRecord::Base
|
||||||
|
|
||||||
after_commit :place_build
|
after_commit :place_build
|
||||||
after_destroy :delete_container
|
after_destroy :delete_container
|
||||||
before_validation :set_commit_and_version
|
|
||||||
|
|
||||||
@queue = :clone_and_build
|
@queue = :clone_and_build
|
||||||
|
|
||||||
|
@ -349,13 +345,4 @@ class BuildList < ActiveRecord::Base
|
||||||
yield p
|
yield p
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_commit_and_version
|
|
||||||
if project_version.present? && commit_hash.blank?
|
|
||||||
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
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,6 +3,7 @@ class Product < ActiveRecord::Base
|
||||||
ATTRS_TO_CLONE = [ 'build_path', 'build_script', 'counter', 'ks', 'menu', 'tar', 'use_cron', 'cron_tab' ]
|
ATTRS_TO_CLONE = [ 'build_path', 'build_script', 'counter', 'ks', 'menu', 'tar', 'use_cron', 'cron_tab' ]
|
||||||
|
|
||||||
belongs_to :platform
|
belongs_to :platform
|
||||||
|
belongs_to :project
|
||||||
has_many :product_build_lists, :dependent => :destroy
|
has_many :product_build_lists, :dependent => :destroy
|
||||||
|
|
||||||
after_validation :merge_tar_errors
|
after_validation :merge_tar_errors
|
||||||
|
@ -15,7 +16,9 @@ class Product < ActiveRecord::Base
|
||||||
|
|
||||||
scope :recent, order("name ASC")
|
scope :recent, order("name ASC")
|
||||||
|
|
||||||
attr_accessible :name, :counter, :ks, :menu, :tar, :cron_tab, :use_cron, :description, :build_script, :delete_tar
|
attr_accessible :name, :counter, :ks, :menu, :tar,
|
||||||
|
:cron_tab, :use_cron, :description, :build_script,
|
||||||
|
:delete_tar, :lst, :repos, :project_id
|
||||||
attr_readonly :platform_id
|
attr_readonly :platform_id
|
||||||
|
|
||||||
def delete_tar
|
def delete_tar
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# -*- encoding : utf-8 -*-
|
# -*- encoding : utf-8 -*-
|
||||||
class ProductBuildList < ActiveRecord::Base
|
class ProductBuildList < ActiveRecord::Base
|
||||||
|
include Modules::Models::CommitAndVersion
|
||||||
|
|
||||||
BUILD_STARTED = 2
|
BUILD_STARTED = 2
|
||||||
BUILD_COMPLETED = 0
|
BUILD_COMPLETED = 0
|
||||||
BUILD_FAILED = 1
|
BUILD_FAILED = 1
|
||||||
|
@ -15,12 +17,15 @@ class ProductBuildList < ActiveRecord::Base
|
||||||
}
|
}
|
||||||
|
|
||||||
belongs_to :product
|
belongs_to :product
|
||||||
|
belongs_to :project
|
||||||
|
belongs_to :arch
|
||||||
|
|
||||||
|
|
||||||
validates :product_id, :status, :presence => true
|
validates :product_id, :status, :presence => true
|
||||||
validates :status, :inclusion => { :in => [BUILD_STARTED, BUILD_COMPLETED, BUILD_FAILED] }
|
validates :status, :inclusion => { :in => [BUILD_STARTED, BUILD_COMPLETED, BUILD_FAILED] }
|
||||||
|
|
||||||
attr_accessor :base_url
|
attr_accessor :base_url
|
||||||
attr_accessible :status, :base_url
|
attr_accessible :status, :base_url, :branch, :arch_id, :project_id
|
||||||
attr_readonly :product_id
|
attr_readonly :product_id
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,15 @@
|
||||||
|
|
||||||
= render "crontab", :form => f
|
= render "crontab", :form => f
|
||||||
|
|
||||||
|
|
||||||
|
%b
|
||||||
|
= t('layout.products.new_iso_builder')
|
||||||
|
%br
|
||||||
|
%br
|
||||||
|
= render 'iso_build_form', :f => f
|
||||||
|
|
||||||
|
.both
|
||||||
|
|
||||||
.both
|
.both
|
||||||
.button_block
|
.button_block
|
||||||
= submit_tag t("layout.save")
|
= submit_tag t("layout.save")
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
.leftlist= f.label :lst, t("activerecord.attributes.product.lst"), :class => :label
|
||||||
|
.rightlist= f.text_field :lst, :class => 'text_field'
|
||||||
|
.both
|
||||||
|
|
||||||
|
.leftlist= f.label :repos, t("activerecord.attributes.product.repos"), :class => :label
|
||||||
|
.rightlist= f.text_area :repos, :class => 'text_field resizable'
|
||||||
|
.both
|
||||||
|
|
||||||
|
.leftlist= f.label :project, t("activerecord.attributes.product.project"), :class => :label
|
||||||
|
.rightlist= f.autocomplete_field :project, autocomplete_project_platform_products_path(@platform), :id_element => 'src_project_id', :name => 'src_project', :value => @product.project.try(:name_with_owner)
|
|
@ -1,6 +1,7 @@
|
||||||
en:
|
en:
|
||||||
layout:
|
layout:
|
||||||
products:
|
products:
|
||||||
|
new_iso_builder: Params for new ISO builder (betta version)
|
||||||
list: List
|
list: List
|
||||||
about: About product
|
about: About product
|
||||||
build_lists_monitoring: Build lists monitoring
|
build_lists_monitoring: Build lists monitoring
|
||||||
|
@ -55,3 +56,5 @@ en:
|
||||||
system_wide: System-wide
|
system_wide: System-wide
|
||||||
cron_tab: Cron tab
|
cron_tab: Cron tab
|
||||||
use_cron: Use cron
|
use_cron: Use cron
|
||||||
|
repos: Repositories
|
||||||
|
project: Project
|
|
@ -1,6 +1,7 @@
|
||||||
ru:
|
ru:
|
||||||
layout:
|
layout:
|
||||||
products:
|
products:
|
||||||
|
new_iso_builder: Параметры для нового сборщика ISO образов (бетта версия)
|
||||||
list: Список
|
list: Список
|
||||||
about: О продукте
|
about: О продукте
|
||||||
build_lists_monitoring: Мониторинг сборочных заданий
|
build_lists_monitoring: Мониторинг сборочных заданий
|
||||||
|
@ -55,3 +56,5 @@ ru:
|
||||||
system_wide: Общесистемный
|
system_wide: Общесистемный
|
||||||
cron_tab: Cron tab
|
cron_tab: Cron tab
|
||||||
use_cron: Использовать крон
|
use_cron: Использовать крон
|
||||||
|
repos: Репозитории
|
||||||
|
project: Проект
|
||||||
|
|
|
@ -146,6 +146,7 @@ Rosa::Application.routes.draw do
|
||||||
resources :key_pairs, :only => [:create, :index, :destroy]
|
resources :key_pairs, :only => [:create, :index, :destroy]
|
||||||
resources :products do
|
resources :products do
|
||||||
resources :product_build_lists, :only => [:create, :destroy]
|
resources :product_build_lists, :only => [:create, :destroy]
|
||||||
|
collection { get :autocomplete_project }
|
||||||
end
|
end
|
||||||
resources :maintainers, :only => [:index]
|
resources :maintainers, :only => [:index]
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
class IntegrateNewIsoBuilderWithProducts < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :products, :project_id, :integer
|
||||||
|
add_column :product_build_lists, :project_id, :integer
|
||||||
|
|
||||||
|
add_column :product_build_lists, :project_version, :string
|
||||||
|
add_column :product_build_lists, :commit_hash, :string
|
||||||
|
|
||||||
|
add_column :products, :lst, :string
|
||||||
|
add_column :product_build_lists, :lst, :string
|
||||||
|
|
||||||
|
add_column :products, :repos, :text
|
||||||
|
add_column :product_build_lists, :repo, :string
|
||||||
|
|
||||||
|
add_column :product_build_lists, :arch_id, :integer
|
||||||
|
end
|
||||||
|
end
|
113
db/schema.rb
113
db/schema.rb
|
@ -11,14 +11,14 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20121005100158) do
|
ActiveRecord::Schema.define(:version => 20121106113338) do
|
||||||
|
|
||||||
create_table "activity_feeds", :force => true do |t|
|
create_table "activity_feeds", :force => true do |t|
|
||||||
t.integer "user_id", :null => false
|
t.integer "user_id", :null => false
|
||||||
t.string "kind"
|
t.string "kind"
|
||||||
t.text "data"
|
t.text "data"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "advisories", :force => true do |t|
|
create_table "advisories", :force => true do |t|
|
||||||
|
@ -53,8 +53,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
|
|
||||||
create_table "arches", :force => true do |t|
|
create_table "arches", :force => true do |t|
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "arches", ["name"], :name => "index_arches_on_name", :unique => true
|
add_index "arches", ["name"], :name => "index_arches_on_name", :unique => true
|
||||||
|
@ -63,8 +63,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.string "provider"
|
t.string "provider"
|
||||||
t.string "uid"
|
t.string "uid"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "authentications", ["provider", "uid"], :name => "index_authentications_on_provider_and_uid", :unique => true
|
add_index "authentications", ["provider", "uid"], :name => "index_authentications_on_provider_and_uid", :unique => true
|
||||||
|
@ -75,8 +75,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.integer "level"
|
t.integer "level"
|
||||||
t.integer "status"
|
t.integer "status"
|
||||||
t.integer "build_list_id"
|
t.integer "build_list_id"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.string "version"
|
t.string "version"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -110,8 +110,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "arch_id"
|
t.integer "arch_id"
|
||||||
t.datetime "notified_at"
|
t.datetime "notified_at"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.boolean "is_circle", :default => false
|
t.boolean "is_circle", :default => false
|
||||||
t.text "additional_repos"
|
t.text "additional_repos"
|
||||||
t.string "name"
|
t.string "name"
|
||||||
|
@ -142,8 +142,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.string "commentable_type"
|
t.string "commentable_type"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.text "body"
|
t.text "body"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.decimal "commentable_id", :precision => 50, :scale => 0
|
t.decimal "commentable_id", :precision => 50, :scale => 0
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.text "data"
|
t.text "data"
|
||||||
|
@ -161,8 +161,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.string "controller"
|
t.string "controller"
|
||||||
t.string "action"
|
t.string "action"
|
||||||
t.text "message"
|
t.text "message"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "flash_notifies", :force => true do |t|
|
create_table "flash_notifies", :force => true do |t|
|
||||||
|
@ -176,8 +176,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
|
|
||||||
create_table "groups", :force => true do |t|
|
create_table "groups", :force => true do |t|
|
||||||
t.integer "owner_id"
|
t.integer "owner_id"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.string "uname"
|
t.string "uname"
|
||||||
t.integer "own_projects_count", :default => 0, :null => false
|
t.integer "own_projects_count", :default => 0, :null => false
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
@ -194,8 +194,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.text "body"
|
t.text "body"
|
||||||
t.string "status", :default => "open"
|
t.string "status", :default => "open"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.datetime "closed_at"
|
t.datetime "closed_at"
|
||||||
t.integer "closed_by"
|
t.integer "closed_by"
|
||||||
|
@ -255,14 +255,14 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.string "description"
|
t.string "description"
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
t.integer "parent_platform_id"
|
t.integer "parent_platform_id"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.boolean "released", :default => false, :null => false
|
t.boolean "released", :default => false, :null => false
|
||||||
t.integer "owner_id"
|
t.integer "owner_id"
|
||||||
t.string "owner_type"
|
t.string "owner_type"
|
||||||
t.string "visibility", :default => "open", :null => false
|
t.string "visibility", :default => "open", :null => false
|
||||||
t.string "platform_type", :default => "main", :null => false
|
t.string "platform_type", :default => "main", :null => false
|
||||||
t.string "distrib_type"
|
t.string "distrib_type", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "platforms", ["name"], :name => "index_platforms_on_name", :unique => true, :case_sensitive => false
|
add_index "platforms", ["name"], :name => "index_platforms_on_name", :unique => true, :case_sensitive => false
|
||||||
|
@ -271,16 +271,22 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.integer "platform_id"
|
t.integer "platform_id"
|
||||||
t.string "login"
|
t.string "login"
|
||||||
t.string "password"
|
t.string "password"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "product_build_lists", :force => true do |t|
|
create_table "product_build_lists", :force => true do |t|
|
||||||
t.integer "product_id"
|
t.integer "product_id"
|
||||||
t.integer "status", :default => 2, :null => false
|
t.integer "status", :default => 2, :null => false
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
|
t.integer "project_id"
|
||||||
|
t.string "project_version"
|
||||||
|
t.string "commit_hash"
|
||||||
|
t.string "lst"
|
||||||
|
t.string "repo"
|
||||||
|
t.integer "arch_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "product_build_lists", ["product_id"], :name => "index_product_build_lists_on_product_id"
|
add_index "product_build_lists", ["product_id"], :name => "index_product_build_lists_on_product_id"
|
||||||
|
@ -288,8 +294,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
create_table "products", :force => true do |t|
|
create_table "products", :force => true do |t|
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
t.integer "platform_id", :null => false
|
t.integer "platform_id", :null => false
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.text "build_script"
|
t.text "build_script"
|
||||||
t.text "counter"
|
t.text "counter"
|
||||||
t.text "ks"
|
t.text "ks"
|
||||||
|
@ -301,6 +307,9 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.text "cron_tab"
|
t.text "cron_tab"
|
||||||
t.boolean "use_cron", :default => false
|
t.boolean "use_cron", :default => false
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
t.integer "project_id"
|
||||||
|
t.string "lst"
|
||||||
|
t.text "repos"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "project_imports", :force => true do |t|
|
create_table "project_imports", :force => true do |t|
|
||||||
|
@ -308,8 +317,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "version"
|
t.string "version"
|
||||||
t.datetime "file_mtime"
|
t.datetime "file_mtime"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.integer "platform_id"
|
t.integer "platform_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -318,25 +327,25 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
create_table "project_to_repositories", :force => true do |t|
|
create_table "project_to_repositories", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "repository_id"
|
t.integer "repository_id"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "projects", :force => true do |t|
|
create_table "projects", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.integer "owner_id"
|
t.integer "owner_id"
|
||||||
t.string "owner_type"
|
t.string "owner_type"
|
||||||
t.string "visibility", :default => "open"
|
t.string "visibility", :default => "open"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
t.string "ancestry"
|
t.string "ancestry"
|
||||||
t.boolean "has_issues", :default => true
|
t.boolean "has_issues", :default => true
|
||||||
t.boolean "has_wiki", :default => false
|
|
||||||
t.string "srpm_file_name"
|
t.string "srpm_file_name"
|
||||||
t.string "srpm_content_type"
|
|
||||||
t.integer "srpm_file_size"
|
t.integer "srpm_file_size"
|
||||||
t.datetime "srpm_updated_at"
|
t.datetime "srpm_updated_at"
|
||||||
|
t.string "srpm_content_type"
|
||||||
|
t.boolean "has_wiki", :default => false
|
||||||
t.string "default_branch", :default => "master"
|
t.string "default_branch", :default => "master"
|
||||||
t.boolean "is_package", :default => true, :null => false
|
t.boolean "is_package", :default => true, :null => false
|
||||||
t.integer "average_build_time", :default => 0, :null => false
|
t.integer "average_build_time", :default => 0, :null => false
|
||||||
|
@ -364,8 +373,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.string "token"
|
t.string "token"
|
||||||
t.boolean "approved", :default => false
|
t.boolean "approved", :default => false
|
||||||
t.boolean "rejected", :default => false
|
t.boolean "rejected", :default => false
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.string "interest"
|
t.string "interest"
|
||||||
t.text "more"
|
t.text "more"
|
||||||
t.string "language"
|
t.string "language"
|
||||||
|
@ -379,16 +388,16 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.string "actor_type"
|
t.string "actor_type"
|
||||||
t.integer "target_id"
|
t.integer "target_id"
|
||||||
t.string "target_type"
|
t.string "target_type"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.string "role"
|
t.string "role"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "repositories", :force => true do |t|
|
create_table "repositories", :force => true do |t|
|
||||||
t.string "description", :null => false
|
t.string "description", :null => false
|
||||||
t.integer "platform_id", :null => false
|
t.integer "platform_id", :null => false
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
t.boolean "publish_without_qa", :default => true
|
t.boolean "publish_without_qa", :default => true
|
||||||
end
|
end
|
||||||
|
@ -400,8 +409,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.boolean "new_comment_reply", :default => true
|
t.boolean "new_comment_reply", :default => true
|
||||||
t.boolean "new_issue", :default => true
|
t.boolean "new_issue", :default => true
|
||||||
t.boolean "issue_assign", :default => true
|
t.boolean "issue_assign", :default => true
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.boolean "new_comment_commit_owner", :default => true
|
t.boolean "new_comment_commit_owner", :default => true
|
||||||
t.boolean "new_comment_commit_repo_owner", :default => true
|
t.boolean "new_comment_commit_repo_owner", :default => true
|
||||||
t.boolean "new_comment_commit_commentor", :default => true
|
t.boolean "new_comment_commit_commentor", :default => true
|
||||||
|
@ -412,8 +421,8 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
create_table "subscribes", :force => true do |t|
|
create_table "subscribes", :force => true do |t|
|
||||||
t.string "subscribeable_type"
|
t.string "subscribeable_type"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.boolean "status", :default => true
|
t.boolean "status", :default => true
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.decimal "subscribeable_id", :precision => 50, :scale => 0
|
t.decimal "subscribeable_id", :precision => 50, :scale => 0
|
||||||
|
@ -422,20 +431,17 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
create_table "users", :force => true do |t|
|
create_table "users", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "email", :default => "", :null => false
|
t.string "email", :default => "", :null => false
|
||||||
t.string "encrypted_password", :default => "", :null => false
|
t.string "encrypted_password", :limit => 128, :default => "", :null => false
|
||||||
t.string "reset_password_token"
|
t.string "reset_password_token"
|
||||||
t.datetime "reset_password_sent_at"
|
t.datetime "reset_password_sent_at"
|
||||||
t.datetime "remember_created_at"
|
t.datetime "remember_created_at"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at"
|
||||||
t.text "ssh_key"
|
t.text "ssh_key"
|
||||||
t.string "uname"
|
t.string "uname"
|
||||||
t.string "role"
|
t.string "role"
|
||||||
t.string "language", :default => "en"
|
t.string "language", :default => "en"
|
||||||
t.integer "own_projects_count", :default => 0, :null => false
|
t.integer "own_projects_count", :default => 0, :null => false
|
||||||
t.string "confirmation_token"
|
|
||||||
t.datetime "confirmed_at"
|
|
||||||
t.datetime "confirmation_sent_at"
|
|
||||||
t.text "professional_experience"
|
t.text "professional_experience"
|
||||||
t.string "site"
|
t.string "site"
|
||||||
t.string "company"
|
t.string "company"
|
||||||
|
@ -447,6 +453,9 @@ ActiveRecord::Schema.define(:version => 20121005100158) do
|
||||||
t.integer "failed_attempts", :default => 0
|
t.integer "failed_attempts", :default => 0
|
||||||
t.string "unlock_token"
|
t.string "unlock_token"
|
||||||
t.datetime "locked_at"
|
t.datetime "locked_at"
|
||||||
|
t.string "confirmation_token"
|
||||||
|
t.datetime "confirmed_at"
|
||||||
|
t.datetime "confirmation_sent_at"
|
||||||
t.string "authentication_token"
|
t.string "authentication_token"
|
||||||
t.integer "build_priority", :default => 50
|
t.integer "build_priority", :default => 50
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
|
module Modules
|
||||||
|
module Models
|
||||||
|
module CommitAndVersion
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
|
||||||
|
validate lambda {
|
||||||
|
if commit_hash.blank? || project.repo.commit(commit_hash).blank?
|
||||||
|
errors.add :commit_hash, I18n.t('flash.build_list.wrong_commit_hash', :commit_hash => commit_hash)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
before_validation :set_commit_and_version
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def set_commit_and_version
|
||||||
|
if project_version.present? && commit_hash.blank?
|
||||||
|
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
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue