project_features_compatibility.rb 1.09 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
# Makes api V3 compatible with old project features permissions methods
#
# After migrating issues_enabled merge_requests_enabled builds_enabled snippets_enabled and wiki_enabled
# fields to a new table "project_features", support for the old fields is still needed in the API.

module ProjectFeaturesCompatibility
  extend ActiveSupport::Concern

  def wiki_enabled=(value)
    write_feature_attribute(:wiki_access_level, value)
  end

  def builds_enabled=(value)
    write_feature_attribute(:builds_access_level, value)
  end

  def merge_requests_enabled=(value)
    write_feature_attribute(:merge_requests_access_level, value)
  end

  def issues_enabled=(value)
    write_feature_attribute(:issues_access_level, value)
  end

  def snippets_enabled=(value)
    write_feature_attribute(:snippets_access_level, value)
  end

  private

  def write_feature_attribute(field, value)
    build_project_feature unless project_feature

34
    access_level = Gitlab::Utils.to_boolean(value) ? ProjectFeature::ENABLED : ProjectFeature::DISABLED
35
    project_feature.send(:write_attribute, field, access_level)
36 37
  end
end