def create_rebuild_user_tree_task_by_asset_perm(asset_perm: AssetPermission): user_ids = set() user_ids.update( UserGroup.objects.filter( assetpermissions=asset_perm, users__id__isnull=False ).distinct().values_list('users__id', flat=True) ) user_ids.update( User.objects.filter(assetpermissions=asset_perm).distinct().values_list('id', flat=True) ) create_rebuild_user_tree_task(user_ids)
def on_asset_permission_users_changed(instance, action, reverse, pk_set, model, **kwargs): if reverse: raise M2MReverseNotAllowed if need_rebuild_mapping_node(action): create_rebuild_user_tree_task(pk_set) if action != POST_ADD: return logger.debug("Asset permission users change signal received") users = model.objects.filter(pk__in=pk_set) system_users = instance.system_users.all() # TODO 待优化 for system_user in system_users: if system_user.username_same_with_user: system_user.users.add(*tuple(users))
def on_asset_permission_user_groups_changed(instance, action, pk_set, model, reverse, **kwargs): if reverse: raise M2MReverseNotAllowed if need_rebuild_mapping_node(action): user_ids = User.objects.filter(groups__id__in=pk_set).distinct().values_list('id', flat=True) create_rebuild_user_tree_task(user_ids) if action != POST_ADD: return logger.debug("Asset permission user groups change signal received") groups = model.objects.filter(pk__in=pk_set) system_users = instance.system_users.all() # TODO 待优化 for system_user in system_users: if system_user.username_same_with_user: system_user.groups.add(*tuple(groups))
def handle_rebuild_user_tree(instance, action, reverse, pk_set, **kwargs): if action.startswith('post'): if reverse: create_rebuild_user_tree_task(pk_set) else: create_rebuild_user_tree_task([instance.id])