From 1aa48174db63871bb10b53e49c86222a4d9b7c6d Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Sun, 14 Sep 2014 21:52:54 +0300 Subject: [PATCH] Fix STI+polymorphic for Group <-> GroupMember Signed-off-by: Dmitriy Zaporozhets --- .../group_members_controller.rb} | 4 ++-- app/controllers/projects/team_members_controller.rb | 2 +- app/models/members/group_member.rb | 5 +++-- app/models/members/project_member.rb | 2 ++ .../group_members/_group_member.html.haml} | 2 +- .../{users_groups => groups/group_members}/update.js.haml | 0 app/views/groups/members.html.haml | 2 +- config/routes.rb | 3 +-- db/migrate/20140914145549_migrate_to_new_members_model.rb | 2 +- 9 files changed, 12 insertions(+), 10 deletions(-) rename app/controllers/{users_groups_controller.rb => groups/group_members_controller.rb} (89%) rename app/views/{users_groups/_users_group.html.haml => groups/group_members/_group_member.html.haml} (85%) rename app/views/{users_groups => groups/group_members}/update.js.haml (100%) diff --git a/app/controllers/users_groups_controller.rb b/app/controllers/groups/group_members_controller.rb similarity index 89% rename from app/controllers/users_groups_controller.rb rename to app/controllers/groups/group_members_controller.rb index 07bd41d25eb..63c05d4f33b 100644 --- a/app/controllers/users_groups_controller.rb +++ b/app/controllers/groups/group_members_controller.rb @@ -1,4 +1,4 @@ -class GroupMembersController < ApplicationController +class Groups::GroupMembersController < ApplicationController before_filter :group # Authorize @@ -43,6 +43,6 @@ class GroupMembersController < ApplicationController end def member_params - params.require(:users_group).permit(:access_level, :user_id) + params.require(:group_member).permit(:access_level, :user_id) end end diff --git a/app/controllers/projects/team_members_controller.rb b/app/controllers/projects/team_members_controller.rb index 158661f66fc..7bb799eba64 100644 --- a/app/controllers/projects/team_members_controller.rb +++ b/app/controllers/projects/team_members_controller.rb @@ -69,6 +69,6 @@ class Projects::TeamMembersController < Projects::ApplicationController end def member_params - params.require(:team_member).permit(:user_id, :access_level) + params.require(:project_member).permit(:user_id, :access_level) end end diff --git a/app/models/members/group_member.rb b/app/models/members/group_member.rb index e7eb4a18e34..e72393c4278 100644 --- a/app/models/members/group_member.rb +++ b/app/models/members/group_member.rb @@ -1,11 +1,12 @@ class GroupMember < Member - SOURCE_TYPE = 'Group' + SOURCE_TYPE = 'Namespace' belongs_to :group, class_name: 'Group', foreign_key: 'source_id' # Make sure group member points only to group as it source default_value_for :source_type, SOURCE_TYPE - validates_format_of :source_type, with: /\AGroup\z/ + default_value_for :notification_level, Notification::N_GLOBAL + validates_format_of :source_type, with: /\ANamespace\z/ default_scope { where(source_type: SOURCE_TYPE) } scope :with_group, ->(group) { where(source_id: group.id) } diff --git a/app/models/members/project_member.rb b/app/models/members/project_member.rb index 3f8137ed06e..f14900ad3e6 100644 --- a/app/models/members/project_member.rb +++ b/app/models/members/project_member.rb @@ -5,8 +5,10 @@ class ProjectMember < Member belongs_to :project, class_name: 'Project', foreign_key: 'source_id' + # Make sure project member points only to project as it source default_value_for :source_type, SOURCE_TYPE + default_value_for :notification_level, Notification::N_GLOBAL validates_format_of :source_type, with: /\AProject\z/ default_scope { where(source_type: SOURCE_TYPE) } diff --git a/app/views/users_groups/_users_group.html.haml b/app/views/groups/group_members/_group_member.html.haml similarity index 85% rename from app/views/users_groups/_users_group.html.haml rename to app/views/groups/group_members/_group_member.html.haml index 7e246d3b7fb..099e50a384e 100644 --- a/app/views/users_groups/_users_group.html.haml +++ b/app/views/groups/group_members/_group_member.html.haml @@ -21,7 +21,7 @@ = link_to leave_profile_group_path(@group), data: { confirm: leave_group_message(@group.name)}, method: :delete, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do %i.icon-minus.icon-white - else - = link_to group_users_group_path(@group, member), data: { confirm: remove_user_from_group_message(@group, user) }, method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do + = link_to group_group_member_path(@group, member), data: { confirm: remove_user_from_group_message(@group, user) }, method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do %i.icon-minus.icon-white .edit-member.hide.js-toggle-content diff --git a/app/views/users_groups/update.js.haml b/app/views/groups/group_members/update.js.haml similarity index 100% rename from app/views/users_groups/update.js.haml rename to app/views/groups/group_members/update.js.haml diff --git a/app/views/groups/members.html.haml b/app/views/groups/members.html.haml index 7035cb95092..ebf407d4ef1 100644 --- a/app/views/groups/members.html.haml +++ b/app/views/groups/members.html.haml @@ -32,7 +32,7 @@ (#{@members.total_count}) %ul.well-list - @members.each do |member| - = render 'group_members/users_group', member: member, show_roles: show_roles, show_controls: true + = render 'groups/group_members/group_member', member: member, show_roles: show_roles, show_controls: true = paginate @members, theme: 'gitlab' :coffeescript diff --git a/config/routes.rb b/config/routes.rb index ce66ea99951..39ab9f4265a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -161,9 +161,8 @@ Gitlab::Application.routes.draw do get :projects end - resources :users_groups, only: [:create, :update, :destroy] - scope module: :groups do + resources :group_members, only: [:create, :update, :destroy] resource :avatar, only: [:destroy] resources :milestones end diff --git a/db/migrate/20140914145549_migrate_to_new_members_model.rb b/db/migrate/20140914145549_migrate_to_new_members_model.rb index b4f7718f26d..2a5a49c724a 100644 --- a/db/migrate/20140914145549_migrate_to_new_members_model.rb +++ b/db/migrate/20140914145549_migrate_to_new_members_model.rb @@ -1,6 +1,6 @@ class MigrateToNewMembersModel < ActiveRecord::Migration def up - execute "INSERT INTO members ( user_id, source_id, source_type, access_level, notification_level, type ) SELECT user_id, group_id, 'Group', group_access, notification_level, 'GroupMember' FROM users_groups" + execute "INSERT INTO members ( user_id, source_id, source_type, access_level, notification_level, type ) SELECT user_id, group_id, 'Namespace', group_access, notification_level, 'GroupMember' FROM users_groups" execute "INSERT INTO members ( user_id, source_id, source_type, access_level, notification_level, type ) SELECT user_id, project_id, 'Project', project_access, notification_level, 'ProjectMember' FROM users_projects" end