summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-06-14 18:34:48 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2016-06-14 18:34:48 +0200
commit14a02a6a95353948d00f8f973b35b80ac06f4599 (patch)
treed9dbdee6528f1dfeb7a827e95c35e707436e7d49 /app/models
parent006b65098806fde2a467d9a79347d2978c992e89 (diff)
downloadgitlab-ce-14a02a6a95353948d00f8f973b35b80ac06f4599.tar.gz
Improve design after review
Diffstat (limited to 'app/models')
-rw-r--r--app/models/ability.rb16
-rw-r--r--app/models/ci/build.rb3
-rw-r--r--app/models/deployment.rb10
-rw-r--r--app/models/environment.rb5
4 files changed, 22 insertions, 12 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 93905abbee8..32e45674682 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -18,6 +18,8 @@ class Ability
when Namespace then namespace_abilities(user, subject)
when GroupMember then group_member_abilities(user, subject)
when ProjectMember then project_member_abilities(user, subject)
+ when Deployment then deployment_abilities(user, subject)
+ when Environment then environment_abilities(user, subject)
when User then user_abilities
else []
end.concat(global_abilities(user))
@@ -249,9 +251,7 @@ class Ability
:create_container_image,
:update_container_image,
:create_environment,
- :update_environment,
- :create_deployment,
- :update_deployment,
+ :create_deployment
]
end
@@ -269,6 +269,8 @@ class Ability
@project_master_rules ||= project_dev_rules + [
:push_code_to_protected_branches,
:update_project_snippet,
+ :update_environment,
+ :update_deployment,
:admin_milestone,
:admin_project_snippet,
:admin_project_member,
@@ -525,6 +527,14 @@ class Ability
project_abilities(user, subject.project)
end
+ def deployment_abilities(user, subject)
+ project_abilities(user, subject.project)
+ end
+
+ def environment_abilities(user, subject)
+ project_abilities(user, subject.project)
+ end
+
private
def restricted_public_level?
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index ac039a3b148..764d8e4e136 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -81,7 +81,8 @@ module Ci
if build.environment.present?
service = CreateDeploymentService.new(build.project, build.user,
environment: build.environment,
- sha: build.sha, ref: build.ref,
+ sha: build.sha,
+ ref: build.ref,
tag: build.tag)
service.execute(build)
end
diff --git a/app/models/deployment.rb b/app/models/deployment.rb
index 32799ee27e6..d9006b70e30 100644
--- a/app/models/deployment.rb
+++ b/app/models/deployment.rb
@@ -6,10 +6,10 @@ class Deployment < ActiveRecord::Base
belongs_to :user
belongs_to :deployable, polymorphic: true
- validates_presence_of :sha
- validates_presence_of :ref
- validates_associated :project
- validates_associated :environment
+ validates :sha, presence: true
+ validates :ref, presence: true
+ validates :project, associated: true
+ validates :environment, associated: true
delegate :name, to: :environment, prefix: true
@@ -22,7 +22,7 @@ class Deployment < ActiveRecord::Base
end
def short_sha
- Commit::truncate_sha(sha)
+ Commit.truncate_sha(sha)
end
def last?
diff --git a/app/models/environment.rb b/app/models/environment.rb
index 3eab137718e..ac6f8c81e01 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -5,13 +5,12 @@ class Environment < ActiveRecord::Base
validates :name,
presence: true,
+ uniqueness: { scope: :project_id },
length: { within: 0..255 },
format: { with: Gitlab::Regex.environment_name_regex,
message: Gitlab::Regex.environment_name_regex_message }
- validates_uniqueness_of :name, scope: :project_id
-
- validates_associated :project
+ validates :project, associated: true
def last_deployment
deployments.last