forked from xpt1x/PocketIMS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
application.py
139 lines (121 loc) · 4.8 KB
/
application.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
from flask import Flask, request, jsonify
from flask_cors import CORS
from uims_api import SessionUIMS
from uims_api.exceptions import IncorrectCredentialsError, UIMSInternalError
app = Flask(__name__)
CORS(app)
@app.route('/')
def home():
return 'OK!'
@app.route('/api/signin', methods=['POST'])
def signin():
if not request.form.get('uid'):
return jsonify({'error': 'UID not provided'})
if not request.form.get('password'):
return jsonify({'error': 'Password not provided'})
try:
SessionUIMS(request.form.get('uid'), request.form.get('password'))
except Exception as e:
if e.__class__ == IncorrectCredentialsError:
return jsonify({'error': 'Invalid credentials'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
else:
return jsonify({'success': True})
@app.route('/api/attendance', methods=['POST'])
def get_minimal_attendance():
if not request.form.get('uid'):
return jsonify({'error': 'UID not provided'})
if not request.form.get('password'):
return jsonify({'error': 'Password not provided'})
try:
my_acc = SessionUIMS(request.form.get(
'uid'), request.form.get('password'))
except Exception as e:
if e.__class__ == IncorrectCredentialsError:
return jsonify({'error': 'Invalid credentials'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
try:
subjects = my_acc.attendance
except Exception as e:
if e.__class__ == UIMSInternalError:
return jsonify({'error': 'UIMS Internal Failure'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
else:
return jsonify(subjects)
@app.route('/api/fullattendance', methods=['POST'])
def get_full_attendance():
if not request.form.get('uid'):
return jsonify({'error': 'UID not provided'})
if not request.form.get('password'):
return jsonify({'error': 'Password not provided'})
try:
my_acc = SessionUIMS(request.form.get(
'uid'), request.form.get('password'))
except Exception as e:
if e.__class__ == IncorrectCredentialsError:
return jsonify({'error': 'Invalid credentials'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
try:
subjects = my_acc.full_attendance
except Exception as e:
if e.__class__ == UIMSInternalError:
return jsonify({'error': 'UIMS Internal Failure'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
else:
return jsonify(subjects)
@app.route('/api/timetable', methods=['POST'])
def get_timetable():
if not request.form.get('uid'):
return jsonify({'error': 'UID not provided'})
if not request.form.get('password'):
return jsonify({'error': 'Password not provided'})
try:
my_acc = SessionUIMS(request.form.get(
'uid'), request.form.get('password'))
except Exception as e:
if e.__class__ == IncorrectCredentialsError:
return jsonify({'error': 'Invalid credentials'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
try:
timetable = my_acc.timetable
except Exception as e:
if e.__class__ == UIMSInternalError:
return jsonify({'error': 'UIMS Internal Failure'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
else:
return jsonify(timetable)
@app.route('/api/announcements/<int:page>', methods=['POST'])
def get_announcement_page(page=1):
if not request.form.get('uid'):
return jsonify({'error': 'UID not provided'})
if not request.form.get('password'):
return jsonify({'error': 'Password not provided'})
try:
my_acc = SessionUIMS(request.form.get(
'uid'), request.form.get('password'))
except Exception as e:
if e.__class__ == IncorrectCredentialsError:
return jsonify({'error': 'Invalid credentials'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
try:
ann_page = my_acc.annoucements(page)
except Exception as e:
if e.__class__ == UIMSInternalError:
return jsonify({'error': 'UIMS Internal Failure'})
else:
return jsonify({'error': 'Looks like this Module is inactive on UIMS'})
else:
return jsonify(ann_page)
if __name__ == '__main__':
# This is used when running locally. Gunicorn is used to run the
# application on Google App Engine. See entrypoint in app.yaml.
app.run(host='127.0.0.1', port=5000, debug=True)
# [END gae_flex_python_static_files]