38 lines
1.1 KiB
Ruby
38 lines
1.1 KiB
Ruby
|
# 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
|
||
|
|
||
|
access_level = value == "true" ? ProjectFeature::ENABLED : ProjectFeature::DISABLED
|
||
|
project_feature.update_attribute(field, access_level)
|
||
|
end
|
||
|
end
|