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

Ability to create project with namespace

parent 96105e21
No related branches found
No related tags found
1 merge request!2051User/Group namespaces for projects
Loading
Loading
@@ -74,6 +74,18 @@ module ApplicationHelper
grouped_options_for_select(options, @ref || @project.default_branch)
end
 
def namespaces_options
groups = current_user.namespaces.select {|n| n.type == 'Group'}
users = current_user.namespaces.reject {|n| n.type == 'Group'}
options = [
["Groups", groups.map {|g| [g.human_name, g.id]} ],
[ "Users", users.map {|u| [u.human_name, u.id]} ]
]
grouped_options_for_select(options, current_user.namespace.id)
end
def search_autocomplete_source
projects = current_user.projects.map{ |p| { label: p.name, url: project_path(p) } }
 
Loading
Loading
Loading
Loading
@@ -14,4 +14,8 @@ class Group < Namespace
def users
User.joins(:users_projects).where(users_projects: {project_id: project_ids}).uniq
end
def human_name
name
end
end
Loading
Loading
@@ -17,4 +17,8 @@ class Namespace < ActiveRecord::Base
def to_param
code
end
def human_name
owner_name
end
end
Loading
Loading
@@ -81,10 +81,13 @@ class Project < ActiveRecord::Base
end
 
def create_by_user(params, user)
namespace_id = params.delete(:namespace_id) || namespace.try(:id)
project = Project.new params
 
Project.transaction do
project.owner = user
project.namespace_id = namespace_id
project.save!
 
# Add user as project master
Loading
Loading
Loading
Loading
@@ -38,13 +38,16 @@ class User < ActiveRecord::Base
devise :database_authenticatable, :token_authenticatable, :lockable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
 
attr_accessible :email, :password, :password_confirmation, :remember_me, :bio, :name,
attr_accessible :email, :password, :password_confirmation, :remember_me, :bio, :name, :username,
:skype, :linkedin, :twitter, :dark_scheme, :theme_id, :force_random_password,
:extern_uid, :provider, :as => [:default, :admin]
attr_accessible :projects_limit, :as => :admin
 
attr_accessor :force_random_password
 
# Namespace for personal projects
has_one :namespace, class_name: "Namespace", foreign_key: :owner_id, conditions: 'type IS NULL', dependent: :destroy
has_many :keys, dependent: :destroy
has_many :projects, through: :users_projects
has_many :users_projects, dependent: :destroy
Loading
Loading
@@ -112,4 +115,11 @@ class User < ActiveRecord::Base
self.password = self.password_confirmation = Devise.friendly_token.first(8)
end
end
def namespaces
namespaces = []
namespaces << self.namespace
namespaces = namespaces + Group.all if admin
namespaces
end
end
Loading
Loading
@@ -8,6 +8,7 @@
= link_to authbutton(provider, 32), omniauth_authorize_path(User, provider)
 
 
%fieldset
%legend
Private token
Loading
Loading
@@ -44,11 +45,25 @@
.input= f.password_field :password
.clearfix
= f.label :password_confirmation
.input= f.password_field :password_confirmation
.actions
= f.submit 'Save', class: "btn save-btn"
.input
= f.password_field :password_confirmation
.clearfix
.input
= f.submit 'Save password', class: "btn save-btn"
 
 
 
%fieldset
%legend
Username
%small.right
Changing your username can have unintended side effects!
= form_for @user, url: profile_update_path, method: :put do |f|
.padded
= f.label :username
.input
= f.text_field :username
.input
= f.submit 'Save username', class: "btn save-btn"
 
 
Loading
Loading
@@ -12,6 +12,12 @@
%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
Loading
Loading
Loading
Loading
@@ -49,7 +49,7 @@ Gitlab::Application.routes.draw do
delete :remove_project
end
end
resources :projects, constraints: { id: /[^\/]+/ } do
resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do
member do
get :team
put :team_update
Loading
Loading
Loading
Loading
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
 
ActiveRecord::Schema.define(:version => 20121122150932) do
ActiveRecord::Schema.define(:version => 20121123104937) do
 
create_table "events", :force => true do |t|
t.string "target_type"
Loading
Loading
@@ -195,6 +195,7 @@ ActiveRecord::Schema.define(:version => 20121122150932) do
t.datetime "locked_at"
t.string "extern_uid"
t.string "provider"
t.string "username"
end
 
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
Loading
Loading
Loading
Loading
@@ -36,6 +36,7 @@ require 'spec_helper'
 
describe User do
describe "Associations" do
it { should have_one(:namespace) }
it { should have_many(:users_projects).dependent(:destroy) }
it { should have_many(:projects) }
it { should have_many(:my_own_projects).class_name('Project') }
Loading
Loading
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