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)
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
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)
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")
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)
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)
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)
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)
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()
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)
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()