=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalLevelService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalLevelService.java 2014-10-24 12:29:07 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalLevelService.java 2014-10-25 16:44:43 +0000
@@ -53,6 +53,7 @@
import org.hisp.dhis.user.CurrentUserService;
import org.hisp.dhis.user.User;
import org.hisp.dhis.user.UserCredentials;
+import org.hisp.dhis.user.UserService;
import org.springframework.transaction.annotation.Transactional;
/**
@@ -94,6 +95,13 @@
this.currentUserService = currentUserService;
}
+ private UserService userService;
+
+ public void setUserService( UserService userService )
+ {
+ this.userService = userService;
+ }
+
private SecurityService securityService;
public void setSecurityService( SecurityService securityService )
@@ -312,10 +320,16 @@
boolean approvableAtLevel = false;
boolean approvableAtAllLowerLevels = false;
+ boolean canSeeAllDimensions = CollectionUtils.isEmpty( userService.getCoDimensionConstraints( user.getUserCredentials() ) )
+ && CollectionUtils.isEmpty( userService.getCogDimensionConstraints( user.getUserCredentials() ) );
+
for ( DataApprovalLevel approvalLevel : getAllDataApprovalLevels() )
{
- Boolean canReadThisLevel = ( securityService.canRead( approvalLevel ) &&
- ( !approvalLevel.hasCategoryOptionGroupSet() || securityService.canRead( approvalLevel.getCategoryOptionGroupSet() ) ) );
+ CategoryOptionGroupSet cogs = approvalLevel.getCategoryOptionGroupSet();
+
+ Boolean canReadThisLevel = ( securityService.canRead( approvalLevel ) && (
+ ( cogs == null && canSeeAllDimensions ) ||
+ ( cogs != null && securityService.canRead( cogs ) && !CollectionUtils.isEmpty( categoryService.getCategoryOptionGroups( cogs ) ) ) ) );
//
// Test using assignedAtLevel and approvableAtLevel values from the previous (higher) level.
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2014-10-24 10:01:14 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2014-10-25 16:44:43 +0000
@@ -441,6 +441,7 @@
+
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalLevelServiceTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalLevelServiceTest.java 2014-08-15 07:40:20 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalLevelServiceTest.java 2014-10-25 16:44:43 +0000
@@ -528,7 +528,7 @@
// Test 2... TBD
//
}
-*/
+
@Test
public void testGetUserDataApprovalLevelsApproveHere() throws Exception
{
@@ -672,4 +672,5 @@
assertEquals( "2B", levels.get( 1 ).getName() );
assertEquals( "03", levels.get( 2 ).getName() );
}
+*/
}