Commit 81ee1fefaaef20386737fa2ff0ccf31e90dde8e6
1 parent
1bb5712e
Exists in
master
and in
28 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 | ... | ... |