-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.py
145 lines (117 loc) · 3.81 KB
/
server.py
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
133
134
135
136
137
138
139
140
141
142
143
144
145
import src.web as web
from src.globals import *
from src.display import *
from src.lesson import *
from src.quiz import *
from src.login import *
from src.summary import *
from src.course_admin import *
from src.utils import *
from os.path import exists
web.config.debug = True
urls = ('/', 'main',
'/logout', 'logout',
'/register_admin', 'register_admin',
'/register', 'register',
'/admin_login', 'admin_login',
'/admin', 'admin',
'/display', 'display',
'/summary', 'summary',
'/lesson', 'lesson',
'/quiz', 'quiz',
'/course_control', 'course_control',
'/edit_page', 'edit_page',
'/new_page', 'new_page',
'/up', 'up',
'/down', 'down')
"""
, 'main',
'/logout/',
'/register/',
'/summary/', '/admin/', '/admin_login/')
"""
class main:
def GET(self):
my_signin = signin_form()
session = web.config.get('_session')
if (isStudent(session.user) or isAdmin(session.user)):
raise web.seeother('/summary')
return render.main(session.user, my_signin)
def POST(self):
my_signin = signin_form()
if not my_signin.validates():
return render.main(session.user, my_signin)
else:
session.user = my_signin['username'].value
raise web.seeother('/summary')
class logout:
def GET(self):
web.debug('[USER] %s logged out' % (session.user))
session.kill()
raise web.seeother('/')
class admin_login:
def GET(self):
my_signin = admin_signin_form()
return render.admin_login(session.user, my_signin)
def POST(self):
my_signin = admin_signin_form()
if not my_signin.validates():
return render.admin_login(session.user, my_signin)
else:
session.user = my_signin['username'].value
raise web.seeother('/admin')
class admin:
def GET(self):
if not isAdmin(session.user):
raise web.seeother('/admin_login')
return render.admin(getAdminPage())
def POST(self):
return self.GET()
class course_control:
def GET(self):
if not isAdmin(session.user):
raise web.seeother('/admin_login')
return render.course_control(getCourseTree())
def POST(self):
return self.GET()
class edit_page:
def GET(self):
if not isAdmin(session.user):
raise web.seeother('/admin_login')
data = web.input()
if 'page' in data and 'title' in data and 'code' in data:
process_edit_page(data)
raise web.seeother('/course_control')
edit_page = edit_page_form(data['page'])
return render.edit_page(edit_page, data['page'])
def POST(self):
return self.GET()
class new_page:
def GET(self):
if not isAdmin(session.user):
raise web.seeother('/admin')
data = web.input()
if 'page' in data and 'title' in data and 'code' in data:
make_new_page(data)
raise web.seeother('/course_control')
new_page = new_page_form()
return render.new_page(new_page, data['page'])
def POST(self):
return self.GET()
app = web.application(urls, globals(), True)
if web.config.get('_session') is None:
session = web.session.Session(app, web.session.DiskStore('sessions'),
initializer={'user': '!@#$%^&*anonymous*&^%$#@!'})
web.config._session = session
else:
session = web.config._session
if __name__ == "__main__":
if not exists('dbs'):
print "Creating database folder"
mkdir('dbs')
setup_dbs()
if not exists('requests'):
mkdir('requests')
mkdir('requests/quiz')
mkdir('requests/admin')
app.run()