|
|
@ -42,14 +42,16 @@ class Paper(db.Model): |
|
|
|
if __name__ == "__main__": |
|
|
|
db.create_all() |
|
|
|
|
|
|
|
def login_required(f): |
|
|
|
@wraps(f) |
|
|
|
def df(*args, **kwargs): |
|
|
|
username = session.get('username') |
|
|
|
if not username or (not C.allow_guest_upload and username.startswith('guest~')): |
|
|
|
return redirect(url_for('login')) |
|
|
|
return f(*args, **kwargs, username=username) |
|
|
|
return df |
|
|
|
def login_required(allow_guest=True): |
|
|
|
def login_required_instance(f): |
|
|
|
@wraps(f) |
|
|
|
def df(*args, **kwargs): |
|
|
|
username = session.get('username') |
|
|
|
if not username or (not allow_guest and username.startswith('guest~')): |
|
|
|
return redirect(url_for('login')) |
|
|
|
return f(*args, **kwargs, username=username) |
|
|
|
return df |
|
|
|
return login_required_instance |
|
|
|
|
|
|
|
@app.route('/pastExam/login/') |
|
|
|
def login(): |
|
|
@ -57,7 +59,7 @@ def login(): |
|
|
|
|
|
|
|
@app.route('/pastExam/login/guest/') |
|
|
|
def guest_login(): |
|
|
|
return render_template('guest-login.html', vs=C.verify) |
|
|
|
return render_template('guest-login.html', vs=C.verify, allow_guest_upload=C.allow_guest_upload) |
|
|
|
|
|
|
|
@app.route('/pastExam/login/guest/verify', methods=['POST']) |
|
|
|
@limiter.limit("10 / hour") |
|
|
@ -67,14 +69,14 @@ def guest_login_send(): |
|
|
|
return '错误!', 401 |
|
|
|
|
|
|
|
if 'uid' not in session: |
|
|
|
session['uid'] = random.randint(0, 100000) |
|
|
|
session['uid'] = random.randint(0, 10000000) |
|
|
|
|
|
|
|
session['username'] = 'guest~%s' % session['uid'] |
|
|
|
session.permanent = True |
|
|
|
return {'r':0} |
|
|
|
|
|
|
|
@app.route('/pastExam/') |
|
|
|
@login_required |
|
|
|
@login_required() |
|
|
|
def list(username): |
|
|
|
course = request.args.get('course') |
|
|
|
teacher = request.args.get('teacher') |
|
|
@ -109,7 +111,7 @@ def check_length(x, limit=30, allow_null=False): |
|
|
|
|
|
|
|
@app.route('/pastExam/upload', methods=['POST']) |
|
|
|
@limiter.limit("10 / hour") |
|
|
|
@login_required |
|
|
|
@login_required(allow_guest=C.allow_guest_upload) |
|
|
|
def upload(username): |
|
|
|
name = request.form.get('name') |
|
|
|
teacher = request.form.get('teacher') |
|
|
@ -155,9 +157,10 @@ def upload(username): |
|
|
|
return redirect('.#part2') |
|
|
|
|
|
|
|
@app.route('/pastExam/<pid>/download') |
|
|
|
@login_required |
|
|
|
@login_required() |
|
|
|
def download(pid, username): |
|
|
|
p = Paper.query.get_or_404(pid) |
|
|
|
# TODO: download number |
|
|
|
return redirect(C.ipfs_base_url + p.file_hash, code=301) # 301减少不必要的请求 |
|
|
|
|
|
|
|
# TODO like |