summaryrefslogtreecommitdiff
path: root/app/contexts
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-11-29 07:29:11 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-11-29 12:39:03 +0200
commiteb1004f7890d25a86beb0ca0a7eca802d9fce665 (patch)
tree94cb713c0628542e646aad323be4d88fb1c356e3 /app/contexts
parenta1ffc673b95f4d0e2316d461f1364fa1ee08e9d2 (diff)
downloadgitlab-ce-eb1004f7890d25a86beb0ca0a7eca802d9fce665.tar.gz
Refactor abilities. Added ProjectUpdate context. Fixed few bugs with namespaces
Diffstat (limited to 'app/contexts')
-rw-r--r--app/contexts/project_update_context.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/app/contexts/project_update_context.rb b/app/contexts/project_update_context.rb
new file mode 100644
index 00000000000..e28d43d0e81
--- /dev/null
+++ b/app/contexts/project_update_context.rb
@@ -0,0 +1,21 @@
+class ProjectUpdateContext < BaseContext
+ def execute(role = :default)
+ namespace_id = params[:project].delete(:namespace_id)
+
+ if namespace_id.present?
+ if namespace_id == Namespace.global_id
+ if project.namespace.present?
+ # Transfer to global namespace from anyone
+ project.transfer(nil)
+ end
+ elsif namespace_id.to_i != project.namespace_id
+ # Transfer to someone namespace
+ namespace = Namespace.find(namespace_id)
+ project.transfer(namespace)
+ end
+ end
+
+ project.update_attributes(params[:project], as: role)
+ end
+end
+