Read about our upcoming Code of Conduct on this issue

Commit ab9d0236 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Create dir with namespace. Create namespace with user

parent dcf959fc1429
......@@ -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
......@@ -23,4 +25,9 @@ def to_param
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
......@@ -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
......@@ -89,6 +90,12 @@ def create_by_user(params, user)
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!
......
......@@ -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)
......@@ -122,4 +125,8 @@ def namespaces
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
......@@ -10,7 +12,7 @@ def after_destroy user
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
......
......@@ -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
......@@ -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
......
......@@ -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.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment