def get_and_save_migrate_status(self, user, restore_id): migrate_record = migrate_repo.get_by_restore_id(restore_id) if not migrate_record: return 404, "无此记录", None if migrate_record.status == "starting": data = region_api.get_apps_migrate_status(migrate_record.migrate_region, migrate_record.migrate_team, migrate_record.backup_id, restore_id) bean = data["bean"] logger.debug('===========>{0}'.format(bean)) status = bean["status"] service_change = bean["service_change"] logger.debug("service change : {0}".format(service_change)) metadata = bean["metadata"] migrate_team = team_repo.get_tenant_by_tenant_name(migrate_record.migrate_team) if status == "success": with transaction.atomic(): try: self.save_data(migrate_team, migrate_record.migrate_region, user, service_change, json.loads(metadata), migrate_record.group_id) except Exception as e: migrate_record.status = "failed" migrate_record.save() raise e if migrate_record.migrate_type == "recover": # 如果为恢复操作,将原有备份和迁移的记录的组信息修改 backup_record_repo.get_record_by_group_id(migrate_record.original_group_id).update( group_id=migrate_record.group_id) self.update_migrate_original_group_id(migrate_record.original_group_id, migrate_record.group_id) migrate_record.status = status migrate_record.save() return 200, "success", migrate_record
def team_user_is_exist_by_role_id_tenant_name(self, role_id, tenant_name): """判断团队中一个角色是否有绑定的人""" tenant = team_repo.get_tenant_by_tenant_name(tenant_name=tenant_name) if not tenant: raise Tenants.DoesNotExist return PermRelTenant.objects.filter(tenant_id=tenant.ID, role_id=role_id)
def get_region_by_tenant_name(self, tenant_name): tenant = team_repo.get_tenant_by_tenant_name(tenant_name=tenant_name, exception=True) regions = TenantRegionInfo.objects.filter(tenant_id=tenant.tenant_id) if regions: return regions return None
def send_user_message_to_tenantadmin(self, admins, team_name, nick_name): tenant = team_repo.get_tenant_by_tenant_name(tenant_name=team_name) logger.debug('---------admin---------->{0}'.format(admins)) for admin in admins: message_id = make_uuid() content = '{0}用户申请加入{1}团队'.format(nick_name, tenant.tenant_alias) UserMessage.objects.create( message_id=message_id, receiver_id=admin.user_id, content=content, msg_type="warn", title="团队加入信息")
def send_user_message_for_apply_info(self, user_id, team_name, info): tenant = team_repo.get_tenant_by_tenant_name(tenant_name=team_name) message_id = make_uuid() content = '{0}团队{1}您加入该团队'.format(tenant.tenant_alias, info) UserMessage.objects.create(message_id=message_id, receiver_id=user_id, content=content, msg_type="warn", title="用户加入团队信息")
def team_role_is_exist_by_role_name_team_id_2(self, tenant_name, role_name): """判断一个角色在一个团队中是否存在""" tenant = team_repo.get_tenant_by_tenant_name(tenant_name=tenant_name) if not tenant: raise Tenants.DoesNotExist role_obj = TenantUserRole.objects.filter(tenant_id=tenant.pk, role_name=role_name) return role_obj
def get(self, request, team_name, *args, **kwargs): page = int(request.GET.get("page", 1)) page_size = int(request.GET.get("page_size", 10)) query = request.GET.get("query") tenant = team_repo.get_tenant_by_tenant_name(team_name) if not tenant: result = general_message(404, "not found", "团队不存在") return Response(data=result, status=404) enterprise = enterprise_repo.get_enterprise_by_enterprise_id(tenant.enterprise_id) user_list = team_services.get_not_join_users(enterprise, tenant, query) total = len(user_list) data = user_list[(page - 1) * page_size:page * page_size] result = general_message(200, None, None, list=data, page=page, page_size=page_size, total=total) return Response(data=result, status=200)
def get_service_group_list(self, team_name, region_name): team = team_repo.get_tenant_by_tenant_name(tenant_name=team_name, exception=True) service_groups = ServiceGroup.objects.filter(tenant_id=team.tenant_id, region_name=region_name) group_list = list() if service_groups: for service_group in service_groups: group_info = dict() group_info["group_id"] = service_group.ID group_info["group_name"] = service_group.group_name g_s_l = ServiceGroupRelation.objects.filter( group_id=service_group.ID, region_name=region_name) gslist = list() for g_s in g_s_l: g_n_l = TenantServiceInfo.objects.filter( service_id=g_s.service_id, service_region=region_name) if g_n_l: g_n = g_n_l[0] service_info = dict() service_info["service_id"] = g_s.service_id service_info["service_cname"] = g_n.service_cname service_info["service_alias"] = g_n.service_alias gslist.append(service_info) group_info["service_list"] = gslist group_list.append(group_info) no_services = self.get_no_grop_service_by_team_id( team_id=team.tenant_id, region_name=region_name) no_service_list = [] for no_service in no_services: service = TenantServiceInfo.objects.filter( service_id=no_service.get("service_id"))[0] no_service_list.append({ "service_id": service.service_id, "service_cname": service.service_cname, "service_alias": service.service_alias }) group_list.append({ "group_id": -1, "group_name": "未分组", "service_list": no_service_list }) return group_list else: return []
def get_no_group_list(self, team_name, region_name): team = team_repo.get_tenant_by_tenant_name(tenant_name=team_name, exception=True) group_list = list() no_services = self.get_no_grop_service_by_team_id( team_id=team.tenant_id, region_name=region_name) if no_services: no_service_list = [] for no_service in no_services: service = TenantServiceInfo.objects.filter( service_id=no_service.get("service_id"))[0] no_service_list.append({ "service_id": service.service_id, "service_cname": service.service_cname, "service_alias": service.service_alias }) group_list.append({ "group_id": -1, "group_name": "未分组", "service_list": no_service_list }) return group_list else: return []
def get_user_detail(self, tenant_name, nick_name): u = user_repo.get_user_by_username(user_name=nick_name) tenant = team_repo.get_tenant_by_tenant_name(tenant_name=tenant_name) perms = team_repo.get_tenant_perms(tenant_id=tenant.ID, user_id=u.user_id) return u, perms
def update_tenant_alias(self, tenant_name, new_team_alias): tenant = team_repo.get_tenant_by_tenant_name(tenant_name=tenant_name, exception=True) tenant.tenant_alias = new_team_alias tenant.save() return tenant
def get_tenant_users_by_tenant_name(self, tenant_name): tenant = team_repo.get_tenant_by_tenant_name(tenant_name=tenant_name) user_list = team_repo.get_tenant_users_by_tenant_ID(tenant_ID=tenant.ID) return user_list
def get_tenant_by_tenant_name(self, tenant_name, exception=True): return team_repo.get_tenant_by_tenant_name(tenant_name=tenant_name, exception=exception)