فهرست منبع

HUE-2412 [core] partially optimize the desktop home view

This cuts the rendering time from the home view from 17s to 11s.
Erick Tryzelaar 11 سال پیش
والد
کامیت
325e327bd9
2فایلهای تغییر یافته به همراه17 افزوده شده و 9 حذف شده
  1. 1 1
      apps/oozie/src/oozie/models.py
  2. 16 8
      desktop/core/src/desktop/api.py

+ 1 - 1
apps/oozie/src/oozie/models.py

@@ -480,7 +480,7 @@ class Workflow(Job):
     return 'workflow.xml'
 
   def get_absolute_url(self):
-    if self.doc.get().extra == 'jobsub':
+    if self.doc.only('extra').get().extra == 'jobsub':
       return '/jobsub/#edit-design/%s' % self.id
     else:
       return reverse('oozie:edit_workflow', kwargs={'workflow': self.id}) + '#editWorkflow'

+ 16 - 8
desktop/core/src/desktop/api.py

@@ -43,18 +43,26 @@ def _get_docs(user):
         .exclude(tags__in=[trash_tag])
         .filter(tags__in=[history_tag])
         .select_related(
-          'DocumentTag',
-          'User',
-          'DocumentPermission',
+          'owner',
+          'content_type',
         )
+        .prefetch_related(
+          'tags',
+          'documentpermission_set',
+        )
+        .defer(None)
         .order_by('-last_modified')[:500],
       Document.objects.get_docs(user)
         .exclude(tags__in=[history_tag])
         .select_related(
-          'DocumentTag',
-          'User',
-          'DocumentPermission',
+          'owner',
+          'content_type',
+        )
+        .prefetch_related(
+          'tags',
+          'documentpermission_set',
         )
+        .defer(None)
         .order_by('-last_modified')[:100]
   )
   return list(docs)
@@ -168,9 +176,9 @@ def massaged_documents_for_json(documents, user):
       'perms': {
         'read': {
           'users': [{'id': perm_user.id, 'username': perm_user.username} \
-                    for perm_user in read_perms.users.all()],
+                    for perm_user in read_perms.users.all().only('id', 'username')],
           'groups': [{'id': perm_group.id, 'name': perm_group.name} \
-                     for perm_group in read_perms.groups.all()]
+                     for perm_group in read_perms.groups.all().only('id', 'name')]
         },
         'write': {
           'users': [{'id': perm_user.id, 'username': perm_user.username} for perm_user in write_perms.users.all()],