pvl/verkko/dhcp.py
author Tero Marttila <terom@paivola.fi>
Sun, 22 Dec 2013 19:03:57 +0200
changeset 336 edaa5d0aa57d
parent 207 c985d2c788ea
permissions -rw-r--r--
version 0.6.1: pvl.hosts forward/reverse delegation, and include= support
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) :
207
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    21
        for title, value in titlevalues :
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    22
            yield html.li(
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    23
                self.render_link(title, **{attr: value})
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    24
            ) 
178
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
    def render (self) :
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
        return (
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
            html.h2("Interval"),
207
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    29
            html.ul(
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    30
                self.render_links('seen', (
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    31
                            ("Hour",    '1h'),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    32
                            ("Day",     '1d'),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    33
                            #("Month",   '30d'),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    34
                            #("Year",    '365d'),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    35
                )),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    36
                html.li(
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    37
                    html.a(href=self.url(hosts.RealtimeHandler))("Realtime"),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    38
                ),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    39
            ),
178
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
            html.h2("State"),
207
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    41
            html.ul(
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    42
                self.render_links('state', (
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    43
                            ("Valid",       ('DHCPACK', 'DHCPRELEASE')),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    44
                            ("Incomplete",  ('DHCPDISCOVER', 'DHCPOFFER', 'DHCPREQUEST')),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    45
                            ("Invalid",     ('DHCPNAK', )),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    46
                )),
c985d2c788ea pvl.verkko.dhcp: add realtime link to index page
Tero Marttila <terom@paivola.fi>
parents: 184
diff changeset
    47
            ),
178
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
            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
    50
            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
    51
                html.fieldset(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
                    html.ul(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
                        html.li(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
                            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
    55
                            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
    56
                        ),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
                        html.li(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
                            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
    60
                            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
    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
                        html.li(
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
                            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
    65
                        ),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
                    )
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
                )
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
            ),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
        )
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
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
    72
    URLS = urls.Map((
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
        urls.rule('/',                       Index),
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
        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
    75
        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
    76
        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
    77
        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
    78
    ))
f9f5e669bace pvl.verkko: refactor into dhcp -> hosts -> web+db modules, reworking index page
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79