From 7bd71879d1b95dab9f1393f814cb79a58abb3a16 Mon Sep 17 00:00:00 2001 From: Jon Wood Date: Mon, 13 May 2024 21:22:01 +0000 Subject: [PATCH] Give volunteer admins the same shift signup UI It was very clunky for a volunteer admin to sign up to shifts for themselves, because the button to do so was replaced with a details button. That's now a link from the start time. Also, an unintended formatting pass on schedule.py. --- apps/volunteer/schedule.py | 25 +++++------------- templates/volunteer/schedule.html | 44 ++++++++++++++++++------------- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/apps/volunteer/schedule.py b/apps/volunteer/schedule.py index 4dfa8ac0f..28a1e2a1c 100644 --- a/apps/volunteer/schedule.py +++ b/apps/volunteer/schedule.py @@ -75,9 +75,7 @@ def schedule(): venues = VolunteerVenue.get_all() untrained_roles = [ - r - for r in roles - if r["is_interested"] and r["requires_training"] and not r["is_trained"] + r for r in roles if r["is_interested"] and r["requires_training"] and not r["is_trained"] ] return render_template( @@ -97,9 +95,7 @@ def shift(shift_id): shift = Shift.query.get_or_404(shift_id) all_volunteers = Volunteer.query.order_by(Volunteer.nickname).all() - return render_template( - "volunteer/shift.html", shift=shift, all_volunteers=all_volunteers - ) + return render_template("volunteer/shift.html", shift=shift, all_volunteers=all_volunteers) @volunteer.route("/shift//sign-up", methods=["POST"]) @@ -107,7 +103,7 @@ def shift(shift_id): @v_user_required def shift_sign_up(shift_id): shift = Shift.query.get_or_404(shift_id) - if current_user.has_permission("volunteer:admin") and request.form["user_id"]: + if current_user.has_permission("volunteer:admin") and "user_id" in request.form: user = User.query.get(request.form["user_id"]) else: user = current_user @@ -119,17 +115,10 @@ def shift_sign_up(shift_id): return redirect_next_or_schedule(f"Signed up for {shift.role.name} shift") if shift.current_count >= shift.max_needed: - return redirect_next_or_schedule( - "This shift is already full. You have not been signed up." - ) - - if ( - shift.role.requires_training - and shift.role not in Volunteer.get_for_user(current_user).trained_roles - ): - return redirect_next_or_schedule( - "You must complete training before you can sign up for this shift." - ) + return redirect_next_or_schedule("This shift is already full. You have not been signed up.") + + if shift.role.requires_training and shift.role not in Volunteer.get_for_user(current_user).trained_roles: + return redirect_next_or_schedule("You must complete training before you can sign up for this shift.") for shift_entry in user.shift_entries: if shift.is_clash(shift_entry.shift): diff --git a/templates/volunteer/schedule.html b/templates/volunteer/schedule.html index 4249e4061..ad70282e6 100644 --- a/templates/volunteer/schedule.html +++ b/templates/volunteer/schedule.html @@ -73,27 +73,35 @@

Pick your shifts

{% else %} {{ hour }} {% endif %} - {{ shift.end_time if shift.end else '--' }} - {{ hour }}{% if shift.end %} to {{ shift.end_time }}{% endif %} + + {% if current_user.has_permission("volunteer:admin") %} + {{ shift.end_time if shift.end else '--' }} + {% else %} + {{ shift.end_time if shift.end else '--' }} + {% endif %} + + + {% if current_user.has_permission("volunteer:admin") %} + {{ hour }}{% if shift.end %} to {{ shift.end_time }}{% endif %} + {% else %} + {{ hour }}{% if shift.end %} to {{ shift.end_time }}{% endif %} + {% endif %} + {{ shift.venue.name }} {{ shift.role.name }} {{ shift.current_count }}/{{ shift.max_needed }} - {% if current_user.has_permission("volunteer:admin") %} - Details - {% else %} - - {%- if shift.is_user_shift -%} -
- -
- {%- else -%} -
- -
- {%- endif -%} - - - {% endif %} + + {%- if shift.is_user_shift -%} +
+ +
+ {%- else -%} +
+ +
+ {%- endif -%} + + {% endfor %} {% endfor %}