summaryrefslogtreecommitdiff
path: root/web_server.py
blob: a8ccc7c952312668a348bac4f3d1240d6dfb8a23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import json
import sys

import cherrypy

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

from bpynotify_orm import NotificationEntry, notification_entry_table


class WebNotifyServer(object):

    def __init__(self, session):
        self.session = session

    @cherrypy.expose
    def notifications(self):
        query = self.session.query(NotificationEntry)\
            .filter(NotificationEntry.viewed==False)\
            .order_by(NotificationEntry.id)
        entries = query.all()
        entry_list = list()
        for entry in entries:
            #print(entry.message)
            entry_list.append(entry.message)
            entry.viewed = True
        self.session.commit()
        print (json.dumps(entry_list, sort_keys=True, indent=4))
        return json.dumps(entry_list, sort_keys=True, indent=4)


def main():

    cherrypy.config.update({
            'server.socket_host': '10.0.0.4',
            'server.socket_port': 40004,

            'server.ssl_module': 'pyopenssl',
            'server.ssl_certificate': '/home/blackmore/gitprogs/bpynotify/cert.crt',
            'server.ssl_private_key': '/home/blackmore/gitprogs/bpynotify/key.pem',            
            })

    try:
        engine = create_engine('sqlite:///notifications.db')
        Session = sessionmaker(bind=engine) # bound session
        session = Session()

        cherrypy.quickstart(WebNotifyServer(session))

    except Exception as e:
        sys.stderr.write("WebServer error: {0}".format(e))
        sys.exit(1)

    sys.exit(0)


if __name__ == "__main__":
    main()