]> source.dussan.org Git - redmine.git/commitdiff
Use the id field as project_key in ProjectCustomField#visibility_by_project_condition...
authorGo MAEDA <maeda@farend.jp>
Mon, 24 Sep 2018 05:31:13 +0000 (05:31 +0000)
committerGo MAEDA <maeda@farend.jp>
Mon, 24 Sep 2018 05:31:13 +0000 (05:31 +0000)
Patch by Holger Just.

git-svn-id: http://svn.redmine.org/redmine/trunk@17517 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project_custom_field.rb
test/unit/custom_field_test.rb

index 54e7958a37db57cf8550e6b39398d089b62a6eca..e038313f841ef3dcb58e2cc518064c57b2d6c8a4 100644 (file)
@@ -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
index 3eae54efae7fdf33b004d976dfa1fa2d30add0cc..bdf5d48422b10565d8230e67fc896f26ca47365e 100644 (file)
@@ -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