Эх сурвалжийг харах

HUE-6245 [cluster] Persist currently selected cluster

Romain Rigaux 8 жил өмнө
parent
commit
f93ff39

+ 8 - 12
desktop/core/src/desktop/api2.py

@@ -44,7 +44,7 @@ from desktop.lib.exceptions_renderable import PopupException
 from desktop.lib.export_csvxls import make_response
 from desktop.lib.i18n import smart_str, force_unicode
 from desktop.models import Document2, Document, Directory, FilesystemException, uuid_default, ClusterConfig,\
-  UserPreferences, get_user_preferences
+  UserPreferences, get_user_preferences, set_user_preferences, USER_PREFERENCE_CLUSTER
 
 
 LOG = logging.getLogger(__name__)
@@ -69,14 +69,15 @@ def api_error_handler(func):
 
 @api_error_handler
 def get_config(request):
-  if request.POST.get('cluster'):
-    cluster_type = json.loads(request.POST['cluster'])['type']
-    # TODO persist
+  if request.POST.get(USER_PREFERENCE_CLUSTER):
+    cluster_type = json.loads(request.POST[USER_PREFERENCE_CLUSTER])['type']
+    if request.POST.get(USER_PREFERENCE_CLUSTER):
+      set_user_preferences(request.user, USER_PREFERENCE_CLUSTER, request.POST[USER_PREFERENCE_CLUSTER])
   else:
-    default_cluster = get_user_preferences(request.user, key='cluster')
+    default_cluster = get_user_preferences(request.user, key=USER_PREFERENCE_CLUSTER)
     if default_cluster:
       clusters = get_clusters()
-      cluster_name = json.loads(default_cluster['cluster']).get('name')
+      cluster_name = json.loads(default_cluster[USER_PREFERENCE_CLUSTER]).get('name')
       cluster_type = cluster_name and clusters.get(cluster_name) and clusters[cluster_name]['type'] or 'ini'
     else:
       cluster_type = 'ini'
@@ -600,12 +601,7 @@ def user_preferences(request, key=None):
     response['data'] = get_user_preferences(request.user, key)
   else:
     if "set" in request.POST:
-      try:
-        x = UserPreferences.objects.get(user=request.user, key=key)
-      except UserPreferences.DoesNotExist:
-        x = UserPreferences(user=request.user, key=key)
-      x.value = request.POST["set"]
-      x.save()
+      x = set_user_preferences(request.user, key, request.POST["set"])
       response['data'] = {key: x.value}
     elif "delete" in request.POST:
       try:

+ 11 - 0
desktop/core/src/desktop/models.py

@@ -61,6 +61,8 @@ SAMPLE_USER_OWNERS = ['hue', 'sample']
 UTC_TIME_FORMAT = "%Y-%m-%dT%H:%MZ"
 HUE_VERSION = None
 
+USER_PREFERENCE_CLUSTER = 'cluster'
+
 
 def uuid_default():
   return str(uuid.uuid4())
@@ -1800,6 +1802,15 @@ def get_user_preferences(user, key=None):
     return dict((x.key, x.value) for x in UserPreferences.objects.filter(user=user))
 
 
+def set_user_preferences(user, key, value):
+  try:
+    x = UserPreferences.objects.get(user=user, key=key)
+  except UserPreferences.DoesNotExist:
+    x = UserPreferences(user=user, key=key)
+  x.value = value
+  x.save()
+
+
 def get_data_link(meta):
   link = None
 

+ 6 - 6
desktop/core/src/desktop/templates/hue.mako

@@ -1190,6 +1190,12 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
 
           self.contextPanelVisible = ko.observable(false);
 
+          self._loadInterface = function() {
+            var interfaces = self.cluster().interfaces().filter(function (i) {return i.interface() == '${ default_cluster_interface }'});
+            if (interfaces.length > 0) {
+              self.cluster(interfaces[0]);
+            }
+          };
           var dataEngCluster = $.grep(self.clusters(), function(cluster) {
             return cluster.type() == 'dataeng';
           });
@@ -1219,12 +1225,6 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
             self._loadInterface();
           }
         }
-        self._loadInterface = function() {
-          var interfaces = self.cluster().interfaces().filter(function (i) {return i.interface() == '${ default_cluster_interface }'});
-          if (interfaces.length > 0) {
-            self.cluster(interfaces[0]);
-          }
-        };
         self.cluster = new ClusterPanelViewModel();
 
         self.searchAutocompleteSource = function (request, callback) {

+ 3 - 3
desktop/core/src/desktop/views.py

@@ -56,7 +56,7 @@ from desktop.lib.paths import get_desktop_root
 from desktop.lib.thread_util import dump_traceback
 from desktop.log.access import access_log_level, access_warn
 from desktop.log import set_all_debug as _set_all_debug, reset_all_debug as _reset_all_debug, get_all_debug as _get_all_debug
-from desktop.models import Settings, hue_version, _get_apps, UserPreferences, get_user_preferences
+from desktop.models import Settings, hue_version, _get_apps, UserPreferences, get_user_preferences, USER_PREFERENCE_CLUSTER
 
 
 LOG = logging.getLogger(__name__)
@@ -74,10 +74,10 @@ def hue(request):
   default_cluster_interface = ''
 
   clusters = get_clusters()
-  default_cluster = get_user_preferences(request.user, key='cluster')
+  default_cluster = get_user_preferences(request.user, key=USER_PREFERENCE_CLUSTER)
 
   if clusters and default_cluster:
-    default_cluster_json = json.loads(default_cluster['cluster'])
+    default_cluster_json = json.loads(default_cluster[USER_PREFERENCE_CLUSTER])
     default_cluster_name = default_cluster_json.get('name')
 
     default_cluster_index = default_cluster_name in clusters.keys() and clusters.keys().index(default_cluster_name) or 0