summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/ability.rb3
-rw-r--r--app/models/concerns/issuable.rb10
-rw-r--r--app/models/merge_request.rb4
-rw-r--r--app/models/user.rb4
4 files changed, 20 insertions, 1 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 9258d981ac9..6a8f683bc89 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -140,12 +140,13 @@ class Ability
:create_project_snippet,
:update_issue,
:admin_issue,
- :admin_label,
+ :admin_label
]
end
def project_dev_rules
project_report_rules + [
+ :admin_merge_request,
:create_merge_request,
:create_wiki,
:push_code
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 97846b06d72..c21e7fd0e3b 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -159,6 +159,16 @@ module Issuable
end
end
+ # Convert this Issuable class name to a format usable by Ability definitions
+ #
+ # Examples:
+ #
+ # issuable.class # => MergeRequest
+ # issuable.to_ability_name # => "merge_request"
+ def to_ability_name
+ self.class.to_s.underscore
+ end
+
private
def filter_superceded_votes(votes, notes)
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 53b3fc10ccb..1ef76d16700 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -235,6 +235,10 @@ class MergeRequest < ActiveRecord::Base
execute(self, commit_message)
end
+ def remove_source_branch?
+ self.should_remove_source_branch && !self.source_project.root_ref?(self.source_branch) && !self.for_fork?
+ end
+
def open?
opened? || reopened?
end
diff --git a/app/models/user.rb b/app/models/user.rb
index fb330ff7185..4a10520b209 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -274,6 +274,10 @@ class User < ActiveRecord::Base
value: login.to_s.downcase).first
end
+ def find_by_username!(username)
+ find_by!('lower(username) = ?', username.downcase)
+ end
+
def by_username_or_id(name_or_id)
where('users.username = ? OR users.id = ?', name_or_id.to_s, name_or_id.to_i).first
end