gem 'rails-observers'
gem 'actionpack-page_caching'
gem 'actionpack-action_caching'
-gem 'activerecord-deprecated_finders'
# Supported DBs
gem "mysql2", group: :mysql
DEPENDENCIES
actionpack-action_caching
actionpack-page_caching
- activerecord-deprecated_finders
acts-as-taggable-on
annotate (~> 2.6.0.beta2)
asciidoctor
private
def group
- @group = Group.find_by_path(params[:id])
+ @group = Group.find_by(path: params[:id])
end
end
def index
owner_id = params[:owner_id]
- user = User.find_by_id(owner_id)
+ user = User.find_by(id: owner_id)
@projects = user ? user.owned_projects : Project.all
@projects = @projects.where("visibility_level IN (?)", params[:visibility_levels]) if params[:visibility_levels].present?
protected
def user
- @user ||= User.find_by_username!(params[:id])
+ @user ||= User.find_by!(username: params[:id])
end
end
current_user.authorized_projects
end
- @projects = @projects.where(namespace_id: Group.find_by_name(params[:group])) if params[:group].present?
+ @projects = @projects.where(namespace_id: Group.find_by(name: params[:group])) if params[:group].present?
@projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
@projects = @projects.includes(:namespace)
@projects = @projects.tagged_with(params[:label]) if params[:label].present?
protected
def group
- @group ||= Group.find_by_path(params[:id])
+ @group ||= Group.find_by(path: params[:id])
end
def projects
private
def group
- @group ||= Group.find_by_path(params[:id])
+ @group ||= Group.find_by(path: params[:id])
end
end
def issue
@issue ||= begin
- @project.issues.find_by_iid!(params[:id])
+ @project.issues.find_by!(iid: params[:id])
rescue ActiveRecord::RecordNotFound
redirect_old
end
# To prevent 404 errors we provide a redirect to correct iids until 7.0 release
#
def redirect_old
- issue = @project.issues.find_by_id(params[:id])
+ issue = @project.issues.find_by(id: params[:id])
if issue
redirect_to project_issue_path(@project, issue)
end
def merge_request
- @merge_request ||= @project.merge_requests.find_by_iid!(params[:id])
+ @merge_request ||= @project.merge_requests.find_by!(iid: params[:id])
end
def closes_issues
protected
def milestone
- @milestone ||= @project.milestones.find_by_iid!(params[:id])
+ @milestone ||= @project.milestones.find_by!(iid: params[:id])
end
def authorize_admin_milestone!
end
def update
- @user_project_relation = project.users_projects.find_by_user_id(member)
+ @user_project_relation = project.users_projects.find_by(user_id: member)
@user_project_relation.update_attributes(params[:team_member])
unless @user_project_relation.valid?
end
def destroy
- @user_project_relation = project.users_projects.find_by_user_id(member)
+ @user_project_relation = project.users_projects.find_by(user_id: member)
@user_project_relation.destroy
respond_to do |format|
end
def leave
- project.users_projects.find_by_user_id(current_user).destroy
+ project.users_projects.find_by(user_id: current_user).destroy
respond_to do |format|
format.html { redirect_to :back }
protected
def member
- @member ||= User.find_by_username(params[:id])
+ @member ||= User.find_by(username: params[:id])
end
end
class SearchController < ApplicationController
def show
- @project = Project.find_by_id(params[:project_id]) if params[:project_id].present?
- @group = Group.find_by_id(params[:group_id]) if params[:group_id].present?
+ @project = Project.find_by(id: params[:project_id]) if params[:project_id].present?
+ @group = Group.find_by(id: params[:group_id]) if params[:group_id].present?
if @project
return access_denied! unless can?(current_user, :download_code, @project)
end
def user_index
- @user = User.find_by_username(params[:username])
+ @user = User.find_by(username: params[:username])
@snippets = @user.snippets.fresh.non_expired
if @user == current_user
layout 'navless'
def show
- @user = User.find_by_username!(params[:username])
+ @user = User.find_by!(username: params[:username])
@projects = @user.authorized_projects.where(id: current_user.authorized_projects.pluck(:id)).includes(:namespace)
@events = @user.recent_events.where(project_id: @projects.map(&:id)).limit(20)
protected
def group
- @group ||= Group.find_by_path(params[:group_id])
+ @group ||= Group.find_by(path: params[:group_id])
end
def authorize_admin_group!
end
def avatar_icon(user_email = '', size = nil)
- user = User.find_by_email(user_email)
+ user = User.find_by(email: user_email)
if user && user.avatar.present?
user.avatar.url
else
def reassigned_issue_email(recipient_id, issue_id, previous_assignee_id)
@issue = Issue.find(issue_id)
- @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id
+ @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
@project = @issue.project
mail(to: recipient(recipient_id), subject: subject("Changed issue ##{@issue.iid}", @issue.title))
end
def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id)
@merge_request = MergeRequest.find(merge_request_id)
- @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id
+ @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
@project = @merge_request.project
mail(to: recipient(recipient_id), subject: subject("Changed merge request ##{@merge_request.iid}", @merge_request.title))
end
def commit_author
@commit_author ||=
- project.users.find_by_email(noteable.author_email) ||
- project.users.find_by_name(noteable.author_name)
+ project.users.find_by(email: noteable.author_email) ||
+ project.users.find_by(name: noteable.author_name)
rescue
nil
end
def find_with_namespace(id)
if id.include?("/")
id = id.split("/")
- namespace = Namespace.find_by_path(id.first)
+ namespace = Namespace.find_by(path: id.first)
return nil unless namespace
- where(namespace_id: namespace.id).find_by_path(id.second)
+ where(namespace_id: namespace.id).find_by(path: id.second)
else
where(path: id, namespace_id: nil).last
end
# Get Team Member record by user id
def team_member_by_id(user_id)
- users_projects.find_by_user_id(user_id)
+ users_projects.find_by(user_id: user_id)
end
def name_with_namespace
end
def find(user_id)
- user = project.users.find_by_id(user_id)
+ user = project.users.find_by(id: user_id)
if group
- user ||= group.users.find_by_id(user_id)
+ user ||= group.users.find_by(id: user_id)
end
user
end
def find_tm(user_id)
- tm = project.users_projects.find_by_user_id(user_id)
+ tm = project.users_projects.find_by(user_id: user_id)
# If user is not in project members
# we should check for group membership
if group && !tm
- tm = group.users_groups.find_by_user_id(user_id)
+ tm = group.users_groups.find_by(user_id: user_id)
end
tm
def namespace_uniq
namespace_name = self.username
- if Namespace.find_by_path(namespace_name)
+ if Namespace.find_by(path: namespace_name)
self.errors.add :username, "already exist"
end
end
end
def created_by
- User.find_by_id(created_by_id) if created_by_id
+ User.find_by(id: created_by_id) if created_by_id
end
def sanitize_attrs
users.reject do |user|
next user.notification.disabled? unless project
- tm = project.users_projects.find_by_user_id(user.id)
+ tm = project.users_projects.find_by(user_id: user.id)
if !tm && project.group
- tm = project.group.users_groups.find_by_user_id(user.id)
+ tm = project.group.users_groups.find_by(user_id: user.id)
end
# reject users who globally disabled notification and has no membership
end
def allowed_namespace?(user, namespace_id)
- namespace = Namespace.find_by_id(namespace_id)
+ namespace = Namespace.find_by(id: namespace_id)
current_user.can?(:manage_namespace, namespace)
end
end
authorized_projects_ids += current_user.authorized_projects.pluck(:id) if current_user
authorized_projects_ids += Project.public_or_internal_only(current_user).pluck(:id)
- group = Group.find_by_id(params[:group_id]) if params[:group_id].present?
+ group = Group.find_by(id: params[:group_id]) if params[:group_id].present?
projects = Project.where(id: authorized_projects_ids)
projects = projects.where(namespace_id: group.id) if group
projects = projects.search(query)
project_urls.each_with_index do |url, i|
group_path, project_path = url.split('/')[-2..-1]
- group = Group.find_by_path(group_path)
+ group = Group.find_by(path: group_path)
unless group
group = Group.new(
Key.where('project_id IS NOT NULL').update_all(type: 'DeployKey')
DeployKey.all.each do |key|
- project = Project.find_by_id(key.project_id)
+ project = Project.find_by(id: key.project_id)
if project
project.deploy_keys << key
print '.'
end
When 'I select user "John" from user list as "Reporter"' do
- user = User.find_by_name("John")
+ user = User.find_by(name: "John")
select2(user.id, from: "#user_ids", multiple: true)
within "#new_team_member" do
select "Reporter", from: "group_access"
end
And 'user with name "John Doe" left project "Shop"' do
- user = User.find_by_name "John Doe"
+ user = User.find_by(name: "John Doe")
Event.create(
project: project,
author_id: user.id,
end
def project
- @project ||= Project.find_by_name "Shop"
+ @project ||= Project.find_by(name: "Shop")
end
end
include SharedProject
When 'project "Forum" is archived' do
- project = Project.find_by_name "Forum"
+ project = Project.find_by(name: "Forum")
project.update_attribute(:archived, true)
end
end
And 'I select user "John" from list with role "Reporter"' do
- user = User.find_by_name("John")
+ user = User.find_by(name: "John")
within ".users-group-form" do
select2(user.id, from: "#user_ids", multiple: true)
select "Reporter", from: "group_access"
end
Then 'I should see new ssh key "Laptop"' do
- key = Key.find_by_title("Laptop")
+ key = Key.find_by(title: "Laptop")
page.should have_content(key.title)
page.should have_content(key.key)
current_path.should == profile_key_path(key)
include SharedPaths
When 'project "Forum" is archived' do
- project = Project.find_by_name "Forum"
+ project = Project.find_by(name: "Forum")
project.update_attribute(:archived, true)
end
When 'project "Shop" is archived' do
- project = Project.find_by_name "Shop"
+ project = Project.find_by(name: "Shop")
project.update_attribute(:archived, true)
end
When 'I visit project "Forum" page' do
- project = Project.find_by_name "Forum"
+ project = Project.find_by(name: "Forum")
visit project_path(project)
end
end
And 'project "Shop" has protected branches' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
project.protected_branches.create(name: "stable")
end
end
end
step 'I am a member of project "Shop"' do
- @project = Project.find_by_name "Shop"
+ @project = Project.find_by(name: "Shop")
@project ||= create(:project_with_code, name: "Shop", group: create(:group))
@project.team << [@user, :reporter]
end
step 'I should see the forked project page' do
page.should have_content "Project was successfully forked."
current_path.should include current_user.namespace.path
- @forked_project = Project.find_by_namespace_id(current_user.namespace.path)
+ @forked_project = Project.find_by(namespace_id: current_user.namespace.path)
end
step 'I already have a project named "Shop" in my namespace' do
include Select2Helper
step 'I am a member of project "Shop"' do
- @project = Project.find_by_name "Shop"
+ @project = Project.find_by(name: "Shop")
@project ||= create(:project_with_code, name: "Shop")
@project.team << [@user, :reporter]
end
step 'I have a project forked off of "Shop" called "Forked Shop"' do
@forking_user = @user
forked_project_link = build(:forked_project_link)
- @forked_project = Project.find_by_name "Forked Shop"
+ @forked_project = Project.find_by(name: "Forked Shop")
@forked_project ||= create(:source_project_with_code, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace)
forked_project_link.forked_from_project = @project
end
step 'project "Forked Shop" has push event' do
- @forked_project = Project.find_by_name("Forked Shop")
+ @forked_project = Project.find_by(name: "Forked Shop")
data = {
before: "0000000000000000000000000000000000000000",
end
def project
- @project ||= Project.find_by_name!("Shop")
+ @project ||= Project.find_by!(name: "Shop")
end
# Verify a link is generated against the correct project
end
When 'I visit project "Shop" graph page' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
visit project_graph_path(project, "master")
end
end
include SharedPaths
step 'project "Shop" has issues enabled' do
- @project = Project.find_by_name "Shop"
+ @project = Project.find_by(name: "Shop")
@project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
@project.issues_enabled = true
end
end
Then 'I should see issue "500 error on profile"' do
- issue = Issue.find_by_title("500 error on profile")
+ issue = Issue.find_by(title: "500 error on profile")
page.should have_content issue.title
page.should have_content issue.author_name
page.should have_content issue.project.name
end
Given 'project "Shop" has milestone "v2.2"' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
milestone = create(:milestone, title: "v2.2", project: project)
3.times { create(:issue, project: project, milestone: milestone) }
end
And 'project "Shop" has milestone "v3.0"' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
milestone = create(:milestone, title: "v3.0", project: project)
3.times { create(:issue, project: project, milestone: milestone) }
end
When 'I select first assignee from "Shop" project' do
- project = Project.find_by_name "Shop"
+ project = Project.find_by(name: "Shop")
first_assignee = project.users.first
select first_assignee.name, from: "assignee_id"
end
Then 'I should see first assignee from "Shop" as selected assignee' do
issues_assignee_selector = "#issue_assignee_id_chzn > a"
- project = Project.find_by_name "Shop"
+ project = Project.find_by(name: "Shop")
assignee_name = project.users.first.name
page.find(issues_assignee_selector).should have_content(assignee_name)
end
And 'project "Shop" have "Release 0.4" open issue' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
create(:issue,
title: "Release 0.4",
project: project,
end
And 'project "Shop" have "Tweet control" open issue' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
create(:issue,
title: "Tweet control",
project: project,
end
And 'project "Shop" have "Release 0.3" closed issue' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
create(:closed_issue,
title: "Release 0.3",
project: project,
end
And 'project "Shop" have issues tags: "bug", "feature"' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
['bug', 'feature'].each do |label|
create(:issue, project: project, label_list: label)
end
include SharedPaths
And 'I own project "Delta"' do
- @project = Project.find_by_name "Delta"
+ @project = Project.find_by(name: "Delta")
@project ||= create(:project_with_code, name: "Delta", namespace: @user.namespace)
@project.team << [@user, :master]
end
end
step 'I should see closed merge request "Bug NS-04"' do
- merge_request = MergeRequest.find_by_title!("Bug NS-04")
+ merge_request = MergeRequest.find_by!(title: "Bug NS-04")
merge_request.closed?.should be_true
page.should have_content "Closed by"
end
end
def project
- @project ||= Project.find_by_name!("Shop")
+ @project ||= Project.find_by!(name: "Shop")
end
def merge_request
- @merge_request ||= MergeRequest.find_by_title!("Bug NS-05")
+ @merge_request ||= MergeRequest.find_by!(title: "Bug NS-05")
end
def init_diff_note
include SharedPaths
Then 'I should see milestone "v2.2"' do
- milestone = @project.milestones.find_by_title("v2.2")
+ milestone = @project.milestones.find_by(title: "v2.2")
page.should have_content(milestone.title[0..10])
page.should have_content(milestone.expires_at)
page.should have_content("Browse Issues")
end
Then 'I should see milestone "v2.3"' do
- milestone = @project.milestones.find_by_title("v2.3")
+ milestone = @project.milestones.find_by(title: "v2.3")
page.should have_content(milestone.title[0..10])
page.should have_content(milestone.expires_at)
page.should have_content("Browse Issues")
end
And 'project "Shop" has milestone "v2.2"' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
milestone = create(:milestone, title: "v2.2", project: project)
3.times { create(:issue, project: project, milestone: milestone) }
end
Given 'the milestone has open and closed issues' do
- project = Project.find_by_name("Shop")
- milestone = project.milestones.find_by_title('v2.2')
+ project = Project.find_by(name: "Shop")
+ milestone = project.milestones.find_by(title: 'v2.2')
# 3 Open issues created above; create one closed issue
create(:closed_issue, project: project, milestone: milestone)
# Stub Graph max_size to speed up test (10 commits vs. 650)
Network::Graph.stub(max_count: 10)
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
visit project_network_path(project, "master")
end
end
def project
- @project ||= Project.find_by_name!("Shop")
+ @project ||= Project.find_by!(name: "Shop")
end
def project_snippet
- @project_snippet ||= ProjectSnippet.find_by_title!("Snippet One")
+ @project_snippet ||= ProjectSnippet.find_by!(title: "Snippet one")
end
end
end
And 'I should see "Sam" in team list' do
- user = User.find_by_name("Sam")
+ user = User.find_by(name: "Sam")
page.should have_content(user.name)
page.should have_content(user.username)
end
end
And 'I select "Mike" as "Reporter"' do
- user = User.find_by_name("Mike")
+ user = User.find_by(name: "Mike")
select2(user.id, from: "#user_ids", multiple: true)
within "#new_team_member" do
end
And 'I change "Sam" role to "Reporter"' do
- user = User.find_by_name("Sam")
+ user = User.find_by(name: "Sam")
within "#user_#{user.id}" do
select "Reporter", from: "team_member_project_access"
end
end
And 'I should not see "Sam" in team list' do
- user = User.find_by_name("Sam")
+ user = User.find_by(name: "Sam")
page.should_not have_content(user.name)
page.should_not have_content(user.username)
end
end
And '"Sam" is "Shop" developer' do
- user = User.find_by_name("Sam")
- project = Project.find_by_name("Shop")
+ user = User.find_by(name: "Sam")
+ project = Project.find_by(name: "Shop")
project.team << [user, :developer]
end
end
And '"Mike" is "Website" reporter' do
- user = User.find_by_name("Mike")
- project = Project.find_by_name("Website")
+ user = User.find_by(name: "Mike")
+ project = Project.find_by(name: "Website")
project.team << [user, :reporter]
end
end
When 'I submit "Website" project for import team' do
- project = Project.find_by_name("Website")
+ project = Project.find_by(name: "Website")
select project.name_with_namespace, from: 'source_project_id'
click_button 'Import'
end
step 'I click cancel link for "Sam"' do
- within "#user_#{User.find_by_name('Sam').id}" do
+ within "#user_#{User.find_by(name: 'Sam').id}" do
click_link('Remove user from team')
end
end
end
step 'I visit project "Community" page' do
- project = Project.find_by_name('Community')
+ project = Project.find_by(name: 'Community')
visit project_path(project)
end
end
step 'I visit project "Enterprise" page' do
- project = Project.find_by_name('Enterprise')
+ project = Project.find_by(name: 'Enterprise')
visit project_path(project)
end
step 'I visit project "CommunityDoesNotExist" page' do
- project = Project.find_by_name('Community')
+ project = Project.find_by(name: 'Community')
visit project_path(project) + 'DoesNotExist'
end
end
end
step 'I visit empty project page' do
- project = Project.find_by_name('Empty Public Project')
+ project = Project.find_by(name: 'Empty Public Project')
visit project_path(project)
end
step 'I visit project "Community" page' do
- project = Project.find_by_name('Community')
+ project = Project.find_by(name: 'Community')
visit project_path(project)
end
end
step 'I should see empty public project details with http clone info' do
- project = Project.find_by_name('Empty Public Project')
+ project = Project.find_by(name: 'Empty Public Project')
page.all(:css, '.git-empty .clone').each do |element|
element.text.should include(project.http_url_to_repo)
end
end
step 'I should see empty public project details with ssh clone info' do
- project = Project.find_by_name('Empty Public Project')
+ project = Project.find_by(name: 'Empty Public Project')
page.all(:css, '.git-empty .clone').each do |element|
element.text.should include(project.url_to_repo)
end
end
step 'I visit project "Enterprise" page' do
- project = Project.find_by_name('Enterprise')
+ project = Project.find_by(name: 'Enterprise')
visit project_path(project)
end
end
step 'I visit project "Internal" page' do
- project = Project.find_by_name('Internal')
+ project = Project.find_by(name: 'Internal')
visit project_path(project)
end
end
step 'I should see an http link to the repository' do
- project = Project.find_by_name 'Community'
+ project = Project.find_by(name: 'Community')
page.should have_field('project_clone', with: project.http_url_to_repo)
end
step 'I should see an ssh link to the repository' do
- project = Project.find_by_name 'Community'
+ project = Project.find_by(name: 'Community')
page.should have_field('project_clone', with: project.url_to_repo)
end
end
end
step 'I visit issue page "Release 0.4"' do
- issue = Issue.find_by_title("Release 0.4")
+ issue = Issue.find_by(title: "Release 0.4")
visit project_issue_path(issue.project, issue)
end
end
step 'I visit merge request page "Bug NS-04"' do
- mr = MergeRequest.find_by_title("Bug NS-04")
+ mr = MergeRequest.find_by(title: "Bug NS-04")
visit project_merge_request_path(mr.target_project, mr)
end
step 'I visit merge request page "Bug NS-05"' do
- mr = MergeRequest.find_by_title("Bug NS-05")
+ mr = MergeRequest.find_by(title: "Bug NS-05")
visit project_merge_request_path(mr.target_project, mr)
end
end
step 'I visit public page for "Community" project' do
- visit public_project_path(Project.find_by_name("Community"))
+ visit public_project_path(Project.find_by(name: "Community"))
end
# ----------------------------------------
end
def project
- project = Project.find_by_name!("Shop")
+ project = Project.find_by!(name: "Shop")
end
end
# Create a specific project called "Shop"
And 'I own project "Shop"' do
- @project = Project.find_by_name "Shop"
+ @project = Project.find_by(name: "Shop")
@project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
@project.team << [@user, :master]
end
# Create another specific project called "Forum"
And 'I own project "Forum"' do
- @project = Project.find_by_name "Forum"
+ @project = Project.find_by(name: "Forum")
@project ||= create(:project_with_code, name: "Forum", namespace: @user.namespace, path: 'forum_project')
@project.team << [@user, :master]
end
And 'project "Shop" has push event' do
- @project = Project.find_by_name("Shop")
+ @project = Project.find_by(name: "Shop")
data = {
before: "0000000000000000000000000000000000000000",
end
Then 'I should see project "Shop" activity feed' do
- project = Project.find_by_name("Shop")
+ project = Project.find_by(name: "Shop")
page.should have_content "#{@user.name} pushed new branch new_design at #{project.name_with_namespace}"
end
end
def snippet
- @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+ @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
end
end
end
def snippet
- @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+ @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
end
end
end
def snippet
- @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+ @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
end
end
attrs[:key].strip!
# check if key already exist in project
- key = user_project.deploy_keys.find_by_key(attrs[:key])
+ key = user_project.deploy_keys.find_by(key: attrs[:key])
if key
present key, with: Entities::SSHKey
return
end
# Check for available deploy keys in other projects
- key = current_user.accessible_deploy_keys.find_by_key(attrs[:key])
+ key = current_user.accessible_deploy_keys.find_by(key: attrs[:key])
if key
user_project.deploy_keys << key
present key, with: Entities::SSHKey
class ProjectMember < UserBasic
expose :project_access, as: :access_level do |user, options|
- options[:project].users_projects.find_by_user_id(user.id).project_access
+ options[:project].users_projects.find_by(user_id: user.id).project_access
end
end
class TeamMember < UserBasic
expose :permission, as: :access_level do |user, options|
- options[:user_team].user_team_user_relationships.find_by_user_id(user.id).permission
+ options[:user_team].user_team_user_relationships.find_by(user_id: user.id).permission
end
end
class TeamProject < Project
expose :greatest_access, as: :greatest_access_level do |project, options|
- options[:user_team].user_team_project_relationships.find_by_project_id(project.id).greatest_access
+ options[:user_team].user_team_project_relationships.find_by(project_id: project.id).greatest_access
end
end
class GroupMember < UserBasic
expose :group_access, as: :access_level do |user, options|
- options[:group].users_groups.find_by_user_id(user.id).group_access
+ options[:group].users_groups.find_by(user_id: user.id).group_access
end
end
render_api_error!("Wrong access level", 422)
end
group = find_group(params[:id])
- if group.users_groups.find_by_user_id(params[:user_id])
+ if group.users_groups.find_by(user_id: params[:user_id])
render_api_error!("Already exists", 409)
end
group.add_users([params[:user_id]], params[:access_level])
- member = group.users_groups.find_by_user_id(params[:user_id])
+ member = group.users_groups.find_by(user_id: params[:user_id])
present member.user, with: Entities::GroupMember, group: group
end
# DELETE /groups/:id/members/:user_id
delete ":id/members/:user_id" do
group = find_group(params[:id])
- member = group.users_groups.find_by_user_id(params[:user_id])
+ member = group.users_groups.find_by(user_id: params[:user_id])
if member.nil?
render_api_error!("404 Not Found - user_id:#{params[:user_id]} not a member of group #{group.name}",404)
else
def current_user
private_token = (params[PRIVATE_TOKEN_PARAM] || env[PRIVATE_TOKEN_HEADER]).to_s
- @current_user ||= User.find_by_authentication_token(private_token)
+ @current_user ||= User.find_by(authentication_token: private_token)
identifier = sudo_identifier()
# If the sudo is the current user do nothing
end
def find_project(id)
- project = Project.find_by_id(id) || Project.find_with_namespace(id)
+ project = Project.find_by(id: id) || Project.find_with_namespace(id)
if project && can?(current_user, :read_project, project)
project
merge_request.target_project = user_project
else
if target_matches_fork(target_project_id,user_project)
- merge_request.target_project = Project.find_by_id(attrs[:target_project_id])
+ merge_request.target_project = Project.find_by(id: attrs[:target_project_id])
else
render_api_error!('(Bad Request) Specified target project that is not the source project, or the source fork of the project.', 400)
end
authorize! :admin_project, user_project
required_attributes! [:access_level]
- team_member = user_project.users_projects.find_by_user_id(params[:user_id])
+ team_member = user_project.users_projects.find_by(user_id: params[:user_id])
not_found!("User can not be found") if team_member.nil?
if team_member.update_attributes(project_access: params[:access_level])
# DELETE /projects/:id/members/:user_id
delete ":id/members/:user_id" do
authorize! :admin_project, user_project
- team_member = user_project.users_projects.find_by_user_id(params[:user_id])
+ team_member = user_project.users_projects.find_by(user_id: params[:user_id])
unless team_member.nil?
team_member.destroy
else
@branch = user_project.repository.find_branch(params[:branch])
not_found! unless @branch
- protected_branch = user_project.protected_branches.find_by_name(@branch.name)
+ protected_branch = user_project.protected_branches.find_by(name: @branch.name)
user_project.protected_branches.create(name: @branch.name) unless protected_branch
present @branch, with: Entities::RepoObject, project: user_project
@branch = user_project.repository.find_branch(params[:branch])
not_found! unless @branch
- protected_branch = user_project.protected_branches.find_by_name(@branch.name)
+ protected_branch = user_project.protected_branches.find_by(name: @branch.name)
protected_branch.destroy if protected_branch
present @branch, with: Entities::RepoObject, project: user_project
# DELETE /users/:id
delete ":id" do
authenticated_as_admin!
- user = User.find_by_id(params[:id])
+ user = User.find_by(id: params[:id])
if user
user.destroy
module Gitlab
class Auth
def find(login, password)
- user = User.find_by_email(login) || User.find_by_username(login)
+ user = User.find_by(email: login) || User.find_by(username: login)
if user.nil? || user.ldap_user?
# Second chance - try LDAP authentication
if identifier.blank?
# Local push from gitlab
email = project.repository.commit(newrev).author_email rescue nil
- User.find_by_email(email) if email
+ User.find_by(email: email) if email
elsif identifier =~ /\Auser-\d+\Z/
# git push over http
user_id = identifier.gsub("user-", "")
- User.find_by_id(user_id)
+ User.find_by(id: user_id)
elsif identifier =~ /\Akey-\d+\Z/
# git push over ssh
key_id = identifier.gsub("key-", "")
- Key.find_by_id(key_id).try(:user)
+ Key.find_by(id: key_id).try(:user)
end
end
end
end
def find_user(email)
- user = model.find_by_email(email)
+ user = model.find_by(email: email)
# If no user found and allow_username_or_email_login is true
# we look for user by extracting part of their email
if !user && email && ldap_conf['allow_username_or_email_login']
uname = email.partition('@').first
- user = model.find_by_username(uname)
+ user = model.find_by(username: uname)
end
user
desc "GITLAB | Add a specific user to all projects (as a developer)"
task :user_to_projects, [:email] => :environment do |t, args|
- user = User.find_by_email args.email
+ user = User.find_by(email: args.email)
project_ids = Project.pluck(:id)
puts "Importing #{user.email} users into #{project_ids.size} projects"
UsersProject.add_users_into_projects(project_ids, Array.wrap(user.id), UsersProject::DEVELOPER)
username.gsub!("+", ".")
# return username if no matches
- return username unless User.find_by_username(username)
+ return username unless User.find_by(username: username)
# look for same username
(1..10).each do |i|
suffixed_username = "#{username}#{i}"
- return suffixed_username unless User.find_by_username(suffixed_username)
+ return suffixed_username unless User.find_by(username: suffixed_username)
end
end
# find group namespace
if group_name
- group = Group.find_by_path(group_name)
+ group = Group.find_by(path: group_name)
# create group namespace
if !group
group = Group.new(:name => group_name)
it "should update credentials by email if missing uid" do
user = double('User')
User.stub find_by_extern_uid_and_provider: nil
- User.stub find_by_email: user
+ User.stub(:find_by).with(hash_including(email: anything())) { user }
user.should_receive :update_attributes
gl_auth.find_or_create(@auth)
end
value = Gitlab.config.ldap.allow_username_or_email_login
Gitlab.config.ldap['allow_username_or_email_login'] = true
User.stub find_by_extern_uid_and_provider: nil
- User.stub find_by_email: nil
- User.stub find_by_username: user
+ User.stub(:find_by).with(hash_including(email: anything())) { nil }
+ User.stub(:find_by).with(hash_including(username: anything())) { user }
user.should_receive :update_attributes
gl_auth.find_or_create(@auth)
Gitlab.config.ldap['allow_username_or_email_login'] = value
value = Gitlab.config.ldap.allow_username_or_email_login
Gitlab.config.ldap['allow_username_or_email_login'] = false
User.stub find_by_extern_uid_and_provider: nil
- User.stub find_by_email: nil
- User.stub find_by_username: user
+ User.stub(:find_by).with(hash_including(email: anything())) { nil }
+ User.stub(:find_by).with(hash_including(username: anything())) { user }
user.should_not_receive :update_attributes
gl_auth.find_or_create(@auth)
Gitlab.config.ldap['allow_username_or_email_login'] = value
expect {
post api("/users", admin), attr
}.to change { User.count }.by(1)
- user = User.find_by_username(attr[:username])
+ user = User.find_by(username: attr[:username])
user.projects_limit.should == limit
user.theme_id.should == Gitlab::Theme::MARS
Gitlab.config.gitlab.unstub(:default_projects_limit)
end
it "does not run if the author is not in the project" do
- Key.stub(find_by_id: nil)
+ Key.stub(:find_by).with(hash_including(id: anything())) { nil }
project.should_not_receive(:execute_hooks)