def _move_node_to_node(node, parent_node): # pylint: disable=unused-argument ''' 更新下属所有子孙节点及其成员 ''' nodes = list(node.downstream) update_nodes_cache.delay([node.node_uid for node in nodes]) user_uids = [item['user__username'] for item in \ node.member_cls.valid_objects.filter(owner__in=nodes).values('user__username')] update_users_cache.delay(user_uids)
def update(self, request, *args, **kwargs): # pylint: disable=unused-argument user = self.get_object() node_uids = request.data.get('node_uids', []) subject = request.data.get('subject', []) group_uids = [] dept_uids = [] for node_uid in node_uids: if node_uid.startswith(Group.NODE_PREFIX): group_uids.append(node_uid.replace(Group.NODE_PREFIX, '', 1)) elif node_uid.startswith(Dept.NODE_PREFIX): dept_uids.append(node_uid.replace(Dept.NODE_PREFIX, '', 1)) with transaction.atomic(): update_user_nodes( user, nodes=[], uids=group_uids, node_type='group', action_subject=subject, ) update_user_nodes(user, nodes=[], uids=dept_uids, node_type='dept', action_subject=subject) # 可重复读事务提交后,更新缓存数据至最新版本 transaction.on_commit( lambda: update_users_cache.delay([user.username])) return self.get(request)
def add_user_to_depts(self, user, depts): ''' 更新用户缓存 ''' update_users_cache.delay([user.username])
def add_users_to_dept(self, users, dept): ''' 更新用户缓存 ''' update_users_cache.delay([user.username for user in users])
def delete_users_from_group(self, users, group): ''' 更新用户缓存 ''' update_users_cache.delay([user.username for user in users])
def delete_user_from_groups(self, user, groups): ''' 更新用户缓存 ''' update_users_cache.delay([user.username])
def add_user_to_groups(self, user, groups): ''' 更新用户缓存 ''' update_users_cache.delay([user.username])
def add_users_to_group(self, users, group): ''' 更新用户缓存 ''' update_users_cache.delay([user.username for user in users])
def delete_user_from_depts(self, user, depts): ''' 更新用户缓存 ''' update_users_cache.delay([user.username])
def delete_users_from_dept(self, users, dept): ''' 更新用户缓存 ''' update_users_cache.delay([user.username for user in users])