pvl/verkko/hosts.py
changeset 20 790e78bed63e
parent 19 4e2e26f4d058
child 21 55ca67b5000d
equal deleted inserted replaced
19:4e2e26f4d058 20:790e78bed63e
   230                         html.a(href=self.url(ItemHandler, id=host.id))(
   230                         html.a(href=self.url(ItemHandler, id=host.id))(
   231                             '#' #host.id
   231                             '#' #host.id
   232                         )
   232                         )
   233                     ),
   233                     ),
   234                     html.td(class_='ip')(
   234                     html.td(class_='ip')(
   235                         html.a(href=self.url(ListHandler, ip=host.ip))(
   235                         html.a(href=url(ip=host.ip))(
   236                             host.ip
   236                             host.ip
   237                         )
   237                         )
   238                     ),
   238                     ),
   239                     html.td(class_='mac')(
   239                     html.td(class_='mac')(
   240                         html.a(href=self.url(ListHandler, mac=host.mac))(
   240                         html.a(href=url(mac=host.mac))(
   241                             host.render_mac()
   241                             host.render_mac()
   242                         )
   242                         )
   243                     ),
   243                     ),
   244                     html.td(host.render_name()),
   244                     html.td(host.render_name()),
   245                     html.td(
   245                     html.td(
   267             return html.form(method='get', action=self.url())(
   267             return html.form(method='get', action=self.url())(
   268                 html.input(type='hidden', name='sort', value=self.sort),
   268                 html.input(type='hidden', name='sort', value=self.sort),
   269                 table,
   269                 table,
   270             )
   270             )
   271 
   271 
   272     def render_host (self, host, hosts) :
   272 class ItemHandler (BaseHandler) :
       
   273     def process (self, id) :
       
   274         self.hosts = self.query()
       
   275         self.host = self.hosts.get(id)
       
   276         
       
   277         if not self.host :
       
   278             raise web.NotFound("No such host: {id}".format(id=id))
       
   279 
       
   280         self.hosts = self.sort(self.hosts.filter((Host.ip == self.host.ip) | (Host.mac == self.host.mac)))
       
   281     
       
   282     def title (self) :
       
   283         return u"DHCP Host: {self.host}".format(self=self)
       
   284 
       
   285     def render_host (self, host) :
       
   286         """
       
   287             Details for specific host.
       
   288         """
       
   289 
   273         attrs = (
   290         attrs = (
   274                 ('Network',     host.gw),
   291                 ('Network',     host.gw),
   275                 ('IP',          host.ip),
   292                 ('IP',          host.ip),
   276                 ('MAC',         host.mac),
   293                 ('MAC',         host.mac),
   277                 ('Hostname',    host.name),
   294                 ('Hostname',    host.name),
   279                 ('First seen',  host.first_seen),
   296                 ('First seen',  host.first_seen),
   280                 ('Last seen',   host.last_seen),
   297                 ('Last seen',   host.last_seen),
   281                 ('Last state',  host.render_state()),
   298                 ('Last state',  host.render_state()),
   282                 ('Total messages',      host.count),
   299                 ('Total messages',      host.count),
   283         )
   300         )
   284 
   301         
       
   302         return (
       
   303             html.dl(
       
   304                 (html.dt(title), html.dd(value)) for title, value in attrs
       
   305             )
       
   306         )
       
   307 
       
   308     def render (self) :
   285         return (
   309         return (
   286             html.h2('Host'),
   310             html.h2('Host'),
   287             html.dl(
   311             self.render_host(self.host),
   288                 (html.dt(title), html.dd(value)) for title, value in attrs
       
   289             ),
       
   290 
   312 
   291             html.h2('Related'),
   313             html.h2('Related'),
   292             self.render_hosts(hosts),
   314             self.render_hosts(self.hosts),
   293 
   315 
   294             html.a(href=self.url(ListHandler))(html('«'), 'Back'),
   316             html.a(href=self.url(ListHandler))(html('«'), 'Back'),
   295         )
   317         )
   296 
   318 
   297 class ItemHandler (BaseHandler) :
       
   298     def process (self, id) :
       
   299         self.hosts = self.query()
       
   300         self.host = self.hosts.get(id)
       
   301         
       
   302         if not self.host :
       
   303             raise web.NotFound("No such host: {id}".format(id=id))
       
   304 
       
   305         self.hosts = self.sort(self.hosts.filter((Host.ip == self.host.ip) | (Host.mac == self.host.mac)))
       
   306     
       
   307     def title (self) :
       
   308         return u"DHCP Host: {self.host}".format(self=self)
       
   309 
       
   310     def render (self) :
       
   311         return self.render_host(self.host, self.hosts)
       
   312 
   319 
   313 class ListHandler (BaseHandler) :
   320 class ListHandler (BaseHandler) :
   314     # pagination
   321     # pagination
   315     PAGE = 10
   322     PAGE = 10
   316 
   323