pvl.verkko.tables: fixfix
authorTero Marttila <terom@paivola.fi>
Sat, 26 Jan 2013 22:18:16 +0200
changeset 183 8fbaaf0564dc
parent 180 e6bca452ce72
child 184 eef756d892e9
pvl.verkko.tables: fixfix
pvl/verkko/hosts.py
pvl/verkko/table.py
--- a/pvl/verkko/hosts.py	Sat Jan 26 21:06:00 2013 +0200
+++ b/pvl/verkko/hosts.py	Sat Jan 26 22:18:16 2013 +0200
@@ -6,7 +6,6 @@
 import re
 import datetime
 import socket # dns
-import math
 
 import logging; log = logging.getLogger('pvl.verkko.hosts')
 
@@ -148,6 +147,7 @@
         Table of hosts.
     """
 
+    ITEMS   = "Hosts"
     COLUMNS = (
         table.Column('ip',    "IP",       Host.ip,        
             rowfilter   = True,
@@ -167,9 +167,6 @@
     # XXX: have to set again
     ATTRS = dict((col.attr, col) for col in COLUMNS)
 
-    # XXX: set later
-    TABLE_URL = ITEM_URL = None
-
     # default
     SORT = Host.last_seen.desc()
     PAGE = 10
--- a/pvl/verkko/table.py	Sat Jan 26 21:06:00 2013 +0200
+++ b/pvl/verkko/table.py	Sat Jan 26 22:18:16 2013 +0200
@@ -1,6 +1,8 @@
 from pvl.web import html
 from pvl.verkko import web, db
 
+import math
+
 import logging; log = logging.getLogger('pvl.verkko.table')
 
 class Column (object) :
@@ -133,6 +135,7 @@
     """
 
     COLUMNS = ()
+    ITEMS = None
     
     # attr -> column
     ATTRS = dict((col.attr, col) for col in COLUMNS)
@@ -266,7 +269,7 @@
                 self.render_row(item, **opts)
             )
 
-    def render_pagination (self, page, count=None) :
+    def render_pagination (self, page, count=None, **opts) :
         """
             Render pagination links.
         """
@@ -277,14 +280,17 @@
             pages = None
 
         if page > 0 :
-            yield html.a(href=self.tableurl(page=0))(html("&laquo;&laquo; First"))
-            yield html.a(href=self.tableurl(page=(page - 1)))(html("&laquo; Prev"))
+            yield html.a(href=self.tableurl(page=0, **opts))(html("&laquo;&laquo; First"))
+            yield html.a(href=self.tableurl(page=(page - 1), **opts))(html("&laquo; Prev"))
         
-        yield html.span("Page {page} of {pages}".format(page=(page + 1), pages=(pages or '???')))
+        if pages :
+            yield html.span("Page {page} of {pages}".format(page=(page + 1), pages=pages))
+        else :
+            yield html.span("Page {page}".format(page=(page + 1)))
 
-        yield html.a(href=self.tableurl(page=(page + 1)))(html("&raquo; Next"))
+        yield html.a(href=self.tableurl(page=(page + 1), **opts))(html("&raquo; Next"))
 
-    def render_foot (self, query, page) :
+    def render_foot (self, query, page, **opts) :
         """
             Render pagination/host count in footer.
         """
@@ -292,10 +298,11 @@
         # XXX: does separate SELECT count()
         count = query.count()
 
-        if page :
-            return self.render_pagination(page, count)
+        if page is None :
+            return "{count} {items}".format(count=count, items=self.ITEMS)
         else :
-            return "{count} hosts".format(count=count)
+            # XXX: count is just the count we got..
+            return self.render_pagination(page, count=None, **opts)
 
     def render (self, query, filters=None, sort=None, page=None, hilight=None) :
         """
@@ -326,7 +333,7 @@
             html.tfoot(
                 html.tr(
                     html.td(colspan=(1 + len(self.columns)))(
-                        self.render_foot(query, page)
+                        self.render_foot(query, page, filters=filters, sort=sort)
                     )
                 )
             )