author | Tero Marttila <terom@paivola.fi> |
Sun, 22 Dec 2013 19:03:57 +0200 | |
changeset 336 | edaa5d0aa57d |
parent 243 | 787c5f93f434 |
permissions | -rw-r--r-- |
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 |
)) |