[Update] 优化详情页获取nodes

pull/2987/head
ibuler 2019-07-18 13:01:07 +08:00
parent 1af40b6ca0
commit 1ef16d55ef
2 changed files with 12 additions and 8 deletions

View File

@ -5,20 +5,18 @@ from django.contrib import messages
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import TemplateView, ListView from django.views.generic import TemplateView, ListView
from django.views.generic.edit import FormMixin from django.views.generic.edit import FormMixin
from django.views.generic.edit import CreateView, DeleteView, UpdateView from django.views.generic.edit import DeleteView, UpdateView
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.core.cache import cache from django.core.cache import cache
from django.shortcuts import redirect from django.shortcuts import redirect
from django.contrib.messages.views import SuccessMessageMixin
from django.forms.formsets import formset_factory from django.forms.formsets import formset_factory
from common.utils import get_object_or_none, get_logger from common.utils import get_object_or_none, get_logger
from common.permissions import PermissionsMixin, IsOrgAdmin, IsValidUser from common.permissions import PermissionsMixin, IsOrgAdmin, IsValidUser
from common.const import ( from common.const import KEY_CACHE_RESOURCES_ID
create_success_msg, update_success_msg, KEY_CACHE_RESOURCES_ID
)
from .. import forms from .. import forms
from ..utils import NodeUtil
from ..models import Asset, SystemUser, Label, Node from ..models import Asset, SystemUser, Label, Node
@ -198,7 +196,9 @@ class AssetDetailView(PermissionsMixin, DetailView):
).select_related('admin_user', 'domain') ).select_related('admin_user', 'domain')
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
nodes_remain = Node.objects.exclude(assets=self.object) nodes_remain = Node.objects.exclude(assets=self.object).only('key')
util = NodeUtil()
nodes_remain = util.get_nodes_by_queryset(nodes_remain)
context = { context = {
'app': _('Assets'), 'app': _('Assets'),
'action': _('Asset detail'), 'action': _('Asset detail'),

View File

@ -10,6 +10,7 @@ from django.conf import settings
from common.permissions import PermissionsMixin, IsOrgAdmin from common.permissions import PermissionsMixin, IsOrgAdmin
from orgs.utils import current_org from orgs.utils import current_org
from assets.utils import NodeUtil
from perms.hands import Node, Asset, SystemUser, UserGroup from perms.hands import Node, Asset, SystemUser, UserGroup
from perms.models import AssetPermission from perms.models import AssetPermission
from perms.forms import AssetPermissionForm from perms.forms import AssetPermissionForm
@ -163,8 +164,11 @@ class AssetPermissionAssetView(PermissionsMixin,
return queryset return queryset
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
granted_nodes = self.object.nodes.all() nodes_remain = Node.objects.exclude(
nodes_remain = [n for n in Node.get_queryset() if n not in granted_nodes] id__in=self.object.nodes.all().values_list('id', flat=True)
).only('key')
util = NodeUtil()
nodes_remain = util.get_nodes_by_queryset(nodes_remain)
context = { context = {
'app': _('Perms'), 'app': _('Perms'),
'action': _('Asset permission asset list'), 'action': _('Asset permission asset list'),