def get(self, request, *args, **kwargs): center_id = str_to_int_or_default(request.GET.get('center_id', 0), 0) groups = None images = None try: c_manager = CenterManager() centers = c_manager.get_center_queryset() if center_id == 0: if len(centers) > 0: center_id = centers.first().id if center_id > 0: images = ImageManager().get_image_queryset_by_center( center_id).filter(tag=Image.TAG_BASE) groups = c_manager.get_user_group_queryset_by_center( center_id, user=request.user) except (ComputeError, ImageError) as e: return render(request, 'error.html', {'errors': ['查询分中心列表时错误', str(e)]}) context = {} context['center_id'] = center_id if center_id > 0 else None context['centers'] = centers context['groups'] = groups context['image_tags'] = Image.CHOICES_TAG context['images'] = images context['flavors'] = FlavorManager().get_user_flaver_queryset( user=request.user) return render(request, 'vms_create.html', context=context)
def get(self, request, *args, **kwargs): center_id = str_to_int_or_default(request.GET.get('center', 0), 0) group_id = str_to_int_or_default(request.GET.get('group', 0), 0) host_id = str_to_int_or_default(request.GET.get('host', 0), 0) user_id = str_to_int_or_default(request.GET.get('user', 0), 0) search = request.GET.get('search', '') # 超级用户可以有用户下拉框选项 auth = request.user if auth.is_superuser: users = User.objects.all() else: # 普通用户只能查看自己的虚拟机,无用户下拉框选项 users = None user_id = auth.id v_manager = VmManager() try: queryset = v_manager.filter_vms_queryset( center_id=center_id, group_id=group_id, host_id=host_id, search=search, user_id=user_id, all_no_filters=auth.is_superuser) except VmError as e: return render(request, 'error.html', {'errors': ['查询虚拟机时错误', str(e)]}) queryset = queryset.prefetch_related('vdisk_set') # 反向预查询硬盘(避免多次访问数据库) try: c_manager = CenterManager() g_manager = GroupManager() centers = c_manager.get_center_queryset() if center_id > 0: groups = c_manager.get_group_queryset_by_center(center_id) else: groups = g_manager.get_group_queryset() if group_id > 0: hosts = g_manager.get_all_host_queryset_by_group(group_id) else: hosts = None except ComputeError as e: return render(request, 'error.html', {'errors': ['查询虚拟机时错误', str(e)]}) context = { 'center_id': center_id if center_id > 0 else None, 'centers': centers, 'groups': groups, 'group_id': group_id if group_id > 0 else None, 'hosts': hosts, 'host_id': host_id if host_id > 0 else None, 'search': search, 'users': users, 'user_id': user_id } context = self.get_vms_list_context(request, queryset, context) return render(request, 'vms_list.html', context=context)
def get(self, request, *args, **kwargs): center_id = str_to_int_or_default(request.GET.get('center', 0), 0) group_id = str_to_int_or_default(request.GET.get('group', 0), 0) quota_id = str_to_int_or_default(request.GET.get('quota', 0), 0) user_id = str_to_int_or_default(request.GET.get('user', 0), 0) search = request.GET.get('search', '') # 超级用户可以有用户下拉框选项 auth = request.user if auth.is_superuser: users = User.objects.all() else: # 普通用户只能查看自己的虚拟机,无用户下拉框选项 users = None user_id = auth.id manager = VdiskManager() try: queryset = manager.filter_vdisk_queryset( center_id=center_id, group_id=group_id, quota_id=quota_id, search=search, user_id=user_id, all_no_filters=auth.is_superuser) except VdiskError as e: return render(request, 'error.html', {'errors': ['查询云硬盘时错误', str(e)]}) try: c_manager = CenterManager() centers = c_manager.get_center_queryset() if center_id > 0: groups = c_manager.get_group_queryset_by_center(center_id) else: groups = GroupManager().get_group_queryset() except ComputeError as e: return render(request, 'error.html', {'errors': ['查询机组时错误', str(e)]}) if group_id > 0: quotas = manager.get_quota_queryset_by_group(group_id) else: quotas = None context = {} context['center_id'] = center_id if center_id > 0 else None context['centers'] = centers context['groups'] = groups context['group_id'] = group_id if group_id > 0 else None context['quotas'] = quotas context['quota_id'] = quota_id if quota_id > 0 else None context['search'] = search context['users'] = users context['user_id'] = user_id context = self.get_disks_list_context(request, queryset, context) return render(request, 'vdisk_list.html', context=context)
def get(self, request, *args, **kwargs): center_id = str_to_int_or_default(request.GET.get('center', 0), 0) group_id = str_to_int_or_default(request.GET.get('group', 0), 0) host_id = str_to_int_or_default(request.GET.get('host', 0), 0) type_id = str_to_int_or_default(request.GET.get('type', 0), 0) search = request.GET.get('search', '') user = request.user c_manager = CenterManager() g_manager = GroupManager() p_manager = PCIDeviceManager() p_manager._group_manager = g_manager try: queryset = p_manager.filter_pci_queryset(center_id=center_id, group_id=group_id, host_id=host_id, search=search, type_id=type_id, user=user, all_no_filters=True) except DeviceError as e: return render(request, 'error.html', {'errors': ['查询PCI设备时错误', str(e)]}) try: centers = c_manager.get_center_queryset() if center_id > 0: groups = c_manager.get_user_group_queryset_by_center( center_or_id=center_id, user=user) else: groups = c_manager.get_user_group_queryset(user=user) if group_id > 0: hosts = g_manager.get_all_host_queryset_by_group(group_id) else: hosts = None except ComputeError as e: return render(request, 'error.html', {'errors': ['查询PCI设备时错误', str(e)]}) context = { 'center_id': center_id if center_id > 0 else None, 'centers': centers, 'groups': groups, 'group_id': group_id if group_id > 0 else None, 'hosts': hosts, 'host_id': host_id if host_id > 0 else None, 'search': search, 'types': PCIDevice.CHOICES_TYPE, 'type_id': type_id } context = self.get_vms_list_context(request, queryset, context) return render(request, 'pci_list.html', context=context)
def get(self, request, *args, **kwargs): center_id = str_to_int_or_default(request.GET.get('center_id', 0), 0) try: c_manager = CenterManager() centers = c_manager.get_center_queryset() groups = None if center_id > 0: groups = c_manager.get_user_group_queryset_by_center( center_id, user=request.user) except ComputeError as e: return render(request, 'error.html', {'errors': ['查询分中心列表时错误', str(e)]}) context = {} context['center_id'] = center_id if center_id > 0 else None context['centers'] = centers context['groups'] = groups return render(request, 'vdisk_create.html', context=context)