Issue #83 - Project limit
This commit is contained in:
parent
9840102651
commit
67f0c62d07
13 changed files with 45 additions and 9 deletions
|
@ -521,3 +521,7 @@ tbody tr:nth-child(2n) td, tbody tr.even td {
|
||||||
width:400px;
|
width:400px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#user_projects_limit{
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ class Admin::UsersController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@admin_user = User.new
|
@admin_user = User.new(:projects_limit => 10)
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html # new.html.erb
|
format.html # new.html.erb
|
||||||
|
|
|
@ -25,6 +25,8 @@ class Project < ActiveRecord::Base
|
||||||
:uniqueness => true,
|
:uniqueness => true,
|
||||||
:length => { :within => 3..12 }
|
:length => { :within => 3..12 }
|
||||||
|
|
||||||
|
validate :check_limit
|
||||||
|
|
||||||
before_save :format_code
|
before_save :format_code
|
||||||
after_destroy :destroy_gitosis_project
|
after_destroy :destroy_gitosis_project
|
||||||
after_save :update_gitosis_project
|
after_save :update_gitosis_project
|
||||||
|
@ -126,6 +128,12 @@ class Project < ActiveRecord::Base
|
||||||
path ? (tree / path) : tree
|
path ? (tree / path) : tree
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def check_limit
|
||||||
|
unless owner.can_create_project?
|
||||||
|
errors[:base] << ("You can to have #{owner.projects_limit} your own projects")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def valid_repo?
|
def valid_repo?
|
||||||
repo
|
repo
|
||||||
rescue
|
rescue
|
||||||
|
|
|
@ -5,7 +5,7 @@ class User < ActiveRecord::Base
|
||||||
:recoverable, :rememberable, :trackable, :validatable
|
:recoverable, :rememberable, :trackable, :validatable
|
||||||
|
|
||||||
# Setup accessible (or protected) attributes for your model
|
# Setup accessible (or protected) attributes for your model
|
||||||
attr_accessible :email, :password, :password_confirmation, :remember_me, :name
|
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :projects_limit
|
||||||
|
|
||||||
has_many :users_projects, :dependent => :destroy
|
has_many :users_projects, :dependent => :destroy
|
||||||
has_many :projects, :through => :users_projects
|
has_many :projects, :through => :users_projects
|
||||||
|
@ -29,6 +29,10 @@ class User < ActiveRecord::Base
|
||||||
def is_admin?
|
def is_admin?
|
||||||
admin
|
admin
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def can_create_project?
|
||||||
|
projects_limit >= my_own_projects.count
|
||||||
|
end
|
||||||
end
|
end
|
||||||
# == Schema Information
|
# == Schema Information
|
||||||
#
|
#
|
||||||
|
@ -49,6 +53,6 @@ end
|
||||||
# updated_at :datetime
|
# updated_at :datetime
|
||||||
# name :string(255)
|
# name :string(255)
|
||||||
# admin :boolean default(FALSE), not null
|
# admin :boolean default(FALSE), not null
|
||||||
# allowed_create_repo :boolean default(TRUE), not null
|
# projects_limit :integer
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@
|
||||||
= f.check_box :admin
|
= f.check_box :admin
|
||||||
= f.label :admin
|
= f.label :admin
|
||||||
.field.prepend-top
|
.field.prepend-top
|
||||||
= f.check_box :allowed_create_repo, :disabled => true
|
= f.text_field :projects_limit, :class => "small_input"
|
||||||
= f.label :allowed_create_repo
|
= f.label :projects_limit
|
||||||
.clear
|
.clear
|
||||||
%br
|
%br
|
||||||
.actions
|
.actions
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
%p
|
%p
|
||||||
%b Admin:
|
%b Admin:
|
||||||
= @admin_user.admin
|
= @admin_user.admin
|
||||||
|
%p
|
||||||
|
%b Projects limit:
|
||||||
|
= @admin_user.projects_limit
|
||||||
|
|
||||||
.clear
|
.clear
|
||||||
= link_to 'Edit', edit_admin_user_path(@admin_user)
|
= link_to 'Edit', edit_admin_user_path(@admin_user)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
= link_to 'New Project', new_project_path, :class => "lbutton vm"
|
- if current_user.can_create_project?
|
||||||
|
= link_to 'New Project', new_project_path, :class => "lbutton vm"
|
||||||
|
|
||||||
%table.round-borders#projects-list
|
%table.round-borders#projects-list
|
||||||
%tr
|
%tr
|
||||||
|
|
|
@ -6,5 +6,6 @@ admin = User.create(
|
||||||
:password_confirmation => "5iveL!fe"
|
:password_confirmation => "5iveL!fe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
admin.projects_limit = 10000
|
||||||
admin.admin = true
|
admin.admin = true
|
||||||
admin.save!
|
admin.save!
|
||||||
|
|
|
@ -5,5 +5,6 @@ admin = User.create(
|
||||||
:password_confirmation => "5iveL!fe"
|
:password_confirmation => "5iveL!fe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
admin.projects_limit = 10000
|
||||||
admin.admin = true
|
admin.admin = true
|
||||||
admin.save!
|
admin.save!
|
||||||
|
|
5
db/migrate/20111009110913_add_projects_limit_to_user.rb
Normal file
5
db/migrate/20111009110913_add_projects_limit_to_user.rb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
class AddProjectsLimitToUser < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :users, :projects_limit, :integer, :default => 10
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
class RemoveAllowCreateRepoFromUser < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
remove_column :users, :allowed_create_repo
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
add_column :users, :allowed_create_repo, :boolean, :default => true, :null => false
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20111009101738) do
|
ActiveRecord::Schema.define(:version => 20111009111204) do
|
||||||
|
|
||||||
create_table "issues", :force => true do |t|
|
create_table "issues", :force => true do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
|
@ -70,7 +70,7 @@ ActiveRecord::Schema.define(:version => 20111009101738) do
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.boolean "admin", :default => false, :null => false
|
t.boolean "admin", :default => false, :null => false
|
||||||
t.boolean "allowed_create_repo", :default => true, :null => false
|
t.integer "projects_limit"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
|
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
|
||||||
|
|
|
@ -38,6 +38,6 @@ end
|
||||||
# updated_at :datetime
|
# updated_at :datetime
|
||||||
# name :string(255)
|
# name :string(255)
|
||||||
# admin :boolean default(FALSE), not null
|
# admin :boolean default(FALSE), not null
|
||||||
# allowed_create_repo :boolean default(TRUE), not null
|
# projects_limit :integer
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue