Merge commit 'master' into discussions
Conflicts: app/assets/stylesheets/sections/notes.scss app/contexts/notes/load_context.rb app/models/project.rb app/observers/note_observer.rb app/roles/votes.rb app/views/commit/show.html.haml app/views/merge_requests/_show.html.haml app/views/merge_requests/diffs.js.haml app/views/merge_requests/show.js.haml app/views/notes/_note.html.haml features/steps/project/project_merge_requests.rb spec/models/note_spec.rb
This commit is contained in:
commit
3022786948
930 changed files with 80374 additions and 103682 deletions
|
@ -3,10 +3,6 @@ class Admin::DashboardController < AdminController
|
|||
@projects = Project.order("created_at DESC").limit(10)
|
||||
@users = User.order("created_at DESC").limit(10)
|
||||
|
||||
@resque_accessible = true
|
||||
@workers = Resque.workers
|
||||
@pending_jobs = Resque.size(:post_receive)
|
||||
|
||||
rescue Redis::InheritedError
|
||||
@resque_accessible = false
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
class Admin::GroupsController < AdminController
|
||||
before_filter :group, only: [:edit, :show, :update, :destroy, :project_update]
|
||||
before_filter :group, only: [:edit, :show, :update, :destroy, :project_update, :project_teams_update]
|
||||
|
||||
def index
|
||||
@groups = Group.order('name ASC')
|
||||
|
@ -12,6 +12,8 @@ class Admin::GroupsController < AdminController
|
|||
@projects = @projects.not_in_group(@group) if @group.projects.present?
|
||||
@projects = @projects.all
|
||||
@projects.reject!(&:empty_repo?)
|
||||
|
||||
@users = User.active
|
||||
end
|
||||
|
||||
def new
|
||||
|
@ -65,7 +67,14 @@ class Admin::GroupsController < AdminController
|
|||
redirect_to :back, notice: 'Group was successfully updated.'
|
||||
end
|
||||
|
||||
def project_teams_update
|
||||
@group.add_users_to_project_teams(params[:user_ids], params[:project_access])
|
||||
redirect_to [:admin, @group], notice: 'Users was successfully added.'
|
||||
end
|
||||
|
||||
def destroy
|
||||
@group.truncate_teams
|
||||
|
||||
@group.destroy
|
||||
|
||||
redirect_to admin_groups_path, notice: 'Group was successfully deleted.'
|
||||
|
|
|
@ -10,6 +10,7 @@ class Admin::ProjectsController < AdminController
|
|||
end
|
||||
|
||||
def show
|
||||
@repository = @project.repository
|
||||
@users = User.active
|
||||
@users = @users.not_in_project(@project) if @project.users.present?
|
||||
@users = @users.all
|
||||
|
@ -19,7 +20,7 @@ class Admin::ProjectsController < AdminController
|
|||
end
|
||||
|
||||
def team_update
|
||||
@project.add_users_ids_to_team(params[:user_ids], params[:project_access])
|
||||
@project.team.add_users_ids(params[:user_ids], params[:project_access])
|
||||
|
||||
redirect_to [:admin, @project], notice: 'Project was successfully updated.'
|
||||
end
|
||||
|
@ -35,6 +36,9 @@ class Admin::ProjectsController < AdminController
|
|||
end
|
||||
|
||||
def destroy
|
||||
# Delete team first in order to prevent multiple gitolite calls
|
||||
@project.team.truncate
|
||||
|
||||
@project.destroy
|
||||
|
||||
redirect_to admin_projects_path, notice: 'Project was successfully deleted.'
|
||||
|
|
|
@ -3,13 +3,13 @@ class Admin::UsersController < AdminController
|
|||
@admin_users = User.scoped
|
||||
@admin_users = @admin_users.filter(params[:filter])
|
||||
@admin_users = @admin_users.search(params[:name]) if params[:name].present?
|
||||
@admin_users = @admin_users.order("name ASC").page(params[:page])
|
||||
@admin_users = @admin_users.alphabetically.page(params[:page])
|
||||
end
|
||||
|
||||
def show
|
||||
@admin_user = User.find(params[:id])
|
||||
|
||||
@projects = if @admin_user.projects.empty?
|
||||
@projects = if @admin_user.authorized_projects.empty?
|
||||
Project
|
||||
else
|
||||
Project.without_user(@admin_user)
|
||||
|
@ -19,9 +19,9 @@ class Admin::UsersController < AdminController
|
|||
def team_update
|
||||
@admin_user = User.find(params[:id])
|
||||
|
||||
UsersProject.user_bulk_import(
|
||||
@admin_user,
|
||||
UsersProject.add_users_into_projects(
|
||||
params[:project_ids],
|
||||
[@admin_user.id],
|
||||
params[:project_access]
|
||||
)
|
||||
|
||||
|
@ -98,7 +98,7 @@ class Admin::UsersController < AdminController
|
|||
|
||||
def destroy
|
||||
@admin_user = User.find(params[:id])
|
||||
if @admin_user.my_own_projects.count > 0
|
||||
if @admin_user.personal_projects.count > 0
|
||||
redirect_to admin_users_path, alert: "User is a project owner and can't be removed." and return
|
||||
end
|
||||
@admin_user.destroy
|
||||
|
|
|
@ -76,6 +76,12 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
end
|
||||
|
||||
def repository
|
||||
@repository ||= project.repository
|
||||
rescue Grit::NoSuchPathError
|
||||
nil
|
||||
end
|
||||
|
||||
def add_abilities
|
||||
abilities << Ability
|
||||
end
|
||||
|
|
|
@ -9,10 +9,10 @@ class CommitsController < ProjectResourceController
|
|||
before_filter :require_non_empty_project
|
||||
|
||||
def show
|
||||
@repo = @project.repo
|
||||
@repo = @project.repository
|
||||
@limit, @offset = (params[:limit] || 40), (params[:offset] || 0)
|
||||
|
||||
@commits = @project.commits(@ref, @path, @limit, @offset)
|
||||
@commits = @repo.commits(@ref, @path, @limit, @offset)
|
||||
@commits = CommitDecorator.decorate(@commits)
|
||||
|
||||
respond_to do |format|
|
||||
|
|
|
@ -20,7 +20,7 @@ class DashboardController < ApplicationController
|
|||
|
||||
@projects = @projects.page(params[:page]).per(30)
|
||||
|
||||
@events = Event.in_projects(current_user.project_ids)
|
||||
@events = Event.in_projects(current_user.authorized_projects.pluck(:id))
|
||||
@events = @event_filter.apply_filter(@events)
|
||||
@events = @events.limit(20).offset(params[:offset] || 0)
|
||||
|
||||
|
@ -36,14 +36,14 @@ class DashboardController < ApplicationController
|
|||
# Get authored or assigned open merge requests
|
||||
def merge_requests
|
||||
@merge_requests = current_user.cared_merge_requests
|
||||
@merge_requests = dashboard_filter(@merge_requests)
|
||||
@merge_requests = FilterContext.new(@merge_requests, params).execute
|
||||
@merge_requests = @merge_requests.recent.page(params[:page]).per(20)
|
||||
end
|
||||
|
||||
# Get only assigned issues
|
||||
def issues
|
||||
@issues = current_user.assigned_issues
|
||||
@issues = dashboard_filter(@issues)
|
||||
@issues = FilterContext.new(@issues, params).execute
|
||||
@issues = @issues.recent.page(params[:page]).per(20)
|
||||
@issues = @issues.includes(:author, :project)
|
||||
|
||||
|
@ -60,25 +60,7 @@ class DashboardController < ApplicationController
|
|||
end
|
||||
|
||||
def event_filter
|
||||
@event_filter ||= EventFilter.new(params[:event_filter])
|
||||
end
|
||||
|
||||
def dashboard_filter items
|
||||
if params[:project_id]
|
||||
items = items.where(project_id: params[:project_id])
|
||||
end
|
||||
|
||||
if params[:search].present?
|
||||
items = items.search(params[:search])
|
||||
end
|
||||
|
||||
case params[:status]
|
||||
when 'closed'
|
||||
items.closed
|
||||
when 'all'
|
||||
items
|
||||
else
|
||||
items.opened
|
||||
end
|
||||
filters = cookies['event_filter'].split(',') if cookies['event_filter']
|
||||
@event_filter ||= EventFilter.new(filters)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -21,15 +21,16 @@ class GroupsController < ApplicationController
|
|||
|
||||
# Get authored or assigned open merge requests
|
||||
def merge_requests
|
||||
@merge_requests = current_user.cared_merge_requests.opened
|
||||
@merge_requests = @merge_requests.of_group(@group).recent.page(params[:page]).per(20)
|
||||
@merge_requests = current_user.cared_merge_requests.of_group(@group)
|
||||
@merge_requests = FilterContext.new(@merge_requests, params).execute
|
||||
@merge_requests = @merge_requests.recent.page(params[:page]).per(20)
|
||||
end
|
||||
|
||||
# Get only assigned issues
|
||||
def issues
|
||||
@user = current_user
|
||||
@issues = current_user.assigned_issues.opened
|
||||
@issues = @issues.of_group(@group).recent.page(params[:page]).per(20)
|
||||
@issues = current_user.assigned_issues.of_group(@group)
|
||||
@issues = FilterContext.new(@issues, params).execute
|
||||
@issues = @issues.recent.page(params[:page]).per(20)
|
||||
@issues = @issues.includes(:author, :project)
|
||||
|
||||
respond_to do |format|
|
||||
|
@ -44,6 +45,7 @@ class GroupsController < ApplicationController
|
|||
@projects = result[:projects]
|
||||
@merge_requests = result[:merge_requests]
|
||||
@issues = result[:issues]
|
||||
@wiki_pages = result[:wiki_pages]
|
||||
end
|
||||
|
||||
def people
|
||||
|
@ -53,9 +55,16 @@ class GroupsController < ApplicationController
|
|||
|
||||
if @project
|
||||
@team_member = @project.users_projects.new
|
||||
else
|
||||
@team_member = UsersProject.new
|
||||
end
|
||||
end
|
||||
|
||||
def team_members
|
||||
@group.add_users_to_project_teams(params[:user_ids], params[:project_access])
|
||||
redirect_to people_group_path(@group), notice: 'Users was successfully added.'
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def group
|
||||
|
@ -63,7 +72,7 @@ class GroupsController < ApplicationController
|
|||
end
|
||||
|
||||
def projects
|
||||
@projects ||= group.projects.authorized_for(current_user).sorted_by_activity
|
||||
@projects ||= current_user.authorized_projects.where(namespace_id: group.id).sorted_by_activity
|
||||
end
|
||||
|
||||
def project_ids
|
||||
|
|
|
@ -74,6 +74,8 @@ class MergeRequestsController < ProjectResourceController
|
|||
@merge_request.check_if_can_be_merged
|
||||
end
|
||||
render json: {state: @merge_request.human_state}
|
||||
rescue Gitlab::SatelliteNotExistError
|
||||
render json: {state: :no_satellite}
|
||||
end
|
||||
|
||||
def automerge
|
||||
|
@ -88,12 +90,12 @@ class MergeRequestsController < ProjectResourceController
|
|||
end
|
||||
|
||||
def branch_from
|
||||
@commit = project.commit(params[:ref])
|
||||
@commit = @repository.commit(params[:ref])
|
||||
@commit = CommitDecorator.decorate(@commit)
|
||||
end
|
||||
|
||||
def branch_to
|
||||
@commit = project.commit(params[:ref])
|
||||
@commit = @repository.commit(params[:ref])
|
||||
@commit = CommitDecorator.decorate(@commit)
|
||||
end
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
class ProjectResourceController < ApplicationController
|
||||
before_filter :project
|
||||
before_filter :repository
|
||||
end
|
||||
|
|
|
@ -2,6 +2,7 @@ require Rails.root.join('lib', 'gitlab', 'graph', 'json_builder')
|
|||
|
||||
class ProjectsController < ProjectResourceController
|
||||
skip_before_filter :project, only: [:new, :create]
|
||||
skip_before_filter :repository, only: [:new, :create]
|
||||
|
||||
# Authorize
|
||||
before_filter :authorize_read_project!, except: [:index, :new, :create]
|
||||
|
@ -58,7 +59,7 @@ class ProjectsController < ProjectResourceController
|
|||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
unless @project.empty_repo?
|
||||
if @project.repository && !@project.repository.empty?
|
||||
@last_push = current_user.recent_push(@project.id)
|
||||
render :show
|
||||
else
|
||||
|
@ -102,11 +103,10 @@ class ProjectsController < ProjectResourceController
|
|||
def destroy
|
||||
return access_denied! unless can?(current_user, :remove_project, project)
|
||||
|
||||
# Disable the UsersProject update_repository call, otherwise it will be
|
||||
# called once for every person removed from the project
|
||||
UsersProject.skip_callback(:destroy, :after, :update_repository)
|
||||
# Delete team first in order to prevent multiple gitolite calls
|
||||
project.team.truncate
|
||||
|
||||
project.destroy
|
||||
UsersProject.set_callback(:destroy, :after, :update_repository)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to root_path }
|
||||
|
|
|
@ -12,7 +12,7 @@ class RefsController < ProjectResourceController
|
|||
respond_to do |format|
|
||||
format.html do
|
||||
new_path = if params[:destination] == "tree"
|
||||
project_tree_path(@project, @ref)
|
||||
project_tree_path(@project, (@ref + "/" + params[:path]))
|
||||
else
|
||||
project_commits_path(@project, @ref)
|
||||
end
|
||||
|
@ -31,7 +31,7 @@ class RefsController < ProjectResourceController
|
|||
contents = @tree.contents
|
||||
@logs = contents.map do |content|
|
||||
file = params[:path] ? File.join(params[:path], content.name) : content.name
|
||||
last_commit = @project.commits(@commit.id, file, 1).last
|
||||
last_commit = @repo.commits(@commit.id, file, 1).last
|
||||
last_commit = CommitDecorator.decorate(last_commit)
|
||||
{
|
||||
file_name: content.name,
|
||||
|
@ -45,10 +45,10 @@ class RefsController < ProjectResourceController
|
|||
def define_tree_vars
|
||||
params[:path] = nil if params[:path].blank?
|
||||
|
||||
@repo = project.repo
|
||||
@commit = project.commit(@ref)
|
||||
@repo = project.repository
|
||||
@commit = @repo.commit(@ref)
|
||||
@commit = CommitDecorator.decorate(@commit)
|
||||
@tree = Tree.new(@commit.tree, project, @ref, params[:path])
|
||||
@tree = Tree.new(@commit.tree, @ref, params[:path])
|
||||
@tree = TreeDecorator.new(@tree)
|
||||
@hex_path = Digest::SHA1.hexdigest(params[:path] || "")
|
||||
|
||||
|
|
|
@ -5,19 +5,19 @@ class RepositoriesController < ProjectResourceController
|
|||
before_filter :require_non_empty_project
|
||||
|
||||
def show
|
||||
@activities = @project.commits_with_refs(20)
|
||||
@activities = @repository.commits_with_refs(20)
|
||||
end
|
||||
|
||||
def branches
|
||||
@branches = @project.branches
|
||||
@branches = @repository.branches
|
||||
end
|
||||
|
||||
def tags
|
||||
@tags = @project.tags
|
||||
@tags = @repository.tags
|
||||
end
|
||||
|
||||
def stats
|
||||
@stats = Gitlab::GitStats.new(@project.repo, @project.root_ref)
|
||||
@stats = Gitlab::GitStats.new(@repository.raw, @repository.root_ref)
|
||||
@graph = @stats.graph
|
||||
end
|
||||
|
||||
|
@ -27,7 +27,7 @@ class RepositoriesController < ProjectResourceController
|
|||
end
|
||||
|
||||
|
||||
file_path = @project.archive_repo(params[:ref])
|
||||
file_path = @repository.archive_repo(params[:ref])
|
||||
|
||||
if file_path
|
||||
# Send file to user
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class SearchController < ApplicationController
|
||||
def show
|
||||
result = SearchContext.new(current_user.project_ids, params).execute
|
||||
result = SearchContext.new(current_user.authorized_projects.map(&:id), params).execute
|
||||
|
||||
@projects = result[:projects]
|
||||
@merge_requests = result[:merge_requests]
|
||||
|
|
|
@ -26,7 +26,7 @@ class ServicesController < ProjectResourceController
|
|||
end
|
||||
|
||||
def test
|
||||
commits = project.commits(project.default_branch, nil, 3)
|
||||
commits = project.repository.commits(project.default_branch, nil, 3)
|
||||
data = project.post_receive_data(commits.last.id, commits.first.id, "refs/heads/#{project.default_branch}", current_user)
|
||||
|
||||
@service = project.gitlab_ci_service
|
||||
|
|
|
@ -16,7 +16,7 @@ class SnippetsController < ProjectResourceController
|
|||
respond_to :html
|
||||
|
||||
def index
|
||||
@snippets = @project.snippets.fresh
|
||||
@snippets = @project.snippets.fresh.non_expired
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
|
@ -16,10 +16,9 @@ class TeamMembersController < ProjectResourceController
|
|||
end
|
||||
|
||||
def create
|
||||
@project.add_users_ids_to_team(
|
||||
params[:user_ids],
|
||||
params[:project_access]
|
||||
)
|
||||
users = User.where(id: params[:user_ids])
|
||||
|
||||
@project.team << [users, params[:project_access]]
|
||||
|
||||
if params[:redirect_to]
|
||||
redirect_to params[:redirect_to]
|
||||
|
@ -50,7 +49,7 @@ class TeamMembersController < ProjectResourceController
|
|||
|
||||
def apply_import
|
||||
giver = Project.find(params[:source_project_id])
|
||||
status = UsersProject.import_team(giver, project)
|
||||
status = @project.team.import(giver)
|
||||
notice = status ? "Succesfully imported" : "Import failed"
|
||||
|
||||
redirect_to project_team_members_path(project), notice: notice
|
||||
|
|
|
@ -22,7 +22,7 @@ class TreeController < ProjectResourceController
|
|||
end
|
||||
|
||||
def edit
|
||||
@last_commit = @project.last_commit_for(@ref, @path).sha
|
||||
@last_commit = @project.repository.last_commit_for(@ref, @path).sha
|
||||
end
|
||||
|
||||
def update
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue