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
92c4a2c6a546
Commit
92c4a2c6
authored
Jan 19, 2013
by
Andrey Kumanyaev
Browse files
Rename Team class to ProjectTeam
parent
0261e6aa190a
Changes
3
Hide whitespace changes
Inline
Side-by-side
app/models/project.rb
View file @
92c4a2c6
...
...
@@ -127,7 +127,7 @@
end
def
team
@team
||=
Team
.
new
(
self
)
@team
||=
Project
Team
.
new
(
self
)
end
def
repository
...
...
app/models/project_team.rb
0 → 100644
View file @
92c4a2c6
class
ProjectTeam
attr_accessor
:project
def
initialize
(
project
)
@project
=
project
end
# Shortcut to add users
#
# Use:
# @team << [@user, :master]
# @team << [@users, :master]
#
def
<<
args
users
=
args
.
first
if
users
.
respond_to?
(
:each
)
add_users
(
users
,
args
.
second
)
else
add_user
(
users
,
args
.
second
)
end
end
def
get_tm
user_id
project
.
users_projects
.
find_by_user_id
(
user_id
)
end
def
add_user
(
user
,
access
)
add_users_ids
([
user
.
id
],
access
)
end
def
add_users
(
users
,
access
)
add_users_ids
(
users
.
map
(
&
:id
),
access
)
end
def
add_users_ids
(
user_ids
,
access
)
UsersProject
.
add_users_into_projects
(
[
project
.
id
],
user_ids
,
access
)
end
# Remove all users from project team
def
truncate
UsersProject
.
truncate_team
(
project
)
end
def
members
project
.
users_projects
end
def
guests
members
.
guests
.
map
(
&
:user
)
end
def
reporters
members
.
reporters
.
map
(
&
:user
)
end
def
developers
members
.
developers
.
map
(
&
:user
)
end
def
masters
members
.
masters
.
map
(
&
:user
)
end
def
repository_readers
repository_members
[
UsersProject
::
REPORTER
]
end
def
repository_writers
repository_members
[
UsersProject
::
DEVELOPER
]
end
def
repository_masters
repository_members
[
UsersProject
::
MASTER
]
end
def
repository_members
keys
=
Hash
.
new
{
|
h
,
k
|
h
[
k
]
=
[]
}
UsersProject
.
select
(
"keys.identifier, project_access"
).
joins
(
user: :keys
).
where
(
project_id:
project
.
id
).
each
{
|
row
|
keys
[
row
.
project_access
]
<<
[
row
.
identifier
]
}
keys
[
UsersProject
::
REPORTER
]
+=
project
.
deploy_keys
.
pluck
(
:identifier
)
keys
end
def
import
(
source_project
)
target_project
=
project
source_team
=
source_project
.
users_projects
.
all
target_team
=
target_project
.
users_projects
.
all
target_user_ids
=
target_team
.
map
(
&
:user_id
)
source_team
.
reject!
do
|
tm
|
# Skip if user already present in team
target_user_ids
.
include?
(
tm
.
user_id
)
end
source_team
.
map!
do
|
tm
|
new_tm
=
tm
.
dup
new_tm
.
id
=
nil
new_tm
.
project_id
=
target_project
.
id
new_tm
.
skip_git
=
true
new_tm
end
UsersProject
.
transaction
do
source_team
.
each
do
|
tm
|
tm
.
save
end
target_project
.
update_repository
end
true
rescue
false
end
end
app/models/team.rb
deleted
100644 → 0
View file @
0261e6aa
class
Team
attr_accessor
:project
def
initialize
(
project
)
@project
=
project
end
# Shortcut to add users
#
# Use:
# @team << [@user, :master]
# @team << [@users, :master]
#
def
<<
args
users
=
args
.
first
if
users
.
respond_to?
(
:each
)
add_users
(
users
,
args
.
second
)
else
add_user
(
users
,
args
.
second
)
end
end
def
get_tm
user_id
project
.
users_projects
.
find_by_user_id
(
user_id
)
end
def
add_user
(
user
,
access
)
add_users_ids
([
user
.
id
],
access
)
end
def
add_users
(
users
,
access
)
add_users_ids
(
users
.
map
(
&
:id
),
access
)
end
def
add_users_ids
(
user_ids
,
access
)
UsersProject
.
add_users_into_projects
(
[
project
.
id
],
user_ids
,
access
)
end
# Remove all users from project team
def
truncate
UsersProject
.
truncate_team
(
project
)
end
def
members
project
.
users_projects
end
def
guests
members
.
guests
.
map
(
&
:user
)
end
def
reporters
members
.
reporters
.
map
(
&
:user
)
end
def
developers
members
.
developers
.
map
(
&
:user
)
end
def
masters
members
.
masters
.
map
(
&
:user
)
end
def
repository_readers
repository_members
[
UsersProject
::
REPORTER
]
end
def
repository_writers
repository_members
[
UsersProject
::
DEVELOPER
]
end
def
repository_masters
repository_members
[
UsersProject
::
MASTER
]
end
def
repository_members
keys
=
Hash
.
new
{
|
h
,
k
|
h
[
k
]
=
[]
}
UsersProject
.
select
(
"keys.identifier, project_access"
).
joins
(
user: :keys
).
where
(
project_id:
project
.
id
).
each
{
|
row
|
keys
[
row
.
project_access
]
<<
[
row
.
identifier
]
}
keys
[
UsersProject
::
REPORTER
]
+=
project
.
deploy_keys
.
pluck
(
:identifier
)
keys
end
def
import
(
source_project
)
target_project
=
project
source_team
=
source_project
.
users_projects
.
all
target_team
=
target_project
.
users_projects
.
all
target_user_ids
=
target_team
.
map
(
&
:user_id
)
source_team
.
reject!
do
|
tm
|
# Skip if user already present in team
target_user_ids
.
include?
(
tm
.
user_id
)
end
source_team
.
map!
do
|
tm
|
new_tm
=
tm
.
dup
new_tm
.
id
=
nil
new_tm
.
project_id
=
target_project
.
id
new_tm
.
skip_git
=
true
new_tm
end
UsersProject
.
transaction
do
source_team
.
each
do
|
tm
|
tm
.
save
end
target_project
.
update_repository
end
true
rescue
false
end
end
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