diff options
| author | Simeon Simeonov | 2012-11-13 15:40:27 +0100 |
|---|---|---|
| committer | Simeon Simeonov | 2012-11-13 15:40:27 +0100 |
| commit | 5c2becae337ea7e2bcebec2912e4626d853b16aa (patch) | |
| tree | 8176d6f36f1c9d758670bdd0c0752167af775ba7 /web_server.py | |
| parent | b1b484a0b93a5651da7d1ca20e77f70089b215bb (diff) | |
All working with sqlite
Diffstat (limited to 'web_server.py')
| -rwxr-xr-x | web_server.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/web_server.py b/web_server.py new file mode 100755 index 0000000..a8ccc7c --- /dev/null +++ b/web_server.py | |||
| @@ -0,0 +1,62 @@ | |||
| 1 | #!/usr/bin/env python | ||
| 2 | # -*- coding: utf-8 -*- | ||
| 3 | |||
| 4 | import json | ||
| 5 | import sys | ||
| 6 | |||
| 7 | import cherrypy | ||
| 8 | |||
| 9 | from sqlalchemy import create_engine | ||
| 10 | from sqlalchemy.orm import sessionmaker | ||
| 11 | |||
| 12 | from bpynotify_orm import NotificationEntry, notification_entry_table | ||
| 13 | |||
| 14 | |||
| 15 | class WebNotifyServer(object): | ||
| 16 | |||
| 17 | def __init__(self, session): | ||
| 18 | self.session = session | ||
| 19 | |||
| 20 | @cherrypy.expose | ||
| 21 | def notifications(self): | ||
| 22 | query = self.session.query(NotificationEntry)\ | ||
| 23 | .filter(NotificationEntry.viewed==False)\ | ||
| 24 | .order_by(NotificationEntry.id) | ||
| 25 | entries = query.all() | ||
| 26 | entry_list = list() | ||
| 27 | for entry in entries: | ||
| 28 | #print(entry.message) | ||
| 29 | entry_list.append(entry.message) | ||
| 30 | entry.viewed = True | ||
| 31 | self.session.commit() | ||
| 32 | print (json.dumps(entry_list, sort_keys=True, indent=4)) | ||
| 33 | return json.dumps(entry_list, sort_keys=True, indent=4) | ||
| 34 | |||
| 35 | |||
| 36 | def main(): | ||
| 37 | |||
| 38 | cherrypy.config.update({ | ||
| 39 | 'server.socket_host': '10.0.0.4', | ||
| 40 | 'server.socket_port': 40004, | ||
| 41 | |||
| 42 | 'server.ssl_module': 'pyopenssl', | ||
| 43 | 'server.ssl_certificate': '/home/blackmore/gitprogs/bpynotify/cert.crt', | ||
| 44 | 'server.ssl_private_key': '/home/blackmore/gitprogs/bpynotify/key.pem', | ||
| 45 | }) | ||
| 46 | |||
| 47 | try: | ||
| 48 | engine = create_engine('sqlite:///notifications.db') | ||
| 49 | Session = sessionmaker(bind=engine) # bound session | ||
| 50 | session = Session() | ||
| 51 | |||
| 52 | cherrypy.quickstart(WebNotifyServer(session)) | ||
| 53 | |||
| 54 | except Exception as e: | ||
| 55 | sys.stderr.write("WebServer error: {0}".format(e)) | ||
| 56 | sys.exit(1) | ||
| 57 | |||
| 58 | sys.exit(0) | ||
| 59 | |||
| 60 | |||
| 61 | if __name__ == "__main__": | ||
| 62 | main() | ||
