pvl/verkko/wlan.py
author Tero Marttila <terom@paivola.fi>
Sun, 22 Dec 2013 19:03:57 +0200
changeset 336 edaa5d0aa57d
parent 243 787c5f93f434
permissions -rw-r--r--
version 0.6.1: pvl.hosts forward/reverse delegation, and include= support
243
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
from pvl.verkko import web, db, table
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
from pvl.web import html, urls
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
import datetime
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
import logging; log = logging.getLogger('pvl.verkko.wlan')
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
class WLANSta (object) :
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
    """
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
        A WLAN STA (client) with ap/ssid/sta and starts/ends.
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
    """
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
    DATE_FMT = '%Y%m%d %H:%M'
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
    TIME_FMT = '%H:%M:%S'
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
    @classmethod
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
    def format_datetime (cls, dt) :
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
        if dt.date() == datetime.date.today() :
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
            return dt.strftime(cls.TIME_FMT)
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
        else :
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
            return dt.strftime(cls.DATE_FMT)
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
    def seen (self) :
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
        return (
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
                html.span(title=self.first_seen)(self.format_datetime(self.first_seen)),
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
                '-',
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
                html.span(title=self.last_seen)(self.format_datetime(self.last_seen))
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
        )
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
db.mapper(WLANSta, db.wlan_sta, properties=dict(
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
))
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
class WLANTable (table.Table) :
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
    """
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
        <table> of WLAN STA
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
    """
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
    ITEMS   = "WLAN Stations"
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
    COLUMNS = (
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
        table.Column('ap',          "Access Point",     WLANSta.ap,
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
            rowfilter   = True,
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
        ),
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
        table.Column('wlan',        "SSID",             WLANSta.wlan,
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
            rowfilter   = True,
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
        ),
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
        table.Column('sta',         "MAC",              WLANSta.sta,
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
            rowfilter   = True,
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
        ),
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
        table.Column('seen',        "Seen",             WLANSta.last_seen,  WLANSta.seen),
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
    )
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
    
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
    # XXX: have to set again
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
    ATTRS = dict((col.attr, col) for col in COLUMNS)
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
    # default
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
    SORT = WLANSta.last_seen.desc()
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
    PAGE = 20
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
class WLANHandler (table.TableHandler, web.DatabaseHandler) :
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
    """
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
        Combined database + <table>
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
    """
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
    CSS = web.DatabaseHandler.CSS + table.TableHandler.CSS + (
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
        "/static/wlan.css", 
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
    )
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
    
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
    # view
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
    TABLE = WLANTable
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
    DB_CLASS = WLANSta
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
class Application (web.Application) :
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
    URLS = urls.Map((
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
        urls.rule('/',                       WLANHandler),
787c5f93f434 pvl.verkko.wlan: basic Table view
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
    ))