terom@178: # encoding: utf-8 terom@178: import pvl.web terom@178: import pvl.verkko.web terom@178: terom@178: from pvl.web import html, urls terom@184: from pvl.verkko import hosts, leases terom@178: terom@178: import logging; log = logging.getLogger('pvl.verkko.dhcp') terom@178: terom@178: class Index (pvl.verkko.web.DatabaseHandler) : terom@178: TITLE = u"Päivölä Verkko" terom@178: terom@178: CSS = pvl.verkko.web.DatabaseHandler.CSS + ( terom@178: '/static/dhcp/forms.css', terom@178: ) terom@178: terom@178: def render_link (self, title, **opts) : terom@178: return html.a(href=self.url(hosts.ListHandler, **opts))(title) terom@178: terom@178: def render_links (self, attr, titlevalues) : terom@178: return html.ul( terom@178: html.li( terom@178: self.render_link(title, **{attr: value}) terom@178: ) for title, value in titlevalues terom@178: ) terom@178: terom@178: def render (self) : terom@178: return ( terom@178: html.h2("Interval"), terom@178: self.render_links('seen', ( terom@178: ("Hour", '1h'), terom@178: ("Day", '1d'), terom@178: #("Month", '30d'), terom@178: #("Year", '365d'), terom@178: )), terom@178: html.h2("State"), terom@178: self.render_links('state', ( terom@178: ("Valid", ('DHCPACK', 'DHCPRELEASE')), terom@178: ("Incomplete", ('DHCPDISCOVER', 'DHCPOFFER', 'DHCPREQUEST')), terom@178: ("Invalid", ('DHCPNAK', )), terom@178: )), terom@178: terom@178: html.h2("IP/MAC"), terom@178: html.form(action=self.url(hosts.ListHandler), method='get')( terom@178: html.fieldset( terom@178: html.ul( terom@178: html.li( terom@178: html.label(for_='ip')("IP"), terom@178: html.input(type='text', name='ip'), terom@178: ), terom@178: terom@178: html.li( terom@178: html.label(for_='mac')("MAC"), terom@178: html.input(type='text', name='mac'), terom@178: ), terom@178: terom@178: html.li( terom@178: html.input(type='submit', value="Search"), terom@178: ), terom@178: ) terom@178: ) terom@178: ), terom@178: ) terom@178: terom@178: class Application (pvl.verkko.web.Application) : terom@178: URLS = urls.Map(( terom@178: urls.rule('/', Index), terom@178: urls.rule('/hosts/', hosts.ListHandler), terom@178: urls.rule('/hosts/', hosts.ItemHandler), terom@178: urls.rule('/hosts/realtime', hosts.RealtimeHandler), terom@184: urls.rule('/leases/', leases.ListHandler), terom@178: )) terom@178: