#452: Show only main platforms which user used as default on BuildLists#new page

This commit is contained in:
Vokhmin Alexey V 2015-02-11 01:35:12 +03:00
parent 2a01474d03
commit 71c41cb723
8 changed files with 20 additions and 18 deletions

View File

@ -214,6 +214,8 @@ module BuildListsHelper
def save_to_repositories(project, params) def save_to_repositories(project, params)
project.repositories.map do |r| project.repositories.map do |r|
# Show only main platforms which user used as default.
next if r.platform.main? && current_user_platforms.present? && current_user_platforms.exclude?(r.platform.id)
{ {
id: r.id, id: r.id,
name: "#{r.platform.name}/#{r.name}", name: "#{r.platform.name}/#{r.name}",
@ -224,11 +226,13 @@ module BuildListsHelper
default_arches: ( r.platform.platform_arch_settings.by_default.pluck(:arch_id).presence || default_arches: ( r.platform.platform_arch_settings.by_default.pluck(:arch_id).presence ||
Arch.where(name: Arch::DEFAULT).pluck(:id) ) Arch.where(name: Arch::DEFAULT).pluck(:id) )
} }
end.sort_by { |e| e[:name] } end.compact.sort_by { |e| e[:name] }
end end
def new_build_list_platforms(params) def new_build_list_platforms(params)
availables_main_platforms.map do |pl| availables_main_platforms.map do |pl|
# Show only main platforms which user used as default.
next if current_user_platforms.present? && current_user_platforms.exclude?(pl.id)
platform = { id: pl.id, name: pl.name, repositories: [] } platform = { id: pl.id, name: pl.name, repositories: [] }
Repository.custom_sort(pl.repositories).each do |repo| Repository.custom_sort(pl.repositories).each do |repo|
platform[:repositories] << { id: repo.id, platform[:repositories] << { id: repo.id,
@ -237,7 +241,11 @@ module BuildListsHelper
checked: is_repository_checked(repo, params) } checked: is_repository_checked(repo, params) }
end end
platform platform
end end.compact
end
def current_user_platforms
@current_user_platforms ||= (current_user.builds_setting.try(:platforms) || []).select(&:present?).map(&:to_i)
end end
def include_repos(params) def include_repos(params)

View File

@ -5,7 +5,6 @@ class UserBuildsSetting < ActiveRecord::Base
validates :user, presence: true validates :user, presence: true
attr_accessible :platforms, attr_accessible :platforms
:use_extra_tests
end end

View File

@ -29,7 +29,10 @@ h4.offset10= t("activerecord.attributes.build_list.preferences")
= f.check_box kind, checked: checked = f.check_box kind, checked: checked
= BuildList.human_attribute_name kind = BuildList.human_attribute_name kind
- selected = params[:build_list].try(:[], :external_nodes) ? {selected: params[:build_list][:external_nodes]} : {} - selected = params[:build_list].try(:[], :external_nodes)
- selected = current_user.builds_setting.try(:external_nodes) if selected.nil?
- selected = selected && { selected: selected } || {}
= f.label :external_nodes = f.label :external_nodes
= f.select :external_nodes, external_nodes, selected.merge(include_blank: true), = f.select :external_nodes, external_nodes,
class: 'form-control' selected.merge(include_blank: true),
class: 'form-control'

View File

@ -6,8 +6,7 @@
.row .row
= simple_form_for @user.builds_setting, = simple_form_for @user.builds_setting,
url: builds_settings_settings_path, url: builds_settings_settings_path,
wrapper: :horizontal_form, wrapper: :horizontal_form do |f|
wrapper_mappings: { boolean: :horizontal_boolean } do |f|
fieldset fieldset
legend legend
@ -29,7 +28,6 @@
.col-sm-8 .col-sm-8
= f.input :external_nodes, collection: external_nodes, include_blank: true = f.input :external_nodes, collection: external_nodes, include_blank: true
= f.input :use_extra_tests, as: :boolean
.clearfix .clearfix
hr hr

View File

@ -11,10 +11,8 @@ en:
user_builds_setting: user_builds_setting:
platforms: "Platforms" platforms: "Platforms"
external_nodes: "External nodes" external_nodes: "External nodes"
use_extra_tests: "Use extra tests"
# placeholders: # placeholders:
hints: hints:
user_builds_setting: user_builds_setting:
platforms: "Select a platforms that you'd like to use." platforms: "Select a platforms that you'd like to use."
external_nodes: "Select the type of nodes that you'd like to use." external_nodes: "Select the type of nodes that you'd like to use."
use_extra_tests: "Uncheck this to disable extra tests."

View File

@ -11,10 +11,8 @@ ru:
user_builds_setting: user_builds_setting:
platforms: "Платформы" platforms: "Платформы"
external_nodes: "Дополнительные ноды" external_nodes: "Дополнительные ноды"
use_extra_tests: "Использовать дополнительные тесты"
# placeholders: # placeholders:
hints: hints:
user_builds_setting: user_builds_setting:
platforms: "Выберите платформы, которые вы хотели бы использовать." platforms: "Выберите платформы, которые вы хотели бы использовать."
external_nodes: "Выберите ноды, которые вы хотели бы использовать." external_nodes: "Выберите ноды, которые вы хотели бы использовать."
use_extra_tests: "Снимите тут, чтобы отключить дополнительные тесты."

View File

@ -3,7 +3,6 @@ class CreateUserBuildsSettings < ActiveRecord::Migration
create_table :user_builds_settings do |t| create_table :user_builds_settings do |t|
t.integer :user_id, null: false t.integer :user_id, null: false
t.text :platforms, null: false, default: [], array: true t.text :platforms, null: false, default: [], array: true
t.boolean :use_extra_tests, null: false, default: true
t.string :external_nodes t.string :external_nodes
end end

View File

@ -629,9 +629,8 @@ ActiveRecord::Schema.define(version: 20150210192749) do
end end
create_table "user_builds_settings", force: true do |t| create_table "user_builds_settings", force: true do |t|
t.integer "user_id", null: false t.integer "user_id", null: false
t.text "platforms", default: [], null: false, array: true t.text "platforms", default: [], null: false, array: true
t.boolean "use_extra_tests", default: true, null: false
t.string "external_nodes" t.string "external_nodes"
t.index ["user_id"], :name => "index_user_builds_settings_on_user_id", :unique => true t.index ["user_id"], :name => "index_user_builds_settings_on_user_id", :unique => true
end end