Hello community,

here is the log from the commit of package python-halite for openSUSE:Factory 
checked in at 2013-11-07 09:54:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-halite (Old)
 and      /work/SRC/openSUSE:Factory/.python-halite.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-halite"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-halite/python-halite.changes      
2013-10-17 17:45:42.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-halite.new/python-halite.changes 
2013-11-07 09:54:15.000000000 +0100
@@ -1,0 +2,8 @@
+Mon Nov  4 21:36:04 UTC 2013 - abo...@gmail.com
+
+- Updated to halite 0.1.04
+- Removed unnecesary functions and variables
+- New feature: Command form now has search docs feature, where it displays 
+  the Salt docs associated with a search string
+
+-------------------------------------------------------------------

Old:
----
  halite-0.1.02.tar.gz

New:
----
  halite-0.1.04.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-halite.spec ++++++
--- /var/tmp/diff_new_pack.WMDMvS/_old  2013-11-07 09:54:16.000000000 +0100
+++ /var/tmp/diff_new_pack.WMDMvS/_new  2013-11-07 09:54:16.000000000 +0100
@@ -16,7 +16,7 @@
 #
 
 Name:           python-halite
-Version:        0.1.02
+Version:        0.1.04
 Release:        1%{?dist}
 License:        MIT
 Summary:        Halite the salt Web UI

++++++ halite-0.1.02.tar.gz -> halite-0.1.04.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/PKG-INFO new/halite-0.1.04/PKG-INFO
--- old/halite-0.1.02/PKG-INFO  2013-10-14 23:24:34.000000000 +0200
+++ new/halite-0.1.04/PKG-INFO  2013-11-01 19:58:04.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: halite
-Version: 0.1.02
+Version: 0.1.04
 Summary: SaltStack Web UI
 Home-page: https://github.com/saltstack/halite
 Author: SaltStack Inc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/README.rst new/halite-0.1.04/README.rst
--- old/halite-0.1.02/README.rst        2013-09-24 21:50:32.000000000 +0200
+++ new/halite-0.1.04/README.rst        2013-10-31 17:25:11.000000000 +0100
@@ -298,7 +298,8 @@
 
 If you have problems look for "Halite:" in the saltstack master log output.
 
-2) Customized Deployment
+Customized Deployment
+====
 
 The Halite github repository provides a skeleton framework for building your 
own custom
 deployment. One can run the default bottle.py framwork form the command line 
thusly
@@ -392,11 +393,34 @@
 A multithreaded or asynchronous one will be needed if more than one browser is
 tested at once.
 
+Make sure that the end to end test is setup to login to Halite
+
+.. code-block:: bash
+  $ vim halite/test/mock/loginConf.coffee
+
+In that file change the following
+
+.. code-block:: javascript
+
+   loginInfo =
+       username: 'your_halite_username'
+       password: 'your_halite_password'
+
+Now you can run the tests using the following commands
+
 .. code-block:: bash
 
   $ cd halite
   $ karma start karma_e2e.conf.js
 
-.. ............................................................................
 
+You might have to build the distribution (for development)
+
+.. code-block:: bash
+
+   $ cd halite
+   $ ./prep_dist.py
+
+
+.. ............................................................................
 .. _`halite`: https://github.com/saltstack/halite
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite/app/appConfigSrvc.js 
new/halite-0.1.04/halite/app/appConfigSrvc.js
--- old/halite-0.1.02/halite/app/appConfigSrvc.js       2013-10-14 
23:20:53.000000000 +0200
+++ new/halite-0.1.04/halite/app/appConfigSrvc.js       2013-11-01 
19:56:39.000000000 +0100
@@ -4,8 +4,8 @@
 
   configuration = {
     baseUrl: "",
-    date: "20130709",
-    version: "0.0.1",
+    date: "2013-11-01",
+    version: "0.1.04",
     views: {
       home: {
         label: "home",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite/app/main.css 
new/halite-0.1.04/halite/app/main.css
--- old/halite-0.1.02/halite/app/main.css       2013-09-25 23:22:29.000000000 
+0200
+++ new/halite-0.1.04/halite/app/main.css       2013-10-31 17:25:11.000000000 
+0100
@@ -1,3 +1,7 @@
+/* make sure search docs form group is displayed correctly */
+div#table-display {
+  display: inline-table;
+}
 /* fix up display to not use table*/
 .input-group.input-group-fix {
   display: inline-block;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite/app/navbar.html 
new/halite-0.1.04/halite/app/navbar.html
--- old/halite-0.1.02/halite/app/navbar.html    2013-09-24 21:21:48.000000000 
+0200
+++ new/halite-0.1.04/halite/app/navbar.html    2013-10-31 17:25:11.000000000 
+0100
@@ -24,7 +24,7 @@
         <div class="form-group">
           <input class="span2" type="text" placeholder="Username" 
ng-model="login.username" name="username" required>
           <input class="span2" type="password" placeholder="Password" 
ng-model="login.password" name="password" required>
-          <button type="submit" class="btn btn-default btn-sm" 
ng-click="loginUser()" ng-disabled="loginForm.$invalid">Login</button>
+          <button type="submit" class="btn btn-default btn-sm" 
id="login-button" ng-click="loginUser()" 
ng-disabled="loginForm.$invalid">Login</button>
         </div>
       </form>
       <form class="navbar-form pull-right" name="logoutForm" ng-cloak 
ng-show="!!loggedIn">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite/app/util/appUtilSrvc.js 
new/halite-0.1.04/halite/app/util/appUtilSrvc.js
--- old/halite-0.1.02/halite/app/util/appUtilSrvc.js    2013-10-14 
23:20:53.000000000 +0200
+++ new/halite-0.1.04/halite/app/util/appUtilSrvc.js    2013-11-01 
19:56:39.000000000 +0100
@@ -7,7 +7,7 @@
 
 
 (function() {
-  var Bosser, Commander, Item, Itemizer, Jobber, Minioner, Orderer, Pagerage, 
Resulter, Runner, Wheeler, appUtilSrvc, _ref, _ref1,
+  var Bosser, Commander, Item, Itemizer, Jobber, Minioner, Pagerage, Resulter, 
Runner, Wheeler, appUtilSrvc, _ref, _ref1,
     __indexOf = [].indexOf || function(item) { for (var i = 0, l = 
this.length; i < l; i++) { if (i in this && this[i] === item) return i; } 
return -1; },
     __hasProp = {}.hasOwnProperty,
     __extends = function(child, parent) { for (var key in parent) { if 
(__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { 
this.constructor = child; } ctor.prototype = parent.prototype; child.prototype 
= new ctor(); child.__super__ = parent.prototype; return child; };
@@ -707,266 +707,4 @@
 
   appUtilSrvc.value("Pagerage", Pagerage);
 
-  /*
-  Orderer class  used to provide ordered data object with keyed lookup
-  Entries can be accessed by key but the order of entry or sort is preserved.
-  
-  Orderer instances  can by used with Angular 1.15+  ng-repeat track by 
-  functions to guarantee display order when iterating over object properties
-  such as
-  <div ng-repeat="key in orderer.keys "
-      ng-model="orderer.data[key]">
-      
-  or if values are objects
-  
-  <div ng-repeat="value in orderer.values() track by index"
-      ng-model="value">
-  */
-
-
-  Orderer = (function() {
-    function Orderer(stuff, deep) {
-      this.data = {};
-      this.keys = [];
-      this.update(stuff, deep);
-    }
-
-    Orderer.prototype.get = function(key, tag) {
-      var _ref2;
-      if (tag) {
-        return (_ref2 = this.data[key]) != null ? _ref2[tag] : void 0;
-      } else {
-        return this.data[key];
-      }
-    };
-
-    Orderer.prototype.set = function(key, val, tag) {
-      if (__indexOf.call(this.keys, key) >= 0) {
-        if (tag) {
-          this.data[key][tag] = val;
-        } else {
-          this.data[key] = val;
-        }
-      } else {
-        this.keys.push(key);
-        if (tag) {
-          this.data[key] = {};
-          this.data[key][tag] = val;
-        } else {
-          this.data[key] = val;
-        }
-      }
-      return this;
-    };
-
-    Orderer.prototype._isItem = function(item) {
-      if (item instanceof Item) {
-        return true;
-      }
-      if (angular.isObject(item) && !angular.isArray(item) && "key" in item && 
"val" in item) {
-        return true;
-      }
-      return false;
-    };
-
-    Orderer.prototype._isItemList = function(items) {
-      var item, _i, _len;
-      if (!angular.isArray(items)) {
-        return false;
-      }
-      if (!items.length) {
-        return false;
-      }
-      for (_i = 0, _len = items.length; _i < _len; _i++) {
-        item = items[_i];
-        if (!this._isItem(item)) {
-          return false;
-        }
-      }
-      return true;
-    };
-
-    Orderer.prototype.deepSet = function(key, val, update) {
-      var item, k, orderer, v, _i, _len;
-      orderer = this.data[key];
-      if (this._isItemList(val)) {
-        if (!(orderer instanceof Orderer) || !update) {
-          orderer = new Orderer;
-          this.set(key, orderer);
-        }
-        for (_i = 0, _len = val.length; _i < _len; _i++) {
-          item = val[_i];
-          orderer.deepSet(item.key, item.val, update);
-        }
-      } else if (angular.isObject(val) && !angular.isArray(val)) {
-        if (!(orderer instanceof Orderer) || !update) {
-          orderer = new Orderer();
-          this.set(key, orderer);
-        }
-        for (k in val) {
-          if (!__hasProp.call(val, k)) continue;
-          v = val[k];
-          orderer.deepSet(k, v, update);
-        }
-      } else {
-        this.set(key, val);
-      }
-      return this;
-    };
-
-    Orderer.prototype.del = function(key, tag) {
-      var _key;
-      if (__indexOf.call(this.keys, key) >= 0) {
-        if (tag) {
-          delete this.data[key].val[tag];
-        } else {
-          this.keys = (function() {
-            var _i, _len, _ref2, _results;
-            _ref2 = this.keys;
-            _results = [];
-            for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-              _key = _ref2[_i];
-              if (_key !== key) {
-                _results.push(_key);
-              }
-            }
-            return _results;
-          }).call(this);
-          delete this.data[key];
-        }
-      }
-      return this;
-    };
-
-    Orderer.prototype.clear = function() {
-      this.data = {};
-      this.keys = [];
-      return this;
-    };
-
-    Orderer.prototype.items = function(deep) {
-      var items, key, _i, _len, _ref2;
-      items = [];
-      _ref2 = this.keys;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        key = _ref2[_i];
-        if (deep && (this.data[key] instanceof Orderer)) {
-          items.push(new Item(key, this.data[key].items(deep)));
-        } else {
-          items.push(new Item(key, this.data[key]));
-        }
-      }
-      return items;
-    };
-
-    Orderer.prototype.values = function() {
-      var key;
-      return (function() {
-        var _i, _len, _ref2, _results;
-        _ref2 = this.keys;
-        _results = [];
-        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-          key = _ref2[_i];
-          _results.push(this.data[key]);
-        }
-        return _results;
-      }).call(this);
-    };
-
-    Orderer.prototype.sort = function(sorter, deep) {
-      var key, _i, _len, _ref2;
-      if (sorter == null) {
-        return this._keys;
-      }
-      this.keys.sort(sorter);
-      if (deep) {
-        _ref2 = this.keys;
-        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-          key = _ref2[_i];
-          if (this.data[key] instanceof Orderer) {
-            this.data[key].sort(sorter, deep);
-          }
-        }
-      }
-      return this.keys;
-    };
-
-    Orderer.prototype.update = function(stuff, deep) {
-      var item, key, val, _i, _len;
-      if (stuff != null) {
-        if (this._isItemList(stuff)) {
-          for (_i = 0, _len = stuff.length; _i < _len; _i++) {
-            item = stuff[_i];
-            if (deep) {
-              this.deepSet(item.key, item.val, true);
-            } else {
-              this.set(item.key, item.val);
-            }
-          }
-        } else if (angular.isObject(stuff) && !angular.isArray(stuff)) {
-          for (key in stuff) {
-            if (!__hasProp.call(stuff, key)) continue;
-            val = stuff[key];
-            if (deep) {
-              this.deepSet(key, val, true);
-            } else {
-              this.set(key, val);
-            }
-          }
-        }
-      }
-      return this;
-    };
-
-    Orderer.prototype.reload = function(stuff, deep) {
-      this.clear();
-      this.update(stuff, deep);
-      return this;
-    };
-
-    Orderer.prototype.unorder = function() {
-      var data, key, _i, _len, _ref2;
-      data = {};
-      _ref2 = this.keys;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        key = _ref2[_i];
-        if (this.data[key] instanceof Orderer) {
-          data[key] = this.data[key].unorder();
-        } else {
-          data[key] = this.data[key];
-        }
-      }
-      return data;
-    };
-
-    Orderer.prototype.filter = function(keys) {
-      var key, _i, _key, _len, _ref2;
-      _ref2 = this.keys;
-      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-        key = _ref2[_i];
-        if (__indexOf.call(keys, key) < 0) {
-          delete this.data[key];
-        }
-      }
-      this.keys = (function() {
-        var _j, _len1, _ref3, _results;
-        _ref3 = this.keys;
-        _results = [];
-        for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
-          _key = _ref3[_j];
-          if (__indexOf.call(keys, _key) >= 0) {
-            _results.push(_key);
-          }
-        }
-        return _results;
-      }).call(this);
-      return this;
-    };
-
-    return Orderer;
-
-  })();
-
-  appUtilSrvc.value("Orderer", Orderer);
-
 }).call(this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite/app/view/console.html 
new/halite-0.1.04/halite/app/view/console.html
--- old/halite-0.1.02/halite/app/view/console.html      2013-10-14 
22:33:42.000000000 +0200
+++ new/halite-0.1.04/halite/app/view/console.html      2013-11-01 
19:46:10.000000000 +0100
@@ -45,7 +45,6 @@
           </div>
         </div>
       </div>
-      
       <div class="form-group"> 
         <div class="btn-group">
           <div class="btn-group">
@@ -127,7 +126,8 @@
             title="Module function" 
             ng-required="true"
             name="moduleFunction"
-            ng-model="command.cmd.fun" >
+            ng-model="command.cmd.fun"
+            ng-change="searchDocs()">
         </div>
         <div class="form-group fatter" style="margin-right: 4px;"
             ng-repeat="arg in command.cmd.arg track by $index">
@@ -163,6 +163,15 @@
           </div>
         </div>
       </div>
+      <hr />
+      <Label>Doc Search Results</Label>
+      <div class="checkbox">
+        <label>
+          <input type="checkbox" ng-disabled="!isSearchable()"
+            ng-change="searchDocs()" ng-model="docSearch" 
id="search-checkbox"> Live Doc Search
+          </label>
+      </div>
+      <pre ng-show="!!docSearchResults">{{docSearchResults}}</pre>
     </form>
     
   </div><!--box-->
@@ -590,7 +599,6 @@
     </form>
   </div><!--col-->
 </div><!--/row-->
-
 <script type="text/ng-template" id="ensual_nested.html">
   <span ng-switch on="expandMode(ensual)">
     <span ng-switch-when="lone" >
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite/app/view/console.js 
new/halite-0.1.04/halite/app/view/console.js
--- old/halite-0.1.02/halite/app/view/console.js        2013-10-14 
23:20:53.000000000 +0200
+++ new/halite-0.1.04/halite/app/view/console.js        2013-11-01 
19:56:39.000000000 +0100
@@ -20,6 +20,7 @@
       $scope.statusing = false;
       $scope.eventing = false;
       $scope.commanding = false;
+      $scope.docSearch = false;
       if (AppData.get('commands') == null) {
         AppData.set('commands', new Itemizer());
       }
@@ -585,6 +586,85 @@
         $scope.graining = false;
         return job;
       };
+      $scope.docsLoaded = false;
+      $scope.docKeys = [];
+      $scope.docSearchResults = '';
+      $scope.docs = {};
+      $scope.searchDocs = function() {
+        var key, matching, matchingDocs;
+        if (($scope.command.cmd.fun == null) || !$scope.docSearch || 
$scope.command.cmd.fun === '') {
+          $scope.docSearchResults = '';
+          return true;
+        }
+        matching = _.filter($scope.docKeys, function(key) {
+          return key.indexOf($scope.command.cmd.fun.toLowerCase()) !== -1;
+        });
+        matchingDocs = (function() {
+          var _i, _len, _results;
+          _results = [];
+          for (_i = 0, _len = matching.length; _i < _len; _i++) {
+            key = matching[_i];
+            _results.push(key + "\n" + $scope.docs[key] + "\n");
+          }
+          return _results;
+        })();
+        $scope.docSearchResults = matchingDocs.join('');
+        return true;
+      };
+      $scope.isSearchable = function() {
+        return $scope.docsLoaded;
+      };
+      $scope.fetchDocsDone = function(donejob) {
+        var key, minion_with_result, minions, results, value;
+        results = donejob.results;
+        minions = results._data;
+        minion_with_result = _.find(minions, function(minion) {
+          return minion.val.retcode === 0;
+        });
+        if (minion_with_result != null) {
+          $scope.docs = minion_with_result.val["return"];
+          $scope.docKeys = (function() {
+            var _ref, _results;
+            _ref = $scope.docs;
+            _results = [];
+            for (key in _ref) {
+              value = _ref[key];
+              _results.push("" + (key.toLowerCase()));
+            }
+            return _results;
+          })();
+          $scope.docsLoaded = true;
+        } else {
+          $scope.errorMsg = 'Docs not loaded since all minions returned 
invalid data. Please Check Minions And Retry.';
+        }
+      };
+      $scope.fetchDocsFailed = function() {
+        return $scope.errorMsg = 'Failed to fetch Docs. Please check system 
and retry';
+      };
+      $scope.fetchDocs = function() {
+        var command, commands;
+        command = {
+          fun: 'sys.doc',
+          mode: 'async',
+          tgt: '*',
+          arg: [],
+          expr_form: 'glob'
+        };
+        commands = [command];
+        command = $scope.snagCommand($scope.humanize(commands), commands);
+        SaltApiSrvc.run($scope, commands).success(function(data, status, 
headers, config) {
+          var job, result, _ref;
+          result = (_ref = data["return"]) != null ? _ref[0] : void 0;
+          if (result) {
+            job = $scope.startJob(result, commands);
+            job.commit($q).then($scope.fetchDocsDone, $scope.fetchDocsFailed);
+            return true;
+          }
+        }).error(function(data, status, headers, config) {
+          return false;
+        });
+        return true;
+      };
       $scope.startWheel = function(tag, cmd) {
         var jid, job, parts;
         console.log("Start Wheel " + ($scope.humanize(cmd)));
@@ -762,6 +842,7 @@
       $scope.authListener = function(event, loggedIn) {
         if (loggedIn) {
           $scope.openEventStream();
+          $scope.fetchDocs();
         } else {
           $scope.closeEventStream();
           $scope.clearSaltData();
@@ -786,6 +867,7 @@
       $scope.testFocus = function(name) {
         return console.log("focus " + name);
       };
+      $scope.fetchDocs();
       return true;
     }
   ]);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite/app/view/home.html 
new/halite-0.1.04/halite/app/view/home.html
--- old/halite-0.1.02/halite/app/view/home.html 2013-09-27 20:06:05.000000000 
+0200
+++ new/halite-0.1.04/halite/app/view/home.html 2013-11-01 19:54:16.000000000 
+0100
@@ -5,6 +5,8 @@
     </div>
     <h3>About</h3>
     <p>Version: {{config.version}}</p>
+    <p>Date: {{config.date}}</p>
+    <p>Base Url: {{config.baseUrl}}</p>
   </div><!--/span-->
 </div><!--/row-->
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite/server_bottle.py 
new/halite-0.1.04/halite/server_bottle.py
--- old/halite-0.1.02/halite/server_bottle.py   2013-10-11 18:41:12.000000000 
+0200
+++ new/halite-0.1.04/halite/server_bottle.py   2013-10-24 21:53:38.000000000 
+0200
@@ -270,8 +270,16 @@
 
         while True:
             data =  client.get_event(wait=0.025, tag=tag, full=True)
+            
             if data:
-                yield 'data: {0}\n\n'.format(json.dumps(data))
+                try: #work around try to decode catch unicode errors
+                    data = json.dumps(data)
+                except UnicodeDecodeError as ex:
+                    if 'data' in data:
+                        if 'tok' in data['data']:
+                            del data['data']['tok']
+                            data = json.dumps(data)
+                yield 'data: {0}\n\n'.format(data)
             else:
                 sleep(0.1)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/halite.egg-info/PKG-INFO 
new/halite-0.1.04/halite.egg-info/PKG-INFO
--- old/halite-0.1.02/halite.egg-info/PKG-INFO  2013-10-14 23:24:21.000000000 
+0200
+++ new/halite-0.1.04/halite.egg-info/PKG-INFO  2013-11-01 19:57:52.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: halite
-Version: 0.1.02
+Version: 0.1.04
 Summary: SaltStack Web UI
 Home-page: https://github.com/saltstack/halite
 Author: SaltStack Inc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/halite-0.1.02/setup.py new/halite-0.1.04/setup.py
--- old/halite-0.1.02/setup.py  2013-10-14 23:20:18.000000000 +0200
+++ new/halite-0.1.04/setup.py  2013-11-01 19:51:49.000000000 +0100
@@ -11,7 +11,7 @@
 
 setup(
     name = 'halite',
-    version = '0.1.02', 
+    version = '0.1.04', 
     description = 'SaltStack Web UI',
     url = 'https://github.com/saltstack/halite',
     author='SaltStack Inc',

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to