forked from xpt1x/SnapAttendance
-
Notifications
You must be signed in to change notification settings - Fork 0
/
application.py
65 lines (56 loc) · 2.15 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
from flask import Flask, render_template, request, jsonify, redirect
from flask_cors import CORS
from uims_api import SessionUIMS
from uims_api.exceptions import IncorrectCredentialsError, UIMSInternalError
import logging
# For production using build
app = Flask(__name__)
CORS(app)
@app.route('/api/attendance', methods=['POST'])
def get_data():
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'})
try:
subjects = my_acc.attendance
except Exception as e:
if e.__class__ == UIMSInternalError:
return jsonify({'error': 'UIMS Internal Failure'})
else:
return jsonify(subjects)
@app.route('/api/fullattendance', methods=['POST'])
def get_full_data():
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'})
try:
subjects = my_acc.full_attendance
except Exception as e:
if e.__class__ == UIMSInternalError:
return jsonify({'error': 'UIMS Internal Failure'})
else:
return jsonify(subjects)
@app.errorhandler(500)
def server_error(e):
logging.exception('An error occurred during a request.')
return """
An internal error occurred: <pre>{}</pre>
See logs for full stacktrace.
""".format(e), 500
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=8080, debug=True)
# [END gae_flex_python_static_files]