def sign_up(): form = VolunteerSignUpForm() # On sign up give user 'volunteer' permission (+ managers etc.) if current_user.is_authenticated and VolunteerUser.get_for_user(current_user): return redirect(url_for('.account')) if request.method != 'POST' and current_user.is_authenticated: form.volunteer_email.data = current_user.email form.nickname.data = current_user.name form.volunteer_phone.data = current_user.phone # Can't copy age, as that's only submitted as part of the outreach questions if form.validate_on_submit(): if current_user.is_anonymous: create_current_user(form.volunteer_email.data, form.nickname.data) new_volunteer = VolunteerUser() new_volunteer.user_id = current_user.id new_volunteer = update_volunteer_from_form(new_volunteer, form) db.session.add(new_volunteer) current_user.grant_permission('volunteer:user') db.session.commit() app.logger.info('Add volunteer: %s', new_volunteer) flash('Thank you for signing up!', 'message') return redirect(url_for('.choose_role')) return render_template('volunteer/sign-up.html', user=current_user, form=form)
def sign_up(): form = VolunteerSignUpForm() if current_user.is_authenticated and VolunteerUser.get_for_user( current_user): return redirect(url_for(".schedule")) if request.method != "POST" and current_user.is_authenticated: form.volunteer_email.data = current_user.email form.nickname.data = current_user.name # Can't try to process age, as that's only submitted as part of the outreach questions if form.validate_on_submit(): if current_user.is_anonymous: create_current_user(form.volunteer_email.data, form.nickname.data) new_volunteer = VolunteerUser() new_volunteer.user_id = current_user.id new_volunteer = update_volunteer_from_form(new_volunteer, form) db.session.add(new_volunteer) # On sign up give user 'volunteer' permission (+ managers etc.) current_user.grant_permission("volunteer:user") db.session.commit() app.logger.info("Add volunteer: %s", new_volunteer) flash("Thank you for signing up!", "message") return redirect(url_for(".choose_role")) return render_template("volunteer/sign-up.html", user=current_user, form=form)
def account(): if current_user.is_anonymous: return redirect(url_for(".sign_up")) volunteer = VolunteerUser.get_for_user(current_user) if volunteer is None: return redirect(url_for(".sign_up")) form = VolunteerSignUpForm(obj=volunteer) form.arrival.choices = generate_arrival_options() form.departure.choices = generate_departure_options() if form.validate_on_submit(): update_volunteer_from_form(volunteer, form) db.session.commit() flash("Your details have been updated", "info") return redirect(url_for(".account")) form.arrival.data = volunteer.planned_arrival.strftime("%Y-%m-%d") form.departure.data = volunteer.planned_departure.strftime("%Y-%m-%d") form.allow_comms.data = volunteer.allow_comms_during_event return render_template("volunteer/account.html", user=current_user, form=form)
def post(self, id): request_data = request.json if Volunteer.query.filter_by(volunteer_id=id).first() is None: volunteer = Volunteer(name=request_data['name'], phone_number=request_data['phone_number'], volunteer_id=id) db.session.add(volunteer) db.session.commit() return { 'data': { 'id': 'volunteer', 'attributes': { 'id': volunteer.volunteer_id, 'name': volunteer.name, 'phone number': volunteer.phone_number } } }, 201 else: return { 'data': { 'id': 'volunteer', 'attributes': { 'error': "Volunteer already exists" } } }, 400
def send_email_to_volunteer(volunteer: Volunteer): subject = utils.compute_subject(volunteer) send_to = utils.compute_receiver(volunteer) if send_to: text = utils.compute_text(volunteer) # If volunteer does not belong to any registered group, send barcode image_file = settings.OTHER_GROUP_IMG_PATH if volunteer.no_org else None send_email(subject=subject, text=text, send_to=send_to, file=image_file) volunteer.mark_email_sent() else: print(f'{volunteer.name} no valid email address')
def make_recommondation_for_volunteer(volunteer: Volunteer, all_requestees: List[Requestee]) -> None: if volunteer.recommendation_made or volunteer.paired_student or ( not volunteer.active): return for requestee in all_requestees: if requestee.assigned or requestee.recommendation_made: continue if _legit_recommendation(volunteer, requestee): time_slot_recommendation = _legit_close_time_slot( volunteer, requestee) if time_slot_recommendation is not None: requestee.recommendation_made = True volunteer.recommend(requestee) print(f"Recommend {requestee} and {volunteer}") return
def sign_up(): form = VolunteerSignUpForm() form.arrival.choices = generate_arrival_options() form.departure.choices = generate_departure_options() if current_user.is_authenticated and VolunteerUser.get_for_user( current_user): return redirect(url_for(".account")) if request.method != "POST" and current_user.is_authenticated: form.volunteer_email.data = current_user.email form.nickname.data = current_user.name form.volunteer_phone.data = current_user.phone # Can't try to process age, as that's only submitted as part of the outreach questions if form.validate_on_submit(): if current_user.is_anonymous: create_current_user(form.volunteer_email.data, form.nickname.data) new_volunteer = VolunteerUser() new_volunteer.user_id = current_user.id new_volunteer = update_volunteer_from_form(new_volunteer, form) db.session.add(new_volunteer) # On sign up give user 'volunteer' permission (+ managers etc.) current_user.grant_permission("volunteer:user") db.session.commit() app.logger.info("Add volunteer: %s", new_volunteer) flash("Thank you for signing up!", "message") return redirect(url_for(".choose_role")) # Set form default arrival and departure dates to be start and end form.arrival.data = event_start().strftime("%F") form.departure.data = event_end().strftime("%F") return render_template("volunteer/sign-up.html", user=current_user, form=form)
def account(): if current_user.is_anonymous: return redirect(url_for(".sign_up")) volunteer = VolunteerUser.get_for_user(current_user) if volunteer is None: return redirect(url_for(".sign_up")) form = VolunteerSignUpForm(obj=volunteer) if form.validate_on_submit(): update_volunteer_from_form(volunteer, form) db.session.commit() flash("Your details have been updated", "info") return redirect(url_for(".account")) return render_template("volunteer/account.html", user=current_user, form=form)
def account(): if current_user.is_anonymous: return redirect(url_for('.sign_up')) volunteer = VolunteerUser.get_for_user(current_user) if volunteer is None: return redirect(url_for('.sign_up')) form = VolunteerSignUpForm(obj=volunteer) if form.validate_on_submit(): update_volunteer_from_form(volunteer, form) db.session.commit() flash('Your details have been updated', 'info') return redirect(url_for('.account')) form.arrival.data = volunteer.planned_arrival.strftime('%Y-%m-%d') form.departure.data = volunteer.planned_departure.strftime('%Y-%m-%d') form.allow_comms.data = volunteer.allow_comms_during_event return render_template('volunteer/account.html', user=current_user, form=form)
def reflect_previously_paired_result_of_requestee( paired_info: PairedInfo, previously_paired_requestee: Requestee, previously_paired_volunteer: Volunteer): if paired_info.volunteer_email_sent: previously_paired_volunteer.mark_email_sent( paired_info.email_sent_time_utc) previously_paired_volunteer.assign(previously_paired_requestee, paired_info.promised_time_slot) previously_paired_requestee.assign(previously_paired_volunteer, paired_info.promised_time_slot) else: previously_paired_volunteer.assign(previously_paired_requestee, paired_info.promised_time_slot) previously_paired_requestee.assign(previously_paired_volunteer, paired_info.promised_time_slot) print( f"Paired: {paired_info}, but email not sent, will resend this time" )
def main(): if current_user.is_authenticated and Volunteer.get_for_user(current_user): if current_user.shift_entries: return redirect("/volunteer/schedule?signedup") return redirect(url_for(".schedule")) return redirect(url_for(".sign_up"))