[tor-commits] [nyx/master] Localize sort functionality in panel's sort function

atagar at torproject.org atagar at torproject.org
Tue Sep 22 17:08:41 UTC 2015


commit 77e53454fb75f2477f3ad0473a241bfc770a432b
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Aug 30 12:14:56 2015 -0700

    Localize sort functionality in panel's sort function
    
    Merging the get_sort_value() into the sort function. Nice simplification.
---
 nyx/connections/conn_panel.py |   39 ++++++++++++++++++++++++++++++++-------
 nyx/connections/entries.py    |   38 --------------------------------------
 2 files changed, 32 insertions(+), 45 deletions(-)

diff --git a/nyx/connections/conn_panel.py b/nyx/connections/conn_panel.py
index b9c4980..f28c943 100644
--- a/nyx/connections/conn_panel.py
+++ b/nyx/connections/conn_panel.py
@@ -158,18 +158,43 @@ class ConnectionPanel(panel.Panel, threading.Thread):
         ordering_keys = [entries.SortAttr.keys()[entries.SortAttr.index_of(v)] for v in ordering]
         nyx_config.set('features.connection.order', ', '.join(ordering_keys))
 
-      def sort_type(attr):
+      def sort_value(entry, attr):
         if attr == entries.SortAttr.LISTING:
           if self.get_listing_type() == entries.ListingType.IP_ADDRESS:
-            return entries.SortAttr.IP_ADDRESS
+            attr = entries.SortAttr.IP_ADDRESS
           elif self.get_listing_type() == entries.ListingType.FINGERPRINT:
-            return entries.SortAttr.FINGERPRINT
+            attr = entries.SortAttr.FINGERPRINT
           elif self.get_listing_type() == entries.ListingType.NICKNAME:
-            return entries.SortAttr.NICKNAME
-
-        return attr
+            attr = entries.SortAttr.NICKNAME
+
+        connection_line = entry.get_lines()[0]
+
+        if attr == entries.SortAttr.IP_ADDRESS:
+          if entry.is_private():
+            return 255 ** 4  # orders at the end
+
+          ip_value = 0
+
+          for octet in connection_line.connection.remote_address.split('.'):
+            ip_value = ip_value * 255 + int(octet)
+
+          return ip_value * 65536 + connection_line.connection.remote_port
+        elif attr == entries.SortAttr.PORT:
+          return connection_line.connection.remote_port
+        elif attr == entries.SortAttr.FINGERPRINT:
+          return connection_line.get_fingerprint('UNKNOWN')
+        elif attr == entries.SortAttr.NICKNAME:
+          return connection_line.get_nickname('z' * 20)
+        elif attr == entries.SortAttr.CATEGORY:
+          return conn_entry.Category.index_of(entry.get_type())
+        elif attr == entries.SortAttr.UPTIME:
+          return connection_line.connection.start_time
+        elif attr == entries.SortAttr.COUNTRY:
+          return '' if entry.is_private() else connection_line.get_locale('')
+        else:
+          return ''
 
-      self._entries.sort(key = lambda i: [i.get_sort_value(sort_type(attr)) for attr in CONFIG['features.connection.order']])
+      self._entries.sort(key = lambda i: [sort_value(i, attr) for attr in CONFIG['features.connection.order']])
       self._entry_lines = list(itertools.chain.from_iterable([entry.get_lines() for entry in self._entries]))
 
   def get_listing_type(self):
diff --git a/nyx/connections/entries.py b/nyx/connections/entries.py
index b30ae43..20d19a8 100644
--- a/nyx/connections/entries.py
+++ b/nyx/connections/entries.py
@@ -113,44 +113,6 @@ class Entry(object):
 
     return self._lines
 
-  @lru_cache()
-  def get_sort_value(self, attr):
-    """
-    Value for sorting by a given attribute.
-
-    :param SortAtt attr: attribute to be sorted by
-
-    :returns: comparable object by the given attribute
-    """
-
-    connection_line = self._lines[0]
-
-    if attr == SortAttr.IP_ADDRESS:
-      if self.is_private():
-        return 255 ** 4  # orders at the end
-
-      ip_value = 0
-
-      for octet in connection_line.connection.remote_address.split('.'):
-        ip_value = ip_value * 255 + int(octet)
-
-      return ip_value * 65536 + connection_line.connection.remote_port
-    elif attr == SortAttr.PORT:
-      return connection_line.connection.remote_port
-    elif attr == SortAttr.FINGERPRINT:
-      return connection_line.get_fingerprint('UNKNOWN')
-    elif attr == SortAttr.NICKNAME:
-      return connection_line.get_nickname('z' * 20)
-    elif attr == SortAttr.CATEGORY:
-      import nyx.connections.conn_entry
-      return nyx.connections.conn_entry.Category.index_of(self.get_type())
-    elif attr == SortAttr.UPTIME:
-      return connection_line.connection.start_time
-    elif attr == SortAttr.COUNTRY:
-      return '' if self.is_private() else connection_line.get_locale('')
-    else:
-      return ''
-
 
 class ConnectionPanelLine:
   """





More information about the tor-commits mailing list