pvl/verkko/dhcp.py
author Tero Marttila <terom@paivola.fi>
Sun, 10 Feb 2013 13:20:29 +0200
changeset 205 f7658198c224
parent 184 eef756d892e9
child 207 c985d2c788ea
permissions -rw-r--r--
pvl.verkko.hosts: refactor RealtimeHandler to use HostsTable
178
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
# encoding: utf-8
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
import pvl.web
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
import pvl.verkko.web
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
from pvl.web import html, urls
184
eef756d892e9 pvl.verkko.leases: implement ui for dhcp_leases table
Tero Marttila <terom@paivola.fi>
parents: 178
diff changeset
     6
from pvl.verkko import hosts, leases
178
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
import logging; log = logging.getLogger('pvl.verkko.dhcp')
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
class Index (pvl.verkko.web.DatabaseHandler) :
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
    TITLE = u"Päivölä Verkko"
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
    CSS = pvl.verkko.web.DatabaseHandler.CSS + (
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
            '/static/dhcp/forms.css',
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
    )
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
    def render_link (self, title, **opts) :
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
        return html.a(href=self.url(hosts.ListHandler, **opts))(title)
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    def render_links (self, attr, titlevalues) :
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
        return html.ul(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
                html.li(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
                    self.render_link(title, **{attr: value})
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
                ) for title, value in titlevalues
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
        )
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
    def render (self) :
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
        return (
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
            html.h2("Interval"),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
            self.render_links('seen', (
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
                        ("Hour",    '1h'),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
                        ("Day",     '1d'),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
                        #("Month",   '30d'),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
                        #("Year",    '365d'),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
            )),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
            html.h2("State"),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
            self.render_links('state', (
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
                        ("Valid",       ('DHCPACK', 'DHCPRELEASE')),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
                        ("Incomplete",  ('DHCPDISCOVER', 'DHCPOFFER', 'DHCPREQUEST')),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
                        ("Invalid",     ('DHCPNAK', )),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
            )),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
            html.h2("IP/MAC"),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
            html.form(action=self.url(hosts.ListHandler), method='get')(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
                html.fieldset(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
                    html.ul(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
                        html.li(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
                            html.label(for_='ip')("IP"),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
                            html.input(type='text', name='ip'),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
                        ),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
                        html.li(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
                            html.label(for_='mac')("MAC"),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
                            html.input(type='text', name='mac'),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
                        ),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
                        html.li(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
                            html.input(type='submit', value="Search"),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
                        ),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
                    )
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
                )
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
            ),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
        )
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
class Application (pvl.verkko.web.Application) :
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
    URLS = urls.Map((
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
        urls.rule('/',                       Index),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
        urls.rule('/hosts/',                 hosts.ListHandler),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
        urls.rule('/hosts/<int:id>',         hosts.ItemHandler),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
        urls.rule('/hosts/realtime',         hosts.RealtimeHandler),
184
eef756d892e9 pvl.verkko.leases: implement ui for dhcp_leases table
Tero Marttila <terom@paivola.fi>
parents: 178
diff changeset
    71
        urls.rule('/leases/',                leases.ListHandler),
178
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
    ))
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73