def get_team_by_team_id(self, team_id): team = team_repo.get_team_by_team_id(team_id=team_id) if team is None: raise Tenants.DoesNotExist() user = user_repo.get_by_user_id(team.creater) team.creater = user.nick_name return team
def get_tenant_role_by_tenant_name(self, tenant_name): """获取一个团队中的所有角色和角色对应的权限信息""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() return role_repo.get_tenant_role_by_tenant_id(tenant_id=tenant.pk)
def change_tenant_role(self, user_id, tenant_name, role_id_list): """修改用户在团队中的角色""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() enterprise = enterprise_services.get_enterprise_by_enterprise_id(enterprise_id=tenant.enterprise_id) user_role = role_repo.update_user_role_in_tenant_by_user_id_tenant_id_role_id( user_id=user_id, tenant_id=tenant.pk, enterprise_id=enterprise.pk, role_id_list=role_id_list) return user_role
def get_user_perm_identitys_in_permtenant(self, user_id, tenant_name): """获取用户在一个团队的身份列表""" user = user_repo.get_by_user_id(user_id) try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() user_roles = user_kind_role_service.get_user_roles(kind_id=tenant.ID, kind="team", user=user) if tenant.creater == user_id: user_roles["roles"].append("owner") return user_roles
def user_is_exist_in_team(self, user_list, tenant_name): """判断一个用户是否存在于一个团队中""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() enterprise = enterprise_services.get_enterprise_by_enterprise_id(enterprise_id=tenant.enterprise_id) for user_id in user_list: obj = PermRelTenant.objects.filter(user_id=user_id, tenant_id=tenant.pk, enterprise_id=enterprise.pk) if obj: return obj[0].user_id return False
def get_all_team_role_id(self, tenant_name, allow_owner=False): """获取一个团队中的所有可选角色ID列表""" try: team_obj = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: team_obj = self.get_team_by_team_id(tenant_name) if team_obj is None: raise Tenants.DoesNotExist() filter = Q(is_default=True) if not allow_owner: filter &= ~Q(role_name="owner") default_role_id_list = TenantUserRole.objects.filter(filter).values_list("pk", flat=True) team_role_id_list = TenantUserRole.objects.filter(tenant_id=team_obj.pk, is_default=False).values_list("pk", flat=True) return list(default_role_id_list) + list(team_role_id_list)
def get_user_perm_role_id_in_permtenant(self, user_id, tenant_name): """获取一个用户在一个团队的角色ID列表""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() user_perms = team_repo.get_user_perms_in_permtenant(user_id=user_id, tenant_id=tenant.ID) if not user_perms: return [] role_id_list = [] for role_id in [perm.role_id for perm in user_perms]: if not role_id: continue role_id_list.append(role_id) return role_id_list
def get_tenant_roles(self, tenant_id, page=None, page_size=None): """获取一个团队中的所有角色和角色对应的权限信息""" tenant = team_repo.get_team_by_team_id(tenant_id) if tenant is None: raise Tenants.DoesNotExist() role_list = role_repo.get_tenant_role_by_tenant_id(tenant_id=tenant.pk, allow_owner=True) if page is not None and page_size is None: paginator = Paginator(role_list, page_size) try: role_list = paginator.page(page).object_list except PageNotAnInteger: page = 1 role_list = paginator.page(1).object_list except EmptyPage: page = paginator.num_pages role_list = paginator.page(paginator.num_pages).object_list return role_list
def get_user_perm_identitys_in_permtenant(self, user_id, tenant_name): """获取用户在一个团队的身份列表""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() user_perms = team_repo.get_user_perms_in_permtenant(user_id=user_id, tenant_id=tenant.ID) if not user_perms: return [] identitys = [perm.identity for perm in user_perms] identity_list = [] for identity in identitys: if not identity: continue identity_list.append(identity) return identity_list
def get_team_service_count_by_team_name(self, team_name): tenant = self.get_tenant_by_tenant_name(tenant_name=team_name) if tenant is None: raise Tenants.DoesNotExist() return TenantServiceInfo.objects.filter(tenant_id=tenant.tenant_id).count()