=== 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 2015-10-24 12:30:46 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalLevelService.java 2015-10-25 22:58:24 +0000 @@ -279,27 +279,19 @@ for ( DataApprovalLevel approvalLevel : approvalLevels ) { - boolean canAccessThisLevel = false; - if ( !addLevel && approvalLevel.getOrgUnitLevel() >= lowestNumberOrgUnitLevel ) { CategoryOptionGroupSet cogs = approvalLevel.getCategoryOptionGroupSet(); - canAccessThisLevel = securityService.canRead( approvalLevel ) && + addLevel = securityService.canRead( approvalLevel ) && cogs == null ? canSeeAllDimensions : ( securityService.canRead( cogs ) && !CollectionUtils.isEmpty( categoryService.getCategoryOptionGroups( cogs ) ) ); - - addLevel = canAccessThisLevel && ( mayApprove || approvalLevel.getOrgUnitLevel() > lowestNumberOrgUnitLevel ); } if ( addLevel ) { userDataApprovalLevels.add( approvalLevel ); } - else - { - addLevel = canAccessThisLevel; - } } return userDataApprovalLevels; === 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 2015-10-24 12:30:46 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalLevelServiceTest.java 2015-10-25 22:58:24 +0000 @@ -580,7 +580,7 @@ List levels = dataApprovalLevelService.getUserDataApprovalLevels(); - assertEquals( "2A 2B 03 3A 3B 04 4A 4B", levelNames( levels ) ); + assertEquals( "02 2A 2B 03 3A 3B 04 4A 4B", levelNames( levels ) ); } @Test @@ -640,7 +640,7 @@ List levels = dataApprovalLevelService.getUserDataApprovalLevels(); - assertEquals( "2A 2B 03 3A 3B 04 4A 4B", levelNames( levels ) ); + assertEquals( "02 2A 2B 03 3A 3B 04 4A 4B", levelNames( levels ) ); } @Test === modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalServiceCategoryOptionGroupTest.java' --- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalServiceCategoryOptionGroupTest.java 2015-10-24 12:30:46 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalServiceCategoryOptionGroupTest.java 2015-10-25 22:58:24 +0000 @@ -751,17 +751,17 @@ assertEquals( "GlobalLevel1, CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( globalConsultant ) ); assertEquals( "GlobalLevel1, CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( globalUser ) ); assertEquals( "GlobalLevel1, CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( globalApproveOnly ) ); - assertEquals( "CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( globalAcceptOnly ) ); + assertEquals( "GlobalLevel1, CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( globalAcceptOnly ) ); assertEquals( "", getUserLevels( globalReadEverything ) ); assertEquals( "CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( brazilInteragencyUser ) ); assertEquals( "CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( chinaInteragencyUser ) ); assertEquals( "CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( chinaInteragencyApproveOnly ) ); - assertEquals( "AgencyLevel3, PartnerLevel4", getUserLevels( chinalInteragencyAcceptOnly ) ); + assertEquals( "CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( chinalInteragencyAcceptOnly ) ); assertEquals( "CountryLevel2, AgencyLevel3, PartnerLevel4", getUserLevels( indiaInteragencyUser ) ); assertEquals( "AgencyLevel3, PartnerLevel4", getUserLevels( brazilAgencyAUser ) ); assertEquals( "AgencyLevel3, PartnerLevel4", getUserLevels( chinaAgencyAUser ) ); assertEquals( "AgencyLevel3, PartnerLevel4", getUserLevels( chinaAgencyAApproveOnly ) ); - assertEquals( "PartnerLevel4", getUserLevels( chinaAgencyAAcceptOnly ) ); + assertEquals( "AgencyLevel3, PartnerLevel4", getUserLevels( chinaAgencyAAcceptOnly ) ); assertEquals( "AgencyLevel3, PartnerLevel4", getUserLevels( chinaAgencyBUser ) ); assertEquals( "AgencyLevel3, PartnerLevel4", getUserLevels( indiaAgencyAUser ) ); assertEquals( "PartnerLevel4", getUserLevels( brazilPartner1User ) );