Merge pull request #364 from warpc/195-new_design_for_projects
[issue #195] Owner removed from list of collaborators when editing list
This commit is contained in:
commit
e2dfaa1f56
|
@ -34,7 +34,9 @@ class CollaboratorsController < ApplicationController
|
|||
role = params['user'][user_id]
|
||||
|
||||
if relation = @project.relations.find_by_object_id_and_object_type(user_id, 'User')
|
||||
relation.update_attribute(:role, role)
|
||||
unless @project.owner_type == 'User' and @project.owner_id.to_i == user_id.to_i
|
||||
relation.update_attribute(:role, role)
|
||||
end
|
||||
else
|
||||
relation = @project.relations.build(:object_id => user_id, :object_type => 'User', :role => role)
|
||||
relation.save
|
||||
|
@ -44,7 +46,9 @@ class CollaboratorsController < ApplicationController
|
|||
params['group'].keys.each { |group_id|
|
||||
role = params['group'][group_id]
|
||||
if relation = @project.relations.find_by_object_id_and_object_type(group_id, 'Group')
|
||||
relation.update_attribute(:role, role)
|
||||
unless @project.owner_type == 'Group' and @project.owner_id.to_i == group_id.to_i
|
||||
relation.update_attribute(:role, role)
|
||||
end
|
||||
else
|
||||
relation = @project.relations.build(:object_id => user_id, :object_type => 'Group', :role => role)
|
||||
relation.save
|
||||
|
@ -71,13 +75,14 @@ class CollaboratorsController < ApplicationController
|
|||
all_group_ids << group_id if params['group_remove'][group_id] == ["1"]
|
||||
} if params['group_remove']
|
||||
|
||||
|
||||
all_user_ids.each do |user_id|
|
||||
u = User.find(user_id)
|
||||
Relation.by_object(u).by_target(@project).each {|r| r.destroy}
|
||||
Relation.by_object(u).by_target(@project).each {|r| r.destroy} unless u.id == @project.owner_id and @project.owner_type == 'User'
|
||||
end
|
||||
all_group_ids.each do |group_id|
|
||||
g = Group.find(group_id)
|
||||
Relation.by_object(g).by_target(@project).each {|r| r.destroy}
|
||||
Relation.by_object(g).by_target(@project).each {|r| r.destroy} unless g.id == @project.owner_id and @project.owner_type == 'Group'
|
||||
end
|
||||
|
||||
redirect_to edit_project_collaborators_path(@project) + "##{params['user_remove'].present? ? 'users' : 'groups'}"
|
||||
|
@ -126,10 +131,12 @@ class CollaboratorsController < ApplicationController
|
|||
|
||||
def find_users
|
||||
@users = @project.collaborators.order('uname')#User.all
|
||||
@users = @users.without(@project.owner_id) if @project.owner_type == 'User'
|
||||
end
|
||||
|
||||
def find_groups
|
||||
@groups = @project.groups.order('uname')#Group.all
|
||||
@groups = @groups.without(@project.owner_id) if @project.owner_type == 'Group'
|
||||
end
|
||||
|
||||
def authorize_collaborators
|
||||
|
|
|
@ -18,6 +18,7 @@ class Group < ActiveRecord::Base
|
|||
validate { errors.add(:uname, :taken) if User.where('uname LIKE ?', uname).present? }
|
||||
|
||||
scope :search_order, order("CHAR_LENGTH(uname) ASC")
|
||||
scope :without, lambda {|a| where("groups.id NOT IN (?)", a)}
|
||||
scope :search, lambda {|q| where("uname ILIKE ?", "%#{q.strip}%")}
|
||||
scope :opened, where('1=1')
|
||||
scope :by_owner, lambda {|owner| where(:owner_id => owner.id)}
|
||||
|
|
|
@ -48,6 +48,7 @@ class User < ActiveRecord::Base
|
|||
attr_accessor :login
|
||||
|
||||
scope :search_order, order("CHAR_LENGTH(uname) ASC")
|
||||
scope :without, lambda {|a| where("users.id NOT IN (?)", a)}
|
||||
scope :search, lambda {|q| where("uname ILIKE ?", "%#{q.strip}%")}
|
||||
scope :opened, where('1=1')
|
||||
scope :banned, where(:role => 'banned')
|
||||
|
|
11
db/schema.rb
11
db/schema.rb
|
@ -17,8 +17,8 @@ ActiveRecord::Schema.define(:version => 20120329182602) do
|
|||
t.integer "user_id", :null => false
|
||||
t.string "kind"
|
||||
t.text "data"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", :null => false
|
||||
t.datetime "updated_at", :null => false
|
||||
end
|
||||
|
||||
create_table "arches", :force => true do |t|
|
||||
|
@ -268,11 +268,11 @@ ActiveRecord::Schema.define(:version => 20120329182602) do
|
|||
t.text "description"
|
||||
t.string "ancestry"
|
||||
t.boolean "has_issues", :default => true
|
||||
t.boolean "has_wiki", :default => false
|
||||
t.string "srpm_file_name"
|
||||
t.string "srpm_content_type"
|
||||
t.integer "srpm_file_size"
|
||||
t.datetime "srpm_updated_at"
|
||||
t.boolean "has_wiki", :default => false
|
||||
t.string "default_branch", :default => "master"
|
||||
t.boolean "is_rpm", :default => true
|
||||
end
|
||||
|
@ -292,7 +292,6 @@ ActiveRecord::Schema.define(:version => 20120329182602) do
|
|||
end
|
||||
|
||||
add_index "register_requests", ["email"], :name => "index_register_requests_on_email", :unique => true, :case_sensitive => false
|
||||
add_index "register_requests", ["token"], :name => "index_register_requests_on_token", :unique => true, :case_sensitive => false
|
||||
|
||||
create_table "relations", :force => true do |t|
|
||||
t.integer "object_id"
|
||||
|
@ -351,16 +350,16 @@ ActiveRecord::Schema.define(:version => 20120329182602) do
|
|||
t.string "name"
|
||||
t.string "email", :default => "", :null => false
|
||||
t.string "encrypted_password", :limit => 128, :default => "", :null => false
|
||||
t.string "password_salt", :default => "", :null => false
|
||||
t.string "reset_password_token"
|
||||
t.datetime "reset_password_sent_at"
|
||||
t.datetime "remember_created_at"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.text "ssh_key"
|
||||
t.string "uname"
|
||||
t.string "role"
|
||||
t.string "language", :default => "en"
|
||||
t.integer "own_projects_count", :default => 0, :null => false
|
||||
t.datetime "reset_password_sent_at"
|
||||
t.text "professional_experience"
|
||||
t.string "site"
|
||||
t.string "company"
|
||||
|
|
Loading…
Reference in New Issue