Skip to content
Snippets Groups Projects
Commit ab9d0236 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Create dir with namespace. Create namespace with user

parent f17ddeb3
No related branches found
No related tags found
1 merge request!2051User/Group namespaces for projects
Loading
Loading
@@ -10,6 +10,8 @@ class Namespace < ActiveRecord::Base
 
delegate :name, to: :owner, allow_nil: true, prefix: true
 
after_save :ensure_dir_exist
scope :root, where('type IS NULL')
 
def self.search query
Loading
Loading
@@ -23,4 +25,9 @@ class Namespace < ActiveRecord::Base
def human_name
owner_name
end
def ensure_dir_exist
namespace_dir_path = File.join(Gitlab.config.git_base_path, code)
Dir.mkdir(namespace_dir_path) unless File.exists?(namespace_dir_path)
end
end
Loading
Loading
@@ -67,6 +67,7 @@ class Project < ActiveRecord::Base
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
validates :issues_enabled, :wall_enabled, :merge_requests_enabled,
:wiki_enabled, inclusion: { in: [true, false] }
validate :check_limit, :repo_name
 
# Scopes
Loading
Loading
@@ -89,6 +90,12 @@ class Project < ActiveRecord::Base
project = Project.new params
 
Project.transaction do
# Build gitlab-hq code from GitLab HQ name
#
slug = project.name.dup.parameterize
project.code = project.path = slug
project.owner = user
project.namespace_id = namespace_id
project.save!
Loading
Loading
Loading
Loading
@@ -63,11 +63,14 @@ class User < ActiveRecord::Base
validates :bio, length: { within: 0..255 }
validates :extern_uid, :allow_blank => true, :uniqueness => {:scope => :provider}
validates :projects_limit, presence: true, numericality: {greater_than_or_equal_to: 0}
validates :username, presence: true
 
before_validation :generate_password, on: :create
before_save :ensure_authentication_token
alias_attribute :private_token, :authentication_token
 
delegate :code, to: :namespace, allow_nil: true, prefix: true
# Scopes
scope :not_in_project, ->(project) { where("id not in (:ids)", ids: project.users.map(&:id) ) }
scope :admins, where(admin: true)
Loading
Loading
@@ -122,4 +125,8 @@ class User < ActiveRecord::Base
namespaces = namespaces + Group.all if admin
namespaces
end
def several_namespaces?
namespaces.size > 1
end
end
class UserObserver < ActiveRecord::Observer
def after_create(user)
user.create_namespace(code: user.username, name: user.name)
log_info("User \"#{user.name}\" (#{user.email}) was created")
 
Notify.new_user_email(user.id, user.password).deliver
Loading
Loading
@@ -10,7 +12,7 @@ class UserObserver < ActiveRecord::Observer
end
 
def after_save user
if user.username_changed?
if user.username_changed? and user.namespace
user.namespace.update_attributes(code: user.username)
end
end
Loading
Loading
Loading
Loading
@@ -15,6 +15,11 @@
.input
= f.text_field :name
%span.help-inline * required
.clearfix
= f.label :username
.input
= f.text_field :username
%span.help-inline * required
.clearfix
= f.label :email
.input
Loading
Loading
@@ -26,11 +31,11 @@
= f.label :force_random_password do
%span Generate random password
.input= f.check_box :force_random_password, {}, true, nil
%div.password-fields
.clearfix
= f.label :password
.input= f.password_field :password, disabled: f.object.force_random_password
.input= f.password_field :password, disabled: f.object.force_random_password
.clearfix
= f.label :password_confirmation
.input= f.password_field :password_confirmation, disabled: f.object.force_random_password
Loading
Loading
Loading
Loading
@@ -9,27 +9,12 @@
= f.text_field :name, placeholder: "Example Project", class: "xxlarge"
= f.submit 'Create project', class: "btn primary project-submit"
 
%hr
%div.adv_settings
%h6 Advanced settings:
- if current_user.namespaces.size > 1
.clearfix
= f.label :namespace_id do
Namespace
.input
= f.select :namespace_id, namespaces_options, {}, {class: 'chosen'}
.clearfix
= f.label :path do
Git Clone
.input
.input-prepend
%span.add-on= Gitlab.config.ssh_path
= f.text_field :path, placeholder: "example_project", disabled: !@project.new_record?
%span.add-on= ".git"
- if current_user.several_namespaces?
.clearfix
= f.label :code do
URL
= f.label :namespace_id do
%span.cgray Namespace
.input
.input-prepend
%span.add-on= web_app_url
= f.text_field :code, placeholder: "example"
= f.select :namespace_id, namespaces_options, {}, {class: 'chosen'}
%hr
%p.padded
All created project are private. You choose who can see project and commit to repository.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment