Fix not_in_project scope. Added counters in admin -> users. Improved seeds
This commit is contained in:
parent
e56a47ab19
commit
4cbb29cfad
13 changed files with 103 additions and 57 deletions
|
@ -77,7 +77,6 @@ class User < ActiveRecord::Base
|
|||
delegate :path, 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)
|
||||
scope :blocked, where(blocked: true)
|
||||
scope :active, where(blocked: false)
|
||||
|
@ -93,6 +92,14 @@ class User < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
def not_in_project(project)
|
||||
if project.users.present?
|
||||
where("id not in (:ids)", ids: project.users.map(&:id) )
|
||||
else
|
||||
scoped
|
||||
end
|
||||
end
|
||||
|
||||
def without_projects
|
||||
where('id NOT IN (SELECT DISTINCT(user_id) FROM users_projects)')
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%h3.page_title
|
||||
Projects (#{@projects.count})
|
||||
Projects (#{Project.count})
|
||||
= link_to 'New Project', new_project_path, class: "btn small right"
|
||||
%br
|
||||
= form_tag admin_projects_path, method: :get, class: 'form-inline' do
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%h3.page_title
|
||||
Users (#{@admin_users.count})
|
||||
Users
|
||||
= link_to 'New User', new_admin_user_path, class: "btn small right"
|
||||
%br
|
||||
|
||||
|
@ -8,16 +8,21 @@
|
|||
= submit_tag "Search", class: "btn submit primary"
|
||||
%ul.nav.nav-tabs
|
||||
%li{class: "#{'active' unless params[:filter]}"}
|
||||
= link_to "Active", admin_users_path
|
||||
= link_to admin_users_path do
|
||||
Active
|
||||
%span.badge= User.active.count
|
||||
%li{class: "#{'active' if params[:filter] == "admins"}"}
|
||||
= link_to admin_users_path(filter: "admins") do
|
||||
Admins
|
||||
%span.badge= User.admins.count
|
||||
%li{class: "#{'active' if params[:filter] == "blocked"}"}
|
||||
= link_to admin_users_path(filter: "blocked") do
|
||||
Blocked
|
||||
%span.badge= User.blocked.count
|
||||
%li{class: "#{'active' if params[:filter] == "wop"}"}
|
||||
= link_to admin_users_path(filter: "wop") do
|
||||
Without projects
|
||||
%span.badge= User.without_projects.count
|
||||
|
||||
%table
|
||||
%thead
|
||||
|
|
|
@ -9,13 +9,3 @@ User.seed(:id, [
|
|||
admin: true,
|
||||
}
|
||||
])
|
||||
|
||||
|
||||
Key.seed(:id, [
|
||||
{
|
||||
id: 1,
|
||||
title: "Sample key",
|
||||
key: "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
|
||||
user_id: 1,
|
||||
}
|
||||
])
|
||||
|
|
|
@ -1,14 +1,26 @@
|
|||
Group.seed(:id, [
|
||||
{ id: 99, name: "GitLab", path: 'gitlab', owner_id: 1 },
|
||||
{ id: 100, name: "Brightbox", path: 'brightbox', owner_id: 1 },
|
||||
{ id: 101, name: "KDE", path: 'kde', owner_id: 1 },
|
||||
])
|
||||
|
||||
Project.seed(:id, [
|
||||
|
||||
# Global
|
||||
{ id: 1, name: "Underscore.js", path: "underscore", owner_id: 1 },
|
||||
{ id: 2, name: "Diaspora", path: "diaspora", owner_id: 1 },
|
||||
|
||||
# Brightbox
|
||||
{ id: 3, namespace_id: 100, name: "Brightbox CLI", path: "brightbox-cli", owner_id: 1 },
|
||||
{ id: 4, namespace_id: 100, name: "Puppet", path: "puppet", owner_id: 1 },
|
||||
|
||||
# KDE
|
||||
{ id: 5, namespace_id: 101, name: "kdebase", path: "kdebase", owner_id: 1},
|
||||
{ id: 6, namespace_id: 101, name: "kdelibs", path: "kdelibs", owner_id: 1},
|
||||
{ id: 7, namespace_id: 101, name: "amarok", path: "amarok", owner_id: 1},
|
||||
|
||||
# GitLab
|
||||
{ id: 8, namespace_id: 99, name: "gitlabhq", path: "gitlabhq", owner_id: 1},
|
||||
{ id: 9, namespace_id: 99, name: "gitlab-ci", path: "gitlab-ci", owner_id: 1},
|
||||
{ id: 10, namespace_id: 99, name: "gitlab-recipes", path: "gitlab-recipes", owner_id: 1},
|
||||
])
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
User.seed(:id, [
|
||||
{ id: 2, username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email},
|
||||
{ id: 3, username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email},
|
||||
{ id: 4, username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email},
|
||||
{ id: 5, username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email},
|
||||
{ id: 6, username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email},
|
||||
{ id: 7, username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email},
|
||||
{ id: 8, username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email},
|
||||
{ id: 9, username: Faker::Internet.user_name, name: Faker::Name.name, email: Faker::Internet.email}
|
||||
])
|
||||
|
||||
Gitlab::Seeder.quiet do
|
||||
(2..300).each do |i|
|
||||
begin
|
||||
User.seed(:id, [{
|
||||
id: i,
|
||||
username: Faker::Internet.user_name,
|
||||
name: Faker::Name.name,
|
||||
email: Faker::Internet.email,
|
||||
}])
|
||||
print '.'
|
||||
rescue ActiveRecord::RecordNotSaved
|
||||
print 'F'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,24 +1,26 @@
|
|||
UsersProject.skip_callback(:save, :after, :update_repository)
|
||||
|
||||
UsersProject.seed(:id, [
|
||||
{ :id => 1, :project_id => 1, :user_id => 1, :project_access => UsersProject::MASTER },
|
||||
{ :id => 2, :project_id => 1, :user_id => 2, :project_access => UsersProject::REPORTER},
|
||||
{ :id => 3, :project_id => 1, :user_id => 3, :project_access => UsersProject::REPORTER},
|
||||
{ :id => 4, :project_id => 1, :user_id => 4, :project_access => UsersProject::REPORTER},
|
||||
{ :id => 5, :project_id => 1, :user_id => 5, :project_access => UsersProject::REPORTER},
|
||||
Gitlab::Seeder.quiet do
|
||||
|
||||
{ :id => 6, :project_id => 2, :user_id => 1, :project_access => UsersProject::MASTER },
|
||||
{ :id => 7, :project_id => 2, :user_id => 2, :project_access => UsersProject::REPORTER},
|
||||
{ :id => 8, :project_id => 2, :user_id => 3, :project_access => UsersProject::REPORTER},
|
||||
{ :id => 9, :project_id => 2, :user_id => 4, :project_access => UsersProject::MASTER},
|
||||
{ :id => 11, :project_id => 2, :user_id => 5, :project_access => UsersProject::MASTER},
|
||||
(1..300).each do |i|
|
||||
# Random Project
|
||||
project = Project.scoped.sample
|
||||
|
||||
{ :id => 12, :project_id => 3, :user_id => 1, :project_access => UsersProject::MASTER },
|
||||
{ :id => 13, :project_id => 3, :user_id => 2, :project_access => UsersProject::REPORTER},
|
||||
{ :id => 14, :project_id => 3, :user_id => 3, :project_access => UsersProject::MASTER},
|
||||
{ :id => 15, :project_id => 3, :user_id => 4, :project_access => UsersProject::REPORTER},
|
||||
{ :id => 16, :project_id => 3, :user_id => 5, :project_access => UsersProject::MASTER}
|
||||
])
|
||||
# Random user
|
||||
user = User.not_in_project(project).sample
|
||||
|
||||
next unless user
|
||||
|
||||
UsersProject.seed(:id, [{
|
||||
id: i,
|
||||
project_id: project.id,
|
||||
user_id: user.id,
|
||||
project_access: UsersProject.access_roles.values.sample
|
||||
}])
|
||||
|
||||
print('.')
|
||||
end
|
||||
end
|
||||
|
||||
UsersProject.set_callback(:save, :after, :update_repository)
|
||||
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
Gitlab::Seeder.quiet do
|
||||
(1..300).each do |i|
|
||||
# Random Project
|
||||
project_id = rand(2) + 1
|
||||
project = Project.find(project_id)
|
||||
project = Project.all.sample
|
||||
|
||||
# Random user
|
||||
user = project.users.sample
|
||||
|
||||
next unless user
|
||||
|
||||
user_id = user.id
|
||||
|
||||
Note.seed(:id, [{
|
||||
id: i,
|
||||
project_id: project_id,
|
||||
project_id: project.id,
|
||||
author_id: user_id,
|
||||
note: Faker::Lorem.sentence(6)
|
||||
}])
|
||||
|
|
|
@ -1,17 +1,19 @@
|
|||
Gitlab::Seeder.quiet do
|
||||
(1..300).each do |i|
|
||||
# Random Project
|
||||
project_id = rand(2) + 1
|
||||
project = Project.find(project_id)
|
||||
project = Project.all.sample
|
||||
|
||||
# Random user
|
||||
user = project.users.sample
|
||||
|
||||
next unless user
|
||||
|
||||
user_id = user.id
|
||||
IssueObserver.current_user = user
|
||||
|
||||
Issue.seed(:id, [{
|
||||
id: i,
|
||||
project_id: project_id,
|
||||
project_id: project.id,
|
||||
author_id: user_id,
|
||||
assignee_id: user_id,
|
||||
closed: [true, false].sample,
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
Gitlab::Seeder.quiet do
|
||||
(1..300).each do |i|
|
||||
# Random Project
|
||||
project_id = rand(2) + 1
|
||||
project = Project.find(project_id)
|
||||
project = Project.all.sample
|
||||
|
||||
# Random user
|
||||
user = project.users.sample
|
||||
|
||||
next unless user
|
||||
|
||||
user_id = user.id
|
||||
MergeRequestObserver.current_user = user
|
||||
|
||||
MergeRequest.seed(:id, [{
|
||||
id: i,
|
||||
source_branch: 'master',
|
||||
target_branch: 'feature',
|
||||
project_id: project_id,
|
||||
project_id: project.id,
|
||||
author_id: user_id,
|
||||
assignee_id: user_id,
|
||||
closed: [true, false].sample,
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
root = Gitlab.config.git_base_path
|
||||
root = Gitlab.config.gitolite.repos_path
|
||||
|
||||
projects = [
|
||||
{ path: 'underscore.git', git: 'https://github.com/documentcloud/underscore.git' },
|
||||
{ path: 'diaspora.git', git: 'https://github.com/diaspora/diaspora.git' },
|
||||
{ path: 'underscore.git', git: 'https://github.com/documentcloud/underscore.git' },
|
||||
{ path: 'diaspora.git', git: 'https://github.com/diaspora/diaspora.git' },
|
||||
{ path: 'brightbox/brightbox-cli.git', git: 'https://github.com/brightbox/brightbox-cli.git' },
|
||||
{ path: 'brightbox/puppet.git', git: 'https://github.com/brightbox/puppet.git' },
|
||||
{ path: 'brightbox/puppet.git', git: 'https://github.com/brightbox/puppet.git' },
|
||||
{ path: 'gitlab/gitlabhq.git', git: 'https://github.com/gitlabhq/gitlabhq.git' },
|
||||
{ path: 'gitlab/gitlab-ci.git', git: 'https://github.com/gitlabhq/gitlab-ci.git' },
|
||||
{ path: 'gitlab/gitlab-recipres.git', git: 'https://github.com/gitlabhq/gitlab-recipes.git' },
|
||||
]
|
||||
|
||||
projects.each do |project|
|
||||
project_path = File.join(root, project[:path])
|
||||
|
||||
|
||||
next if File.exists?(project_path)
|
||||
|
||||
cmds = [
|
||||
|
|
8
db/fixtures/development/010_keys.rb
Normal file
8
db/fixtures/development/010_keys.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
Key.seed(:id, [
|
||||
{
|
||||
id: 1,
|
||||
title: "Sample key",
|
||||
key: "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
|
||||
user_id: 1,
|
||||
}
|
||||
])
|
11
lib/support/truncate_repositories.sh
Executable file
11
lib/support/truncate_repositories.sh
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "Danger!!! Data Loss"
|
||||
while true; do
|
||||
read -p "Do you wish to all directories except gitolite-admin.git from /home/git/repositories/ (y/n) ?: " yn
|
||||
case $yn in
|
||||
[Yy]* ) sh -c "find /home/git/repositories/. -maxdepth 1 -not -name 'gitolite-admin.git' -not -name '.' | xargs sudo rm -rf"; break;;
|
||||
[Nn]* ) exit;;
|
||||
* ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
Loading…
Reference in a new issue