Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
d01ac60f813e
Commit
d01ac60f
authored
Nov 23, 2012
by
Dmitriy Zaporozhets
Browse files
Create dir with namespace. Create namespace with user
parent
dcf959fc1429
Changes
6
Hide whitespace changes
Inline
Side-by-side
app/models/namespace.rb
View file @
d01ac60f
...
...
@@ -10,6 +10,8 @@
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
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
app/models/project.rb
View file @
d01ac60f
...
...
@@ -67,6 +67,7 @@
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 @@
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!
...
...
app/models/user.rb
View file @
d01ac60f
...
...
@@ -63,8 +63,9 @@
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
...
...
@@ -66,8 +67,10 @@
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 @@
namespaces
=
namespaces
+
Group
.
all
if
admin
namespaces
end
def
several_namespaces?
namespaces
.
size
>
1
end
end
app/observers/user_observer.rb
View file @
d01ac60f
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 @@
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
...
...
app/views/admin/users/_form.html.haml
View file @
d01ac60f
...
...
@@ -16,6 +16,11 @@
=
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
=
f
.
text_field
:email
...
...
@@ -26,7 +31,7 @@
=
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
...
...
@@ -30,7 +35,7 @@
%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
...
...
app/views/projects/_new_form.html.haml
View file @
d01ac60f
...
...
@@ -9,13 +9,5 @@
=
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'
}
-
if
current_user
.
several_namespaces?
.clearfix
...
...
@@ -21,4 +13,4 @@
.clearfix
=
f
.
label
:
path
do
Git Clon
e
=
f
.
label
:
namespace_id
do
%span
.cgray
Namespac
e
.input
...
...
@@ -24,12 +16,5 @@
.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"
.clearfix
=
f
.
label
:code
do
URL
.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.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment