forked from abhirajadhikary06/eventstack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
61 lines (54 loc) · 1.93 KB
/
main.py
File metadata and controls
61 lines (54 loc) · 1.93 KB
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
from dotenv import load_dotenv
load_dotenv()
import os
import tornado.ioloop
import tornado.web
import tornado.websocket
import sqlite3
import json
from handlers.auth import GitHubAuthHandler, LoginHandler, LogoutHandler
from handlers.events import EventCreateHandler, EventViewHandler, EventVoteHandler, DashboardHandler
from handlers.websocket import VoteWebSocketHandler
from handlers.info import AboutHandler, PrivacyHandler, SupportHandler
from models.db import init_db
class MainHandler(tornado.web.RequestHandler):
def get(self):
user_cookie = self.get_secure_cookie("user")
user = None
if user_cookie:
try:
user = json.loads(user_cookie)
self.redirect("/dashboard")
return
except:
pass
self.render("index.html", user=user)
def make_app():
# Initialize database
init_db()
return tornado.web.Application([
(r"/", MainHandler),
(r"/login", LoginHandler),
(r"/auth/github", GitHubAuthHandler),
(r"/complete/github/?", GitHubAuthHandler),
(r"/logout", LogoutHandler),
(r"/dashboard", DashboardHandler),
(r"/create", EventCreateHandler),
(r"/event/([^/]+)", EventViewHandler),
(r"/api/vote", EventVoteHandler),
(r"/ws/vote/([^/]+)", VoteWebSocketHandler),
(r"/about", AboutHandler),
(r"/privacy", PrivacyHandler),
(r"/support", SupportHandler),
],
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
cookie_secret=os.getenv("COOKIE_SECRET", "your-secret-key-change-in-production"),
login_url="/login",
debug=True
)
if __name__ == "__main__":
app = make_app()
app.listen(5050, address="0.0.0.0")
print("EventStack server starting on http://localhost:5050")
tornado.ioloop.IOLoop.current().start()