Changeset 720

Show
Ignore:
Timestamp:
11/07/07 16:26:43 (1 year ago)
Author:
markku
Message:

Closes #489

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/app/models/protected_data.rb

    r710 r720  
    7676    return false if permissions.empty? and other_permissions.empty? 
    7777 
     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 
    7884    DataPermission.transaction do 
    79       permissions.each_pair { |key, value| 
    80         permission = self.data_permissions.find(key) 
     85      data_permissions.each { |permission| 
    8186        original_attributes = permission.attributes 
    82         permission.attributes = value 
     87        permission.attributes = permissions[permission.id] or permissions[permission.id.to_s] 
    8388        permission.destroy and next if permission.gives_no_permissions? 
    8489        next if permission.attributes == original_attributes 
     
    490495  end 
    491496 
     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 
    492508end 
  • trunk/test/functional/data_permission_controller_test.rb

    r718 r720  
    177177         :datatype => authorized_to_edit.class.to_s, 
    178178         :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'} }) 
    180180    assert_response :redirect 
    181181    assert_redirected_to @ref_url 
     
    183183    assert_nil assigns(:title) 
    184184    assert_not_equal authorized_to_edit.attributes, assigns(:object).attributes 
    185     authorized_to_edit = Form.find authorized_to_edit.i
     185    authorized_to_edit.reloa
    186186# FIXME: This fails even though the attribute hashes seem to be identical !!! 
    187187#    assert_equal authorized_to_edit.attributes, assigns(:object).attributes 

© 2004-2007 Norfello Oy All Rights Reserved