Commit 81ee1fefaaef20386737fa2ff0ccf31e90dde8e6
1 parent
1bb5712e
Exists in
master
and in
22 other branches
ActionItem428: fixed some inconsitencies in the treatment of members
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1998 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
8 changed files
with
56 additions
and
16 deletions
Show diff stats
app/controllers/my_profile/profile_members_controller.rb
| ... | ... | @@ -13,6 +13,7 @@ class ProfileMembersController < MyProfileController |
| 13 | 13 | |
| 14 | 14 | def update_roles |
| 15 | 15 | @roles = params[:roles] ? Role.find(params[:roles]) : [] |
| 16 | + @roles = @roles.select{|r| r.has_kind?('Profile') } | |
| 16 | 17 | @person = Person.find(params[:person]) |
| 17 | 18 | if @person.define_roles(@roles, profile) |
| 18 | 19 | flash[:notice] = _('Roles successfuly updated') |
| ... | ... | @@ -35,7 +36,7 @@ class ProfileMembersController < MyProfileController |
| 35 | 36 | redirect_to :action => 'index' |
| 36 | 37 | else |
| 37 | 38 | @member = Person.find(params[:person]) |
| 38 | - @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } | |
| 39 | + @roles = Role.find(:all).select{ |r| r.has_kind?('Profile') } | |
| 39 | 40 | render :action => 'affiliate' |
| 40 | 41 | end |
| 41 | 42 | end | ... | ... |
app/models/enterprise.rb
| ... | ... | @@ -20,4 +20,20 @@ class Enterprise < Organization |
| 20 | 20 | e.products.each{ |p| p.enterprise_updated(e) } |
| 21 | 21 | end |
| 22 | 22 | |
| 23 | + def closed? | |
| 24 | + true | |
| 25 | + end | |
| 26 | + | |
| 27 | + def code | |
| 28 | + ("%06d" % id) + Digest::MD5.hexdigest(id.to_s)[0..5] | |
| 29 | + end | |
| 30 | + | |
| 31 | + def self.return_by_code(code) | |
| 32 | + id = code[0..5].to_i | |
| 33 | + md5 = code[6..11] | |
| 34 | + return unless md5 == Digest::MD5.hexdigest(id.to_s)[0..5] | |
| 35 | + | |
| 36 | + Enterprise.find(id) | |
| 37 | + end | |
| 38 | + | |
| 23 | 39 | end | ... | ... |
app/views/blocks/profile_info_actions/enterprise.rhtml
| 1 | 1 | <ul> |
| 2 | - <%if logged_in? && (! user.favorite_enterprises.include?(profile)) %> | |
| 3 | - <li><%= link_to content_tag('span', _('Add favorite enterprise')), { :profile => user.identifier, :controller => 'favorite_enterprises', :action => 'add', :id => profile.id }, :class => 'button with-text icon-add' %></li> | |
| 2 | + <%if logged_in? %> | |
| 3 | + <%if !user.favorite_enterprises.include?(profile) %> | |
| 4 | + <li><%= link_to content_tag('span', _('Add favorite enterprise')), { :profile => user.identifier, :controller => 'favorite_enterprises', :action => 'add', :id => profile.id }, :class => 'button with-text icon-add' %></li> | |
| 5 | + <% end %> | |
| 6 | + <% if profile.members.include?(user) %> | |
| 7 | + <li><%= link_to content_tag('span', _('Leave this enterprise')), { :profile => user.identifier, :controller => 'memberships', :action => 'leave', :id => profile.id }, :class => 'button with-text icon-delete' %></li> | |
| 8 | + <% else %> | |
| 9 | + <li><%= link_to content_tag('span', _('Join this enterprise')), { :profile => user.identifier, :controller => 'memberships', :action => 'join', :id => profile.id }, :class => 'button with-text icon-add' %></li> | |
| 10 | + <% end %> | |
| 4 | 11 | <% end %> |
| 5 | 12 | </ul> | ... | ... |
lib/tasks/populate.rake
| ... | ... | @@ -29,7 +29,7 @@ def create_roles |
| 29 | 29 | 'edit_environment_design', |
| 30 | 30 | 'manage_environment_categories', |
| 31 | 31 | 'manage_environment_roles', |
| 32 | - 'manage_environment_validators' | |
| 32 | + 'manage_environment_validators', | |
| 33 | 33 | ]) |
| 34 | 34 | Role.create!(:key => 'profile_admin', :name => N_('Profile Administrator'), :permissions => [ |
| 35 | 35 | 'edit_profile', | ... | ... |
script/anhetegua
| ... | ... | @@ -152,6 +152,7 @@ root = User.create!(:login => 'root', :email => 'root@noosfero.org', :password = |
| 152 | 152 | admin_role = Environment::Roles.admin |
| 153 | 153 | |
| 154 | 154 | RoleAssignment.create!(:accessor => root, :role => admin_role, :resource => Environment.default) |
| 155 | +RoleAssignment.create!(:accessor => root, :role => owner_role, :resource => Environment.default) | |
| 155 | 156 | |
| 156 | 157 | # Sample user and sample enterprise owned by him |
| 157 | 158 | ze = User.create!(:login => 'ze', :email => 'ze@localhost.localdomain', :password => 'test', :password_confirmation => 'test').person | ... | ... |
script/fbes_populate_helper.rb
| ... | ... | @@ -45,11 +45,13 @@ require File.dirname(__FILE__) + '/../config/environment' |
| 45 | 45 | end |
| 46 | 46 | |
| 47 | 47 | def new_ent(data, products, consumptions) |
| 48 | - count = 1 | |
| 49 | - while Enterprise.find_by_identifier(data[:identifier]) | |
| 50 | - data[:identifier] = data[:identifier] + "-#{count}" | |
| 48 | + count = 2 | |
| 49 | + ident = data[:identifier] | |
| 50 | + while Enterprise.find_by_identifier(ident) | |
| 51 | + ident = data[:identifier] + "-#{count}" | |
| 51 | 52 | count += 1 |
| 52 | 53 | end |
| 54 | + data[:identifier] = ident | |
| 53 | 55 | ent = Enterprise.create!({:environment => Environment.default}.merge(data)) |
| 54 | 56 | products.each do |p| |
| 55 | 57 | ent.products.create!(p) unless ent.products.find(:first, :conditions => p) | ... | ... |
test/functional/profile_members_controller_test.rb
| ... | ... | @@ -53,6 +53,7 @@ class ProfileMembersControllerTest < Test::Unit::TestCase |
| 53 | 53 | get 'change_role', :profile => 'test_enterprise' , :id => member |
| 54 | 54 | |
| 55 | 55 | assert_response :success |
| 56 | + assert_includes assigns(:roles), role | |
| 56 | 57 | assert_equal member, assigns('member') |
| 57 | 58 | assert_template 'change_role' |
| 58 | 59 | assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'roles[]'} |
| ... | ... | @@ -61,19 +62,20 @@ class ProfileMembersControllerTest < Test::Unit::TestCase |
| 61 | 62 | |
| 62 | 63 | should 'update roles' do |
| 63 | 64 | ent = Enterprise.create!(:identifier => 'test_enterprise', :name => 'test enterprise') |
| 64 | - role = Role.create!(:name => 'member_role', :permissions => ['edit_profile']) | |
| 65 | - orole = Role.create!(:name => 'owner_role', :permissions => ['edit_profile', 'destroy_profile']) | |
| 65 | + role1 = Role.create!(:name => 'member_role', :permissions => ['edit_profile']) | |
| 66 | + role2 = Role.create!(:name => 'owner_role', :permissions => ['edit_profile', 'destroy_profile']) | |
| 66 | 67 | |
| 67 | 68 | member = create_user('test_member').person |
| 68 | - member.add_role(role, ent) | |
| 69 | + member.add_role(role1, ent) | |
| 69 | 70 | user = create_user_with_permission('test_user', 'manage_memberships', ent) |
| 70 | 71 | login_as :test_user |
| 71 | 72 | |
| 72 | - post 'update_roles', :profile => 'test_enterprise', :roles => [orole.id], :person => member | |
| 73 | + post 'update_roles', :profile => 'test_enterprise', :roles => [role2.id], :person => member | |
| 73 | 74 | |
| 74 | 75 | assert_response :redirect |
| 75 | 76 | member.reload |
| 76 | - assert member.find_roles(ent).map(&:role).include?(orole) | |
| 77 | - assert !member.find_roles(ent).map(&:role).include?(role) | |
| 77 | + roles = member.find_roles(ent).map(&:role) | |
| 78 | + assert_includes roles, role2 | |
| 79 | + assert_not_includes roles, role1 | |
| 78 | 80 | end |
| 79 | 81 | end | ... | ... |
test/unit/enterprise_test.rb
| ... | ... | @@ -103,17 +103,19 @@ class EnterpriseTest < Test::Unit::TestCase |
| 103 | 103 | assert_not_includes result, ent2 |
| 104 | 104 | end |
| 105 | 105 | |
| 106 | - should 'allow to add new members' do | |
| 106 | + should 'not allow to add new members' do | |
| 107 | 107 | o = Enterprise.create!(:name => 'my test profile', :identifier => 'mytestprofile') |
| 108 | 108 | p = create_user('mytestuser').person |
| 109 | 109 | |
| 110 | 110 | o.add_member(p) |
| 111 | + o.reload | |
| 111 | 112 | |
| 112 | - assert o.members.include?(p), "Enterprise should add the new member" | |
| 113 | + assert_not_includes o.members, p | |
| 113 | 114 | end |
| 114 | - | |
| 115 | + | |
| 115 | 116 | should 'allow to remove members' do |
| 116 | 117 | c = Enterprise.create!(:name => 'my other test profile', :identifier => 'myothertestprofile') |
| 118 | + c.expects(:closed?).returns(false) | |
| 117 | 119 | p = create_user('myothertestuser').person |
| 118 | 120 | |
| 119 | 121 | c.add_member(p) |
| ... | ... | @@ -123,4 +125,13 @@ class EnterpriseTest < Test::Unit::TestCase |
| 123 | 125 | assert_not_includes c.members, p |
| 124 | 126 | end |
| 125 | 127 | |
| 128 | + should 'return coherent code' do | |
| 129 | + ent = Enterprise.create!(:name => 'my test profile', :identifier => 'mytestprofile') | |
| 130 | + ent2 = Enterprise.create!(:name => 'my test profile 2', :identifier => 'mytestprofile2') | |
| 131 | + | |
| 132 | + assert_equal ent, Enterprise.return_by_code(ent.code) | |
| 133 | + assert_nil Enterprise.return_by_code(ent.code.next) | |
| 134 | + end | |
| 135 | + | |
| 136 | + | |
| 126 | 137 | end | ... | ... |