-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathserver.py
More file actions
132 lines (103 loc) · 5.62 KB
/
server.py
File metadata and controls
132 lines (103 loc) · 5.62 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# The Server
from templating import render
from tornado.ncss import Server, ncssbook_log # ncssbook_log --> Optional | The logs will be more legible and easyer to follow / understand
from database.seeker import *
from database.position import Position, get_position, return_all_positions
#user = Seeker("James","Curran", "1/1/2012", "000", "james@ncss.com", "Sydney", ["Univeristy of Sydney - Bachelor of Science", "PhD in Computing Linguistics @ Sydeny Univeristy"], ["Coding","Running buisinesses","Reading storiess", "spelling"], ["Python", "everythgin"], ["NCSS"])
def index_handler (request):
return render(request, 'index.html', {"login": check_logged_in(request)})
def profile_handler (request, user_id):
'''
if user_id == '1':
with open('profile.html') as p:
profile_html = p.read()
profile_html = render(profile_html, {"user": user})
request.write(profile_html)
'''
customer = get_seeker('./database/seekers_personal.db', user_id)
if customer == None:
render(request, "pagenotfound.html", {"login": check_logged_in(request)})
else:
render(request, "profile.html", {"user": customer, "login": check_logged_in(request)})
def profilelistpage_handler(request):
seekers = get_seekers('./database/seekers_personal.db')
if not check_logged_in(request):
render(request, 'profilelistpage.html', {"seekers": seekers, "login": check_logged_in(request)})
else:
render(request, "profile.html", {"user": check_logged_in(request), "login": check_logged_in(request)})
def searchresult_handler(request, query, querytype):
positions = return_all_positions('./database/seekers_personal.db')
results = []
for position in positions:
if (query.lower() in position.positionname.lower() or query.lower() in position.companyname.lower() or query.lower() in position.positionlength.lower() or query.lower() in position.address.lower()) and (querytype.lower() in position.positiontype.lower() or querytype.lower() == 'alltypes'):
results.append(position)
render(request, "positionlist.html", {"position": results, "login": check_logged_in(request)})
def positionlist_handler(request):
positionlist = return_all_positions('./database/seekers_personal.db')
render(request, "positionlist.html", {"position": positionlist, "login": check_logged_in(request)})
def position_handler(request, page_id):
position_information = get_position('./database/seekers_personal.db', page_id)
render(request, "positioninformation.html", {'position': position_information, "login": check_logged_in(request)})
def map_handler(request):
request.write("Page Under Construction")
def login_handler(request):
render(request, "login.html", {"error": "", "login": check_logged_in(request)})
def post_login_handler(request):
user = get_seeker_by_username('./database/seekers_personal.db', request.get_field('username'))
if user:
# check if password is correct
if user.password == request.get_field('password'):
request.set_secure_cookie('user_id', str(user.id))
request.redirect("/")
else:
render(request, "login.html", {"error":"Incorrect password", "login": check_logged_in(request)})
else:
render(request, "login.html", {"error":"Incorrect username", "login": check_logged_in(request)})
def check_logged_in(request):
user_id = request.get_secure_cookie('user_id')
print(user_id)
if user_id:
return get_seeker('./database/seekers_personal.db', user_id.decode("UTF-8"))
def logout_handler(request):
request.clear_cookie('user_id')
request.redirect('/')
# Handler to display the form
def profile_creator_handler(request):
render(request, 'createprofile.html',{"login": check_logged_in(request)})
# Handler for creating a new profile (for submiting the form, handle the returned post)
def finished_profile_handler(request):
#add username later
profile_fields = ['fname', 'lname', 'birthdate', 'phone', 'email', 'city', 'education', 'hobbies', 'skills', 'username', 'password', 'bio']
field = []
password = request.get_field('password')
confpass = request.get_field('passwordconf')
if password != confpass:
request.redirect('/profilecreation/')
for f in profile_fields:
field.append(request.get_field(f))
user = create_seeker('./database/seekers_personal.db', field)
request.set_secure_cookie('user_id', str(user.id))
request.redirect('/')
def pagenotfound_handler(request):
render(request, 'pagenotfound.html', {"login": check_logged_in(request)})
server = Server() # Create a server object
server.register(r'/', index_handler)
try:
from chatbot.ai import ChatBotWebSockets
# def chat_handler (request):
# return render(request, 'chatbot/chat.html', {"login": check_logged_in(request)})
server.register(r'/ws/', ChatBotWebSockets)
# server.register(r'/chat/', chat_handler)
except ImportError:
pass
server.register(r'/profile/',profilelistpage_handler)
server.register(r'/searchresult/(.*)/(.+)/', searchresult_handler)
server.register(r'/position/', positionlist_handler)
server.register(r'/position/(\d+)/', position_handler) # Dynamic page | takes in a user id which is used
server.register(r'/profile/(\d+)/', profile_handler) # Dynamic page | takes in a user id which is used
#server.register(r'/map/', map_handler)
server.register(r'/signup/', profile_creator_handler, post = finished_profile_handler)
server.register(r'/login/', login_handler, post = post_login_handler)
server.register(r'/logout/', logout_handler)
server.register(r'/.*', pagenotfound_handler)
server.run() # Runs Server