Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
 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
Пример #5
0
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')
Пример #6
0
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
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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"
        )
Пример #11
0
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"))