Commit e940fbc7c1b322c15f5d5ae878fbd3117e9b98f9
1 parent
fa877b63
Exists in
master
and in
4 other branches
Add UsersGroup relation to be respected by abilities and Project#team
Showing
10 changed files
with
55 additions
and
27 deletions
Show diff stats
app/controllers/groups_controller.rb
... | ... | @@ -64,11 +64,11 @@ class GroupsController < ApplicationController |
64 | 64 | def people |
65 | 65 | @project = group.projects.find(params[:project_id]) if params[:project_id] |
66 | 66 | |
67 | - @users_groups = group.users_groups | |
68 | - | |
69 | 67 | if @project |
68 | + @members = @project.users_projects | |
70 | 69 | @team_member = @project.users_projects.new |
71 | 70 | else |
71 | + @members = group.users_groups | |
72 | 72 | @team_member = UsersGroup.new |
73 | 73 | end |
74 | 74 | end | ... | ... |
app/models/ability.rb
app/models/project_team.rb
... | ... | @@ -47,23 +47,23 @@ class ProjectTeam |
47 | 47 | end |
48 | 48 | |
49 | 49 | def members |
50 | - project.users_projects | |
50 | + fetch_members | |
51 | 51 | end |
52 | 52 | |
53 | 53 | def guests |
54 | - members.guests.map(&:user) | |
54 | + @guests ||= fetch_members(:guests) | |
55 | 55 | end |
56 | 56 | |
57 | 57 | def reporters |
58 | - members.reporters.map(&:user) | |
58 | + @reporters ||= fetch_members(:reporters) | |
59 | 59 | end |
60 | 60 | |
61 | 61 | def developers |
62 | - members.developers.map(&:user) | |
62 | + @developers ||= fetch_members(:developers) | |
63 | 63 | end |
64 | 64 | |
65 | 65 | def masters |
66 | - members.masters.map(&:user) | |
66 | + @masters ||= fetch_members(:masters) | |
67 | 67 | end |
68 | 68 | |
69 | 69 | def import(source_project) |
... | ... | @@ -96,4 +96,18 @@ class ProjectTeam |
96 | 96 | rescue |
97 | 97 | false |
98 | 98 | end |
99 | + | |
100 | + private | |
101 | + | |
102 | + def fetch_members(level = nil) | |
103 | + project_members = project.users_projects | |
104 | + group_members = project.group.users_groups | |
105 | + | |
106 | + if level | |
107 | + project_members = project_members.send(level) | |
108 | + group_members = group_members.send(level) | |
109 | + end | |
110 | + | |
111 | + (project_members + group_members).map(&:user).uniq | |
112 | + end | |
99 | 113 | end | ... | ... |
app/models/users_group.rb
app/models/users_project.rb
... | ... | @@ -129,9 +129,7 @@ class UsersProject < ActiveRecord::Base |
129 | 129 | Project.access_options.key(self.project_access) |
130 | 130 | end |
131 | 131 | |
132 | - def repo_access_human | |
133 | - self.class.access_roles.invert[self.project_access] | |
134 | - end | |
132 | + alias_method :human_access, :project_access_human | |
135 | 133 | |
136 | 134 | def skip_git? |
137 | 135 | !!@skip_git | ... | ... |
app/services/system_hooks_service.rb
app/views/groups/_new_group_member.html.haml
1 | 1 | = form_for @team_member, as: :team_member, url: team_members_group_path(@group) do |f| |
2 | 2 | %fieldset |
3 | - %legend= "New Team member(s) for projects in #{@group.name}" | |
3 | + %legend= "New Group member(s) for #{@group.name}" | |
4 | 4 | |
5 | - %h6 1. Choose people you want in the team | |
5 | + %h6 1. Choose people you want in the group | |
6 | 6 | .clearfix |
7 | 7 | = f.label :user_ids, "People" |
8 | 8 | .input= users_select_tag(:user_ids, multiple: true) | ... | ... |
app/views/groups/_new_member.html.haml
1 | 1 | = form_for @team_member, as: :team_member, url: project_team_members_path(@project, @team_member) do |f| |
2 | 2 | %fieldset |
3 | - %legend= "New Team member(s) for #{@project.name}" | |
3 | + %legend= "New Project member(s) for #{@project.name}" | |
4 | 4 | |
5 | - %h6 1. Choose people you want in the team | |
5 | + %h6 1. Choose people you want in the project | |
6 | 6 | .clearfix |
7 | 7 | = f.label :user_ids, "People" |
8 | 8 | .input= users_select_tag(:user_ids, multiple: true) |
... | ... | @@ -14,5 +14,5 @@ |
14 | 14 | |
15 | 15 | .form-actions |
16 | 16 | = hidden_field_tag :redirect_to, people_group_path(@group, project_id: @project.id) |
17 | - = f.submit 'Add', class: "btn btn-save" | |
17 | + = f.submit 'Add users into project', class: "btn btn-create" | |
18 | 18 | ... | ... |
app/views/groups/_people_filter.html.haml
1 | +%fieldset | |
2 | + %legend Group members: | |
3 | + %ul.nav.nav-pills.nav-stacked | |
4 | + %li{class: ("active" if params[:project_id].blank?)} | |
5 | + = link_to people_group_path(@group) do | |
6 | + #{@group.name} Group | |
7 | + %small.pull-right= @group.users.count | |
8 | + | |
9 | + | |
1 | 10 | = form_tag people_group_path(@group), method: 'get' do |
2 | 11 | %fieldset |
3 | - %legend Projects: | |
12 | + %legend Project members: | |
4 | 13 | %ul.nav.nav-pills.nav-stacked |
5 | 14 | - @projects.each do |project| |
6 | 15 | %li{class: ("active" if params[:project_id] == project.id.to_s)} |
... | ... | @@ -10,7 +19,4 @@ |
10 | 19 | - if @projects.blank? |
11 | 20 | %p.nothing_here_message This group has no projects yet |
12 | 21 | |
13 | - %fieldset | |
14 | - %hr | |
15 | - = link_to "Reset", people_group_path(@group), class: 'btn pull-right' | |
16 | 22 | ... | ... |
app/views/groups/people.html.haml
... | ... | @@ -6,12 +6,18 @@ |
6 | 6 | = render (@project ? "new_member" : "new_group_member") |
7 | 7 | .ui-box |
8 | 8 | %h5.title |
9 | - #{@group.name} Team | |
10 | - %small | |
11 | - (#{@users_groups.count}) | |
9 | + - if @project | |
10 | + #{@project.name} Project Members | |
11 | + %small | |
12 | + (#{@members.count}) | |
13 | + - else | |
14 | + #{@group.name} Group Members | |
15 | + %small | |
16 | + (#{@members.count}) | |
12 | 17 | %ul.well-list |
13 | - - @users_groups.each do |users_group| | |
14 | - - user = users_group.user | |
18 | + - @members.each do |member| | |
19 | + - user = member.user | |
20 | + - next unless user | |
15 | 21 | %li |
16 | 22 | = image_tag gravatar_icon(user.email, 16), class: "avatar s16" |
17 | 23 | %strong= user.name |
... | ... | @@ -21,5 +27,5 @@ |
21 | 27 | - if @group.owners.include?(user) |
22 | 28 | %span.label.label-info Group Owner |
23 | 29 | - else |
24 | - = users_group.human_group_access | |
30 | + = member.human_access | |
25 | 31 | ... | ... |