Changeset 720
- Timestamp:
- 11/07/07 16:26:43 (1 year ago)
- Files:
-
- trunk/app/models/protected_data.rb (modified) (2 diffs)
- trunk/test/functional/data_permission_controller_test.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/app/models/protected_data.rb
r710 r720 76 76 return false if permissions.empty? and other_permissions.empty? 77 77 78 data_permissions = self.data_permissions.find(permissions.keys) 79 # Sort permissions so that users editing permissions are first 80 data_permissions.sort! { |a, b| 81 users_editing_permission(a) ? (users_editing_permission(b) ? 0 : -1) : (users_editing_permission(b) ? 1 : 0) 82 } 83 78 84 DataPermission.transaction do 79 permissions.each_pair { |key, value| 80 permission = self.data_permissions.find(key) 85 data_permissions.each { |permission| 81 86 original_attributes = permission.attributes 82 permission.attributes = value87 permission.attributes = permissions[permission.id] or permissions[permission.id.to_s] 83 88 permission.destroy and next if permission.gives_no_permissions? 84 89 next if permission.attributes == original_attributes … … 490 495 end 491 496 497 # Method: users_editing_permission 498 # ================================ 499 # Returns true if the given permission is user's editing permission 500 # 501 # Parameter: 502 # ---------- 503 # permission - A <DataPermission> to check 504 # 505 def users_editing_permission(permission) 506 return (UserAccount.current_user.user_groups.include?(permission.user_group) and permission.group_edit) 507 end 492 508 end trunk/test/functional/data_permission_controller_test.rb
r718 r720 177 177 :datatype => authorized_to_edit.class.to_s, 178 178 :object => {'other_read' => '1', 'other_edit' => '1'}, 179 :permission => { permissions => {'group_read' => '1', 'group_edit' => '0'} })179 :permission => { permissions.id => {'group_read' => '1', 'group_edit' => '0'} }) 180 180 assert_response :redirect 181 181 assert_redirected_to @ref_url … … 183 183 assert_nil assigns(:title) 184 184 assert_not_equal authorized_to_edit.attributes, assigns(:object).attributes 185 authorized_to_edit = Form.find authorized_to_edit.id185 authorized_to_edit.reload 186 186 # FIXME: This fails even though the attribute hashes seem to be identical !!! 187 187 # assert_equal authorized_to_edit.attributes, assigns(:object).attributes