diff --git a/controller/Users.py b/controller/Users.py index 1d6ecf2..ee71c06 100644 --- a/controller/Users.py +++ b/controller/Users.py @@ -548,6 +548,17 @@ class Users( object ): """ return sum( self.__database.select_one( tuple, user.sql_calculate_storage() ), 0 ) + def calculate_group_storage( self, user ): + """ + Calculate total storage utilization for all groups that the given user is a member of. + + @type user: User + @param user: user for which to calculate storage utilization + @rtype: int + @return: total bytes used for group storage + """ + return self.__database.select_one( int, user.sql_calculate_group_storage() ) + def update_storage( self, user_id, commit = True ): """ Calculate and record total storage utilization for the given user. @@ -564,6 +575,7 @@ class Users( object ): if user: user.storage_bytes = self.calculate_storage( user ) self.__database.save( user, commit ) + user.group_storage_bytes = self.calculate_group_storage( user ) return user diff --git a/controller/test/Test_controller.py b/controller/test/Test_controller.py index 013a0ac..ea8507b 100644 --- a/controller/test/Test_controller.py +++ b/controller/test/Test_controller.py @@ -119,6 +119,12 @@ class Test_controller( object ): User.sql_calculate_storage = lambda self: \ lambda database: sql_calculate_storage( self, database ) + def sql_calculate_group_storage( self, database ): + return 0 + + User.sql_calculate_group_storage = lambda self: \ + lambda database: sql_calculate_group_storage( self, database ) + def sql_has_access( self, notebook_id, read_write, owner, database ): for ( user_id, notebook_infos ) in database.user_notebook.items(): for notebook_info in notebook_infos: diff --git a/controller/test/Test_users.py b/controller/test/Test_users.py index fa0b9eb..529b37c 100644 --- a/controller/test/Test_users.py +++ b/controller/test/Test_users.py @@ -679,6 +679,7 @@ class Test_users( Test_controller ): user = self.database.load( User, self.user.object_id ) assert user.storage_bytes == expected_size + assert user.group_storage_bytes == 0 assert user.revision > previous_revision def test_update_storage_with_unknown_user_id( self ): @@ -690,6 +691,7 @@ class Test_users( Test_controller ): user = self.database.load( User, self.user.object_id ) assert self.user.storage_bytes == 0 + assert self.user.group_storage_bytes == 0 assert self.user.revision == original_revision def test_check_access( self ):