Skip to content

Commit 3b382be

Browse files
committed
Redirect to volunteer sign-up if appropriate
1 parent d0a6601 commit 3b382be

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

apps/volunteer/__init__.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,32 @@
1-
from flask import Blueprint, request
1+
from decorator import decorator
22

3-
from ..common import require_permission
3+
from flask import Blueprint, request, current_app as app, redirect, url_for, abort
4+
from flask_login import current_user
5+
6+
from models.volunteer import Volunteer
47

58
volunteer = Blueprint("volunteer", __name__)
69

10+
11+
# This is like require_permission but redirects to volunteer sign-up
12+
def require_volunteer_permission(permission):
13+
def call(f, *args, **kwargs):
14+
if current_user.is_authenticated:
15+
if not Volunteer.get_for_user(current_user):
16+
return redirect(url_for("volunteer.sign_up", next=request.path))
17+
if current_user.has_permission(permission):
18+
return f(*args, **kwargs)
19+
abort(404)
20+
return app.login_manager.unauthorized()
21+
22+
return decorator(call)
23+
24+
725
# User basically means they have signed up
826
# These aren't needed for the admin views as they have their auth baked in.
9-
v_user_required = require_permission("volunteer:user")
10-
v_admin_required = require_permission("volunteer:admin")
11-
v_manager_required = require_permission("volunteer:manager")
27+
v_user_required = require_volunteer_permission("volunteer:user")
28+
v_admin_required = require_volunteer_permission("volunteer:admin")
29+
v_manager_required = require_volunteer_permission("volunteer:manager")
1230

1331

1432
@volunteer.context_processor

apps/volunteer/sign_up.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from ..common.forms import Form
2121
from ..common.fields import TelField
2222
from ..common import create_current_user, feature_flag
23+
from apps.users import get_next_url
2324

2425

2526
class VolunteerSignUpForm(Form):
@@ -82,7 +83,8 @@ def sign_up():
8283
db.session.commit()
8384
app.logger.info("Add volunteer: %s", new_volunteer)
8485
flash("Thank you for signing up!", "message")
85-
return redirect(url_for(".choose_role"))
86+
87+
return redirect(get_next_url(default=url_for(".choose_role")))
8688

8789
return render_template("volunteer/sign-up.html", user=current_user, form=form)
8890

0 commit comments

Comments
 (0)