Dont allow project creation without repository
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
27cd35de69
commit
674cbe939c
|
@ -19,10 +19,11 @@ class ProjectsController < ApplicationController
|
|||
|
||||
def create
|
||||
@project = ::Projects::CreateService.new(current_user, project_params).execute
|
||||
flash[:notice] = 'Project was successfully created.' if @project.saved?
|
||||
|
||||
respond_to do |format|
|
||||
format.js
|
||||
if @project.saved?
|
||||
redirect_to project_path(@project), notice: 'Project was successfully created.'
|
||||
else
|
||||
render 'new'
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -586,4 +586,25 @@ class Project < ActiveRecord::Base
|
|||
def origin_merge_requests
|
||||
merge_requests.where(source_project_id: self.id)
|
||||
end
|
||||
|
||||
def create_repository
|
||||
if gitlab_shell.add_repository(path_with_namespace)
|
||||
true
|
||||
else
|
||||
errors.add(:base, "Failed to create repository")
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
def repository_exists?
|
||||
!!repository.exists?
|
||||
end
|
||||
|
||||
def create_wiki
|
||||
ProjectWiki.new(self, self.owner).wiki
|
||||
true
|
||||
rescue ProjectWiki::CouldNotCreateWikiError => ex
|
||||
errors.add(:base, "Failed create wiki")
|
||||
false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -37,35 +37,22 @@ module Projects
|
|||
|
||||
@project.creator = current_user
|
||||
|
||||
if @project.save
|
||||
log_info("#{@project.owner.name} created a new project \"#{@project.name_with_namespace}\"")
|
||||
system_hook_service.execute_hooks_for(@project, :create)
|
||||
Project.transaction do
|
||||
@project.save
|
||||
|
||||
unless @project.group
|
||||
@project.team << [current_user, :master]
|
||||
end
|
||||
|
||||
@project.update_column(:last_activity_at, @project.created_at)
|
||||
|
||||
if @project.import?
|
||||
@project.import_start
|
||||
else
|
||||
GitlabShellWorker.perform_async(
|
||||
:add_repository,
|
||||
@project.path_with_namespace
|
||||
)
|
||||
unless @project.import?
|
||||
unless @project.create_repository
|
||||
raise 'Failed to create repository'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if @project.persisted?
|
||||
if @project.wiki_enabled?
|
||||
begin
|
||||
# force the creation of a wiki,
|
||||
ProjectWiki.new(@project, @project.owner).wiki
|
||||
rescue ProjectWiki::CouldNotCreateWikiError => ex
|
||||
# Prevent project observer crash
|
||||
# if failed to create wiki
|
||||
nil
|
||||
end
|
||||
@project.create_wiki
|
||||
end
|
||||
|
||||
after_create_actions
|
||||
end
|
||||
|
||||
@project
|
||||
|
@ -84,5 +71,20 @@ module Projects
|
|||
namespace = Namespace.find_by(id: namespace_id)
|
||||
current_user.can?(:create_projects, namespace)
|
||||
end
|
||||
|
||||
def after_create_actions
|
||||
log_info("#{@project.owner.name} created a new project \"#{@project.name_with_namespace}\"")
|
||||
system_hook_service.execute_hooks_for(@project, :create)
|
||||
|
||||
unless @project.group
|
||||
@project.team << [current_user, :master]
|
||||
end
|
||||
|
||||
@project.update_column(:last_activity_at, @project.created_at)
|
||||
|
||||
if @project.import?
|
||||
@project.import_start
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
- if @project.saved?
|
||||
- if @project.import?
|
||||
:plain
|
||||
location.href = "#{import_project_path(@project)}";
|
||||
- else
|
||||
:plain
|
||||
location.href = "#{project_path(@project)}";
|
||||
- else
|
||||
:plain
|
||||
$(".project-edit-errors").html("#{escape_javascript(render('errors'))}");
|
||||
$('.project-submit').enable();
|
||||
$('.save-project-loader').hide();
|
||||
$('.project-edit-container').show();
|
|
@ -3,7 +3,7 @@
|
|||
= render 'projects/errors'
|
||||
.project-edit-content
|
||||
|
||||
= form_for @project, remote: true, html: { class: 'new_project form-horizontal' } do |f|
|
||||
= form_for @project, html: { class: 'new_project form-horizontal' } do |f|
|
||||
.form-group.project-name-holder
|
||||
= f.label :name, class: 'control-label' do
|
||||
%strong Project name
|
||||
|
|
Loading…
Reference in New Issue