From: Go MAEDA Date: Mon, 24 Sep 2018 05:31:13 +0000 (+0000) Subject: Use the id field as project_key in ProjectCustomField#visibility_by_project_condition... X-Git-Tag: 4.0.0~155 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c76c0900bb49973fea7f1a5f1cecd16aadb16b6b;p=redmine.git Use the id field as project_key in ProjectCustomField#visibility_by_project_condition by default (#29161). Patch by Holger Just. git-svn-id: http://svn.redmine.org/redmine/trunk@17517 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/project_custom_field.rb b/app/models/project_custom_field.rb index 54e7958a3..e038313f8 100644 --- a/app/models/project_custom_field.rb +++ b/app/models/project_custom_field.rb @@ -19,4 +19,9 @@ class ProjectCustomField < CustomField def type_name :label_project_plural end + + def visibility_by_project_condition(project_key=nil, user=User.current, id_column=nil) + project_key ||= "#{Project.table_name}.id" + super(project_key, user, id_column) + end end diff --git a/test/unit/custom_field_test.rb b/test/unit/custom_field_test.rb index 3eae54efa..bdf5d4842 100644 --- a/test/unit/custom_field_test.rb +++ b/test/unit/custom_field_test.rb @@ -340,4 +340,20 @@ class CustomFieldTest < ActiveSupport::TestCase assert_equal 12.5, field.cast_value('+12.5') assert_equal -12.5, field.cast_value('-12.5') end + + def test_project_custom_field_visibility + project_field = ProjectCustomField.generate!(:visible => false, :field_format => 'list', :possible_values => %w[a b c]) + project = Project.find(3) + project.custom_field_values = { project_field.id => 'a' } + + # Admins can find projects with the field + with_current_user(User.find(1)) do + assert_includes Project.where(project_field.visibility_by_project_condition), project + end + + # The field is not visible to normal users + with_current_user(User.find(2)) do + refute_includes Project.where(project_field.visibility_by_project_condition), project + end + end end