dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #35067
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18001: Web API, users, update user groups on PUT
------------------------------------------------------------
revno: 18001
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2015-01-15 10:59:03 +0100
message:
Web API, users, update user groups on PUT
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/user/UserController.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java 2015-01-02 11:34:18 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java 2015-01-15 09:59:03 +0000
@@ -59,6 +59,8 @@
void addUserToGroups( User user, Collection<String> uids );
void removeUserFromGroups( User user, Collection<String> uids );
+
+ void updateUserGroups( User user, Collection<String> uids );
Collection<UserGroup> getAllUserGroups();
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java 2015-01-02 11:34:18 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java 2015-01-15 09:59:03 +0000
@@ -29,6 +29,7 @@
*/
import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
import org.hisp.dhis.acl.AclService;
@@ -133,8 +134,7 @@
if ( canAddOrRemoveMember( uid ) )
{
UserGroup userGroup = getUserGroup( uid );
- user.getGroups().add( userGroup );
- userGroup.getMembers().add( user );
+ userGroup.addUser( user );
userGroupStore.updateNoAcl( userGroup );
}
}
@@ -148,14 +148,41 @@
if ( canAddOrRemoveMember( uid ) )
{
UserGroup userGroup = getUserGroup( uid );
- user.getGroups().remove( userGroup );
- userGroup.getMembers().remove( user );
+ userGroup.removeUser( user );
userGroupStore.updateNoAcl( userGroup );
}
}
}
@Override
+ public void updateUserGroups( User user, Collection<String> uids )
+ {
+ Collection<UserGroup> updates = getUserGroupsByUid( uids );
+
+ for ( UserGroup userGroup : new HashSet<>( user.getGroups() ) )
+ {
+ if ( !updates.contains( userGroup ) && canAddOrRemoveMember( userGroup.getUid() ) )
+ {
+ userGroup.removeUser( user );
+ }
+ }
+
+ for ( UserGroup userGroup : updates )
+ {
+ if ( canAddOrRemoveMember( userGroup.getUid() ) )
+ {
+ userGroup.addUser( user );
+ userGroupStore.updateNoAcl( userGroup );
+ }
+ }
+ }
+
+ public Collection<UserGroup> getUserGroupsByUid( Collection<String> uids )
+ {
+ return userGroupStore.getByUid( uids );
+ }
+
+ @Override
public List<UserGroup> getUserGroupByName( String name )
{
return userGroupStore.getAllEqName( name );
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/user/UserController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/user/UserController.java 2015-01-12 18:53:15 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/user/UserController.java 2015-01-15 09:59:03 +0000
@@ -363,6 +363,13 @@
ImportTypeSummary summary = importService.importObject( currentUserService.getCurrentUser().getUid(), parsed, ImportStrategy.UPDATE );
+ if ( summary.isStatus( ImportStatus.SUCCESS ) && summary.getImportCount().getUpdated() == 1 )
+ {
+ User user = userService.getUser( pvUid );
+
+ userGroupService.updateUserGroups( user, IdentifiableObjectUtils.getUids( parsed.getGroups() ));
+ }
+
renderService.toXml( response.getOutputStream(), summary );
}
@@ -395,6 +402,13 @@
ImportTypeSummary summary = importService.importObject( currentUserService.getCurrentUser().getUid(), parsed, ImportStrategy.UPDATE );
+ if ( summary.isStatus( ImportStatus.SUCCESS ) && summary.getImportCount().getUpdated() == 1 )
+ {
+ User user = userService.getUser( pvUid );
+
+ userGroupService.updateUserGroups( user, IdentifiableObjectUtils.getUids( parsed.getGroups() ));
+ }
+
renderService.toJson( response.getOutputStream(), summary );
}