| 3762 | |
| 3763 | |
| 3764 | class UserReportCommand(EnterpriseCommand): |
| 3765 | def __init__(self): |
| 3766 | super(UserReportCommand, self).__init__() |
| 3767 | self.nodes = {} |
| 3768 | self.roles = {} |
| 3769 | self.teams = {} |
| 3770 | self.users = {} |
| 3771 | self.user_roles = {} |
| 3772 | self.user_teams = {} |
| 3773 | |
| 3774 | def get_parser(self): |
| 3775 | return user_report_parser |
| 3776 | |
| 3777 | def execute(self, params, **kwargs): |
| 3778 | self.nodes.clear() |
| 3779 | if 'nodes' in params.enterprise: |
| 3780 | for node in params.enterprise['nodes']: |
| 3781 | self.nodes[node['node_id']] = { |
| 3782 | 'parent_id': node.get('parent_id') or 0, |
| 3783 | 'name': node['data'].get('displayname') or '' |
| 3784 | } |
| 3785 | |
| 3786 | self.roles.clear() |
| 3787 | if 'roles' in params.enterprise: |
| 3788 | for role in params.enterprise['roles']: |
| 3789 | if 'data' in role: |
| 3790 | self.roles[role['role_id']] = role['data'].get('displayname') or '' |
| 3791 | |
| 3792 | self.teams.clear() |
| 3793 | if 'teams' in params.enterprise: |
| 3794 | for team in params.enterprise['teams']: |
| 3795 | self.teams[team['team_uid']] = team['name'] |
| 3796 | |
| 3797 | self.users.clear() |
| 3798 | kw_euid = 'enterprise_user_id' |
| 3799 | ei_cmd = EnterpriseInfoCommand() |
| 3800 | cmd_output = ei_cmd.execute(params, users=True, columns='roles,teams', format='json', quiet=True) |
| 3801 | enterprise_users = json.loads(cmd_output) |
| 3802 | |
| 3803 | def get_user_info(user): |
| 3804 | u = { |
| 3805 | 'enterprise_user_id': user.get('enterprise_user_id'), |
| 3806 | 'node_id': user.get('node_id'), |
| 3807 | 'username': user.get('username'), |
| 3808 | 'name': user.get('data', {}).get('displayname') or '', |
| 3809 | 'status': user.get('status'), |
| 3810 | 'lock': user.get('lock') |
| 3811 | } |
| 3812 | if 'account_share_expiration' in user: |
| 3813 | u['account_share_expiration'] = user['account_share_expiration'] |
| 3814 | return u |
| 3815 | |
| 3816 | self.user_teams = {u.get('user_id'): u.get('teams') for u in enterprise_users} |
| 3817 | self.user_roles = {u.get('user_id'): u.get('roles') for u in enterprise_users} |
| 3818 | euids = list(self.user_roles.keys()) |
| 3819 | users_cache_filtered = {u.get(kw_euid): u for u in params.enterprise.get('users', []) if u.get(kw_euid) in euids} |
| 3820 | self.users = {k: get_user_info(u) for k, u in users_cache_filtered.items()} |
| 3821 |
no outgoing calls
no test coverage detected