Beispiel #1
0
def register(user_type):

    if current_user.is_authenticated:
        return redirect(url_for('deliveries', username=current_user.username))

    form = RecipientRegistrationForm(
    ) if user_type == 'recipient' else VolunteerRegistrationForm()
    header = f'{user_type.capitalize()} Registration'

    if form.validate_on_submit():
        if user_type == 'volunteer':
            user = Volunteer(name=form.name.data,
                             username=form.username.data,
                             email=form.email.data,
                             phone=form.phone.data)
        elif user_type == 'recipient':
            user = Recipient(name=form.name.data,
                             username=form.username.data,
                             email=form.email.data,
                             phone=form.phone.data,
                             address=form.address.data,
                             address_notes=form.address_notes.data)

        user.set_password(form.password.data)
        db.session.add(user)
        db.session.commit()
        flash('Thank you for registering for Hanover Helpers!')
        login_user(user)
        return redirect(url_for('deliveries', username=current_user.username))

    return render_template('standard_form.html', header=header, form=form)
Beispiel #2
0
 def test_delete_user(self):
     v = Volunteer(username='******')
     db.session.add(v)
     db.session.commit()
     self.assertIn(v, Volunteer.query.all())
     db.session.delete(v)
     db.session.commit()
     self.assertNotIn(v, Volunteer.query.all())
     all_userdir_ids = [u.id for u in UserDirectory.query.all()]
     self.assertNotIn(v.userdir_id, all_userdir_ids)
 def post(self):
     data = request.get_json()
     try:
         volunteer = Volunteer(tournament_id=data.get("tournament_id"), \
                             user_id=Security.get_current_user().id)
         db.session.add(volunteer)
         db.session.commit()
     except IntegrityError:
         db.session.rollback()
         return "You've already signed up for this event"
     return None, 201
Beispiel #4
0
def new_volunteer():
    form = VolunteerForm(request.form)
    if request.method == 'POST' and form.validate():

        new_volunteer = Volunteer(name=form.name.data,
                                  email=form.email.data,
                                  role=form.role.data)

        db.session.add(new_volunteer)
        db.session.commit()

        flash('Volunteer ' + new_volunteer.name + ' added!', 'success')

        return redirect(url_for('index'))
    return render_template('volunteer_form.html', form=form)
Beispiel #5
0
def create_volunteer_post():
    form = VolunteerForm()
    if form.validate_on_submit():
        postImage = ""
        if form.postImage.data:
            postImage = save_post_image(form.postImage.data)
        post = Volunteer(Title=form.title.data,
                         Content=form.content.data,
                         ImageFile=postImage)
        db.session.add(post)
        db.session.commit()
        flash("Succesfully Posted!", category='success')
        return redirect(url_for('main.volunteer'))

    return render_template('volunteer/create-volunteer-post.html',
                           form=form,
                           title="Make a story")
Beispiel #6
0
 def test_transaction_assign_recipient_volunteer(self):
     t = Transaction()
     r = Recipient(username='******')
     v = Volunteer(username='******')
     db.session.add_all([t, r, v])
     db.session.commit()
     t.assign_recipient(r)
     self.assertEqual(t.recipient, r)
     self.assertEqual(t.recipient_id, r.id)
     self.assertFalse(t.claimed)
     self.assertEqual(r.transactions[0], t)
     t.assign_volunteer(v)
     db.session.add(t)
     db.session.commit()
     self.assertEqual(t.volunteer, v)
     self.assertEqual(t.volunteer_id, v.id)
     self.assertTrue(t.claimed)
     self.assertEqual(v.transactions[0], t)
Beispiel #7
0
def new_volunteer():
    form = VolunteerForm(request.form)
    if request.method == 'POST' and form.validate():
        new_volunteer = Volunteer(name=form.name.data,
                                  email=form.email.data,
                                  role=form.role.data,
                                  active=True)

        db.session.add(new_volunteer)
        db.session.commit()
        # try:
        #     db.session.add(new_volunteer)
        #     db.session.commit()
        # except exc.SQLAlchemyError:
        #     return '<h1>NOPE</h1>'

        flash('Volunteer %s added!' % new_volunteer.name, 'success')

        return redirect(url_for('volunteers.index'))
    return render_template('volunteer_form.html', form=form)
Beispiel #8
0
def register():
    """Register a new user, and send them a confirmation email."""
    form = RegistrationForm()
    if form.is_submitted():
        print("submitted")

    if form.validate_on_submit():
        print("valid")

    print(form.errors)
    if form.validate_on_submit():
        user = User(
            first_name=form.first_name.data,
            last_name=form.last_name.data,
            email=form.email.data,
            password=form.password.data,
            phone_number=form.phone_number.data,
            street=form.street.data,
            city=form.city.data,
            state=form.state.data,
            zip_code = form.zip_code.data,
            organization_corporation=form.organization_corporation.data,
            pa_residency =form.pa_residency.data,
            confirmed=False,
            role_id=1)
        db.session.add(user)
        if form.pa_residency.data == "Yes":
            volunteer = Volunteer(
                first_name=form.first_name.data,
                last_name=form.last_name.data,
                email=form.email.data,
                phone_number=form.phone_number.data,
                address_street=form.street.data,
                address_city=form.city.data,
                address_state=form.state.data,
                address_zip_code = form.zip_code.data,
                organization = form.organization_corporation.data,
                year_pa = form.pa_residency.data,
                status1=Status.NOT_SUBMITTED,
                status2=Status.NOT_SUBMITTED,
                status3=Status.NOT_NEEDED,
                status4=Status.NOT_SUBMITTED
            )
        if form.pa_residency.data == "No":
            volunteer = Volunteer(
                first_name=form.first_name.data,
                last_name=form.last_name.data,
                email=form.email.data,
                phone_number=form.phone_number.data,
                address_street=form.street.data,
                address_city=form.city.data,
                address_state=form.state.data,
                address_zip_code = form.zip_code.data,
                organization = form.organization_corporation.data,
                year_pa = form.pa_residency.data,
                status1=Status.NOT_SUBMITTED,
                status2=Status.NOT_SUBMITTED,
                status3=Status.NOT_SUBMITTED,
                status4=Status.NOT_SUBMITTED
            )
        db.session.add(volunteer)
        # db.session.query(user)
        db.session.commit()

        token = user.generate_confirmation_token()
        confirm_link = url_for('account.confirm', token=token, _external=True)
        get_queue().enqueue(
            send_email,
            recipient=user.email,
            subject='Confirm Your Account',
            template='account/email/confirm',
            user=user,
            confirm_link=confirm_link)
        flash('A confirmation link has been sent to {}.'.format(user.email),
              'warning')
        return redirect(url_for('main.index'))
    return render_template('account/register.html', form=form)
Beispiel #9
0
def new_volunteer():
    """Create a new volunteer."""
    form = NewVolunteerForm()
    if form.is_submitted():
        print("submitted")

    if form.validate_on_submit():
        print("valid")

    print(form.errors)
    if form.validate_on_submit():
        user = User(
            role_id=1,
            first_name=form.first_name.data,
            last_name=form.last_name.data,
            email=form.email.data,
            password=form.password.data,
            phone_number=form.phone_number.data,
            street=form.street.data,
            city=form.city.data,
            state=form.state.data,
            zip_code=form.zip_code.data,
            organization_corporation=form.organization_corporation.data,
            pa_residency=form.pa_residency.data,
            confirmed=True)
        db.session.add(user)
        if form.pa_residency.data == "Yes":
            volunteer = Volunteer(
                first_name=form.first_name.data,
                last_name=form.last_name.data,
                email=form.email.data,
                phone_number=form.phone_number.data,
                address_street=form.street.data,
                address_city=form.city.data,
                address_state=form.state.data,
                address_zip_code=form.zip_code.data,
                organization=form.organization_corporation.data,
                year_pa=form.pa_residency.data,
                status1=Status.NOT_SUBMITTED,
                status2=Status.NOT_SUBMITTED,
                status3=Status.NOT_NEEDED,
                status4=Status.NOT_SUBMITTED)
        if form.pa_residency.data == "No":
            volunteer = Volunteer(
                first_name=form.first_name.data,
                last_name=form.last_name.data,
                email=form.email.data,
                phone_number=form.phone_number.data,
                address_street=form.street.data,
                address_city=form.city.data,
                address_state=form.state.data,
                address_zip_code=form.zip_code.data,
                organization=form.organization_corporation.data,
                year_pa=form.pa_residency.data,
                status1=Status.NOT_SUBMITTED,
                status2=Status.NOT_SUBMITTED,
                status3=Status.NOT_SUBMITTED,
                status4=Status.NOT_SUBMITTED)
        db.session.add(volunteer)
        db.session.commit()
        flash('Volunteer {} successfully created'.format(user.full_name()),
              'form-success')
        return redirect(url_for('main.index'))
    return render_template('admin/new_volunteer.html',
                           form=form,
                           is_volunteer=True)
Beispiel #10
0
def view_clearances():
    """View all volunteer clearances."""
    volunteers = Volunteer.query.all()
    now = datetime.now()
    exp_arr = []
    for v in volunteers:
        if v.clearance_expiration:
            split_arr = v.clearance_expiration.split('-')
            if len(split_arr) != 3:
                exp_arr.append("NA")
            else:
                exp = datetime(int(split_arr[0]), int(split_arr[1]),
                               int(split_arr[2]))
                delta = now - exp
                if delta.days > -60:
                    exp_arr.append("Yes")
                else:
                    exp_arr.append("No")
        else:
            exp_arr.append("NA")
    """Download CSV with all volunteer information"""
    download_csv_form = DownloadCSVForm()
    upload_csv_form = UploadCSVForm()

    if request.method == 'POST':
        if request.form.get('download_csv'):

            csv_file = io.StringIO()
            csv_writer = csv.writer(csv_file)
            filename = 'volunteers' + datetime.now().strftime(
                "%Y%m%d-%H%M%S") + '.csv'

            csv_writer.writerow([
                'First Name', 'Last Name', 'Email', 'Phone Number',
                'Address Street', 'City', 'State', 'Zip Code', 'Organization',
                'Over 10 years in PA', 'Clearance Expiration Date',
                'PA State Police Check Status', 'Comment 1',
                '(Link) PA State Police Check', 'PA Childlink', 'Comment 2',
                '(Link) PA Childlink', 'FBI Clearance', 'Comment 3',
                '(Link) FBI Clearance', 'Conflict of Interest', 'Comment 4',
                '(Link) Conflict of Interest'
            ])

            for v in volunteers:
                csv_writer.writerow([
                    v.first_name,
                    v.last_name,
                    v.email,
                    v.phone_number,
                    v.address_street,
                    v.address_city,
                    v.address_state,
                    v.address_zip_code,
                    v.organization,
                    v.year_pa,
                    v.clearance_expiration,
                    str(v.status1),
                    v.comment1,
                    v.link1,
                    str(v.status2),
                    v.comment2,
                    v.link2,
                    str(v.status3),
                    v.comment3,
                    v.link3,
                    str(v.status4),
                    v.comment4,
                    v.link4,
                ])

            csv_bytes = io.BytesIO()
            csv_bytes.write(csv_file.getvalue().encode('utf-8'))
            csv_bytes.seek(0)

            # Send file for download.
            return send_file(csv_bytes,
                             as_attachment=True,
                             attachment_filename=filename,
                             mimetype='text/csv')

        else:
            f = request.files['volunteer-file']
            name = f.filename
            stream = io.StringIO(f.stream.read().decode("UTF8"), newline=None)
            csv_input = csv.reader(stream)
            header_row = True

            for row in csv_input:
                if header_row:
                    header_row = False
                    continue

                u = User(first_name=row[0],
                         last_name=row[1],
                         email=row[2],
                         phone_number=row[3],
                         street=row[4],
                         city=row[5],
                         state=row[6],
                         zip_code=row[7],
                         organization_corporation=row[8],
                         pa_residency=row[9],
                         password='******',
                         confirmed=True,
                         role_id=1)

                db.session.add(u)

                if 'Y' in row[9]:
                    status3 = Status.NOT_NEEDED
                else:
                    status3 = Status.NOT_SUBMITTED

                v = Volunteer(first_name=row[0],
                              last_name=row[1],
                              email=row[2],
                              phone_number=row[3],
                              address_street=row[4],
                              address_city=row[5],
                              address_state=row[6],
                              address_zip_code=row[7],
                              organization=row[8],
                              year_pa=row[9],
                              clearance_expiration=row[10],
                              status1=Status.NOT_SUBMITTED,
                              comment1='',
                              link1='',
                              status2=Status.NOT_SUBMITTED,
                              comment2='',
                              link2='',
                              status3=status3,
                              comment3='',
                              link3='',
                              status4=Status.CLEARED,
                              comment4='',
                              link4='')

                db.session.add(v)

                try:
                    db.session.commit()
                except IntegrityError:
                    db.session.rollback()

    return render_template('admin/view_clearances.html',
                           volunteers=volunteers,
                           download_csv_form=download_csv_form,
                           upload_csv_form=upload_csv_form,
                           exp_arr=exp_arr)
 def make_volunteer(self, data, **kwargs):
     return Volunteer(**data)
    def generate_fake(count=100, **kwargs):
        """Generate a number of fake users for testing."""
        from sqlalchemy.exc import IntegrityError
        from random import seed, choice
        import random
        import enum
        import datetime
        from faker import Faker
        from app.models import Volunteer, Status

        fake = Faker()
        roles = Role.query.all()
        now = datetime.datetime.now()
        seed()

        for i in range(count):
            fake_first_name = fake.first_name()
            fake_last_name = fake.last_name()
            fake_email = fake.email()
            fake_phone_number = fake.phone_number().replace('-', '')
            fake_street = fake.street_address()
            fake_city = fake.city()
            fake_state = fake.state_abbr(include_territories=True)
            fake_zip_code = fake.zipcode()
            fake_organization = fake.company()
            fake_clearance_exp = fake.date(pattern='%Y-%m-%d',
                                           end_datetime=None)
            fake_residency = random.choice(["Yes", "No"])
            user_role = choice(roles)

            u = User(first_name=fake_first_name,
                     last_name=fake_last_name,
                     email=fake_email,
                     phone_number=fake_phone_number,
                     street=fake_street,
                     city=fake_city,
                     state=fake_state,
                     zip_code=fake_zip_code,
                     organization_corporation=fake_organization,
                     pa_residency=fake_residency,
                     password='******',
                     confirmed=True,
                     role=user_role,
                     **kwargs)

            # User is only assigned as a volunteer if its user_role is 'Volunteer'
            if (user_role.name == 'Volunteer'):
                if (i < 5):
                    v = Volunteer(first_name=fake_first_name,
                                  last_name=fake_last_name,
                                  email=fake_email,
                                  phone_number=fake_phone_number,
                                  address_street=fake_street,
                                  address_city=fake_city,
                                  address_state=fake_state,
                                  address_zip_code=fake_zip_code,
                                  organization=fake_organization,
                                  year_pa=fake_residency,
                                  clearance_expiration=fake_clearance_exp,
                                  status1=Status.CLEARED,
                                  comment1=fake.text(max_nb_chars=100,
                                                     ext_word_list=None),
                                  link1=fake.uri(),
                                  status2=Status.CLEARED,
                                  comment2=fake.text(max_nb_chars=100,
                                                     ext_word_list=None),
                                  link2=fake.uri(),
                                  status3=Status.CLEARED,
                                  comment3=fake.text(max_nb_chars=100,
                                                     ext_word_list=None),
                                  link3=fake.uri(),
                                  status4=Status.CLEARED,
                                  comment4=fake.text(max_nb_chars=100,
                                                     ext_word_list=None),
                                  link4=fake.uri(),
                                  **kwargs)
                else:
                    v = Volunteer(first_name=fake_first_name,
                                  last_name=fake_last_name,
                                  email=fake_email,
                                  phone_number=fake_phone_number,
                                  address_street=fake_street,
                                  address_city=fake_city,
                                  address_state=fake_state,
                                  address_zip_code=fake_zip_code,
                                  organization=fake_organization,
                                  year_pa=fake_residency,
                                  clearance_expiration=fake_clearance_exp,
                                  status1=random.choice(list(Status)),
                                  comment1=fake.text(max_nb_chars=100,
                                                     ext_word_list=None),
                                  link1=fake.uri(),
                                  status2=random.choice(list(Status)),
                                  comment2=fake.text(max_nb_chars=100,
                                                     ext_word_list=None),
                                  link2=fake.uri(),
                                  status3=random.choice(list(Status)),
                                  comment3=fake.text(max_nb_chars=100,
                                                     ext_word_list=None),
                                  link3=fake.uri(),
                                  status4=random.choice(list(Status)),
                                  comment4=fake.text(max_nb_chars=100,
                                                     ext_word_list=None),
                                  link4=fake.uri(),
                                  **kwargs)

            db.session.add(u)
            # User is only assigned as a volunteer if its user_role is 'Volunteer'
            if (user_role.name == 'Volunteer'):
                db.session.add(v)

            try:
                db.session.commit()
            except IntegrityError:
                db.session.rollback()
Beispiel #13
0
 def test_register_volunteer(self):
     v = Volunteer(username='******')
     db.session.add(v)
     db.session.commit()
     self.assertEqual(Volunteer.query.first(), v)
     self.assertEqual(UserDirectory.query.first().id, v.userdir_id)
Beispiel #14
0
def add_volunteers(json_path):
    volunteers = read_json(json_path)
    for id, data in volunteers.items():
        volunteer = Volunteer(id=id, name=data['name'], userpic=data['userpic'], phone=data['phone'])
        db.session.add(volunteer)
    db.session.commit()