summaryrefslogtreecommitdiff
path: root/app/models/concerns
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2016-08-01 19:31:21 -0300
committerFelipe Artur <felipefac@gmail.com>2016-09-01 11:47:59 -0300
commit892dea67717c0efbd6a28f7639f34535ec0a8747 (patch)
tree83191c811b58de808da77f51aed63a1a021b2dcb /app/models/concerns
parente71cd7a300017cf85e16de3b1c68fdb25c3a4b4d (diff)
downloadgitlab-ce-892dea67717c0efbd6a28f7639f34535ec0a8747.tar.gz
Project tools visibility level
Diffstat (limited to 'app/models/concerns')
-rw-r--r--app/models/concerns/project_features_compatibility.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/app/models/concerns/project_features_compatibility.rb b/app/models/concerns/project_features_compatibility.rb
new file mode 100644
index 00000000000..9216122923e
--- /dev/null
+++ b/app/models/concerns/project_features_compatibility.rb
@@ -0,0 +1,37 @@
+# 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