Example #1
0
def main():
    """Main function for populating the database"""
    donors = [('Toni Morrison', random.sample(range(100, 25000), 3)),
              ('Mike McHargue', random.sample(range(100, 25000), 3)),
              ("Flannery O'Connor", random.sample(range(100, 25000), 3)),
              ('Angelina Davis', random.sample(range(100, 25000), 3)),
              ('Bell Hooks', random.sample(range(100, 25000), 3))]

    db.connect()
    db.drop_tables([Donor, Donation])
    db.create_tables([Donor, Donation])
    bcrypt = Bcrypt()

    for donor, donations in donors:
        try:
            Donor.create(name=donor,
                         email='.'.join(donor.lower().split()) + '@gmail.com',
                         password=bcrypt.generate_password_hash('password'),
                         total=sum(donations),
                         average=sum(donations) / len(donations))
        except:
            db.rollback()

    for donor, donations in donors:
        for donation in donations:
            try:
                Donation.create(donor=donor, amount=donation)
            except:
                db.rollback()
Example #2
0
def create():
    """If the handler receives a GET request,
    then it should render the template for the donation creation page.

    If the handler receives a POST request (a form submission),
    then it should attempt to retrieve the name of the donor and the
    amount of the donation from the form submission.
    It should retrieve the donor from the database with the indicated name,
    and create a new donation with the indicated donor and donation amount.
    Then it should redirect the visitor to the home page.
    """

    if request.method == 'POST':
        donor_name = request.form['name']

        try:
            # add the donor to the db if the record doesn't exist
            donor = Donor.create(name=donor_name)
        except IntegrityError:
            # if donor already exists, retrieve donor
            donor = Donor.get(Donor.name == donor_name)

        # add donation to db
        Donation.create(donor=donor, value=request.form['value'])

        return redirect(url_for('all_donations'))

    else:
        return render_template('create.jinja2')
Example #3
0
def donate():
    """ let a user create a new donor / donation """
    if request.method == 'POST':
        donor_name = request.form['name']
        amount = request.form['value']
        if donor_name and amount:
            donor_count = Donor.select() \
                            .where(Donor.name == request.form['name']) \
                            .count()

            if donor_count == 0:
                donor = Donor.create(name=request.form['name'])
            else:
                donor = Donor.get(name=request.form['name'])

            if int(amount) <= 1000000 and int(amount) > 0:
                Donation.create(donor=donor, value=request.form['value'])
                _donations = Donation.select()
                return render_template('donations.jinja2',
                                       donations=_donations)

            flash('Input amount within an acceptable range (0 to 1000000)')
            return render_template('add_donation.jinja2')
    elif request.method == 'GET':
        if session.get('username'):
            return render_template('add_donation.jinja2')

    return render_template('login.jinja2')
Example #4
0
def new():
    if request.method == 'POST':
        newname = Donor.create(name=request.form['newname'])
        donation = Donation(value=request.form['value'], donor=newname)
        donation.save()
        return redirect(url_for('all'))

    else:
        return render_template('new.jinja2')
Example #5
0
def create():
    if request.method == 'POST':
        donorName = request.form['donor']
        donorDonation = request.form['donation']
        try:
            selectedDonor = Donor.create(name=donorName)
        except peewee.IntegrityError:
            selectedDonor = Donor.get(Donor.name == donorName)
        Donation(donor=selectedDonor, value=donorDonation).save()
        donations = Donation.select()
        return render_template('donations.jinja2', donations=donations)
    else:
        return render_template('create.jinja2')
Example #6
0
def create():
    if request.method == 'POST':
        donor_name = request.form['name']
        donation_val = int(request.form['donation'])
        with db.transaction():
            try:
                new_donor = Donor.create(name=donor_name)
                new_donor.save()
            except peewee.IntegrityError:
                new_donor = Donor.get(Donor.name == donor_name)
            donation = Donation.create(donor=new_donor, value=donation_val)
            donation.save()
        return redirect(url_for('all'))
    return render_template('create.jinja2')
Example #7
0
def create():
    if 'username' not in session:
        return redirect(url_for('login'))
    else:
        if request.method == 'POST':
            try:
                donor = Donor.get(name=request.form.get('name'))
            except DoesNotExist:
                donor = Donor.create(name=request.form.get('name'))

            Donation.create(donor=donor, value=request.form.get('amount'))

            return redirect(url_for('all'))

        return render_template('create.jinja2')
Example #8
0
def create():
    if 'username' not in session:
        return redirect(url_for('login'))

    if request.method == 'POST':
        donor_name = request.form['donor-name']

        try:
            donor = Donor.get(Donor.name == donor_name)
        except Donor.DoesNotExist:
            donor = Donor.create(name=donor_name)

        Donation.create(value=request.form['donation-amount'], donor=donor)
        return redirect(url_for('all'))

    return render_template('create.jinja2')
    def add_donation(self, name, amount):

        database = SqliteDatabase('mailroom_database.db')

        database.connect()
        database.execute_sql('PRAGMA foreign_keys = ON;')

        # checking to see if name exists in Donors db.
        # not the best way to check... but it works.
        try:
            donor = Donor.get(Donor.donor_name == name)
        except:
            donor = None

        # this instead????
        # donor = Donor.get_or_none(Donor.donor_name == name)

        # if the name that was entered is not already in the database, create a new Donor.
        if donor is None:
            print(
                "{} is a new donor and will be added to the database\n".format(
                    name))
            city = input("Please enter the city this donor is from:\n")
            state = input(
                "Please enter the state or country this donor is from:\n")

            new_donor = Donor.create(donor_name=name,
                                     donor_city=city,
                                     donor_state=state)
            new_donor.save()
            print("{} was added to the database! \n".format(name))

        # if the name does exist int he database of donors, confirms that the donor was found.
        else:
            print("{} was found in the database!\n".format(donor))

        # Add the amount of the donation to database.

        new_donation = Donation.create(donation_amount=amount,
                                       donation_donor=name)
        new_donation.save()

        print("{}'s donation amount of ${} was added to the database!".format(
            name, amount))

        database.close()
Example #10
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('home'))

    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_pass = bcrypt.generate_password_hash(form.password.data)\
                            .decode('utf-8')
        donor = Donor.create(name=form.username.data,
                             email=form.email.data,
                             password=hashed_pass,
                             total=0,
                             average=0)
        flash(f'Your account has been created. You may now log in.', 'success')
        return redirect(url_for('login'))

    return render_template('register.html', title='Register', form=form)
Example #11
0
def add_donation():
    if request.method == 'POST':
        donor = request.form['donor']
        if donor == '':
            return render_template("add_donation.jinja2",
                                   error="The Donor Name cannot be blank")
        try:
            add_donation = float(request.form['donation'])
        except:
            return render_template("add_donation.jinja2",
                                   error="Please enter a valid amount")
        if add_donation <= 0:
            return render_template("add_donation.jinja2",
                                   error="Please enter a valid amount")
        try:
            donor_id = Donor.get(Donor.name == donor).id
        except DoesNotExist:
            donor_id = Donor.create(name=donor).id
        finally:
            Donation.create(value=add_donation, donor=donor_id)
            return redirect(url_for('all'))

    else:
        return render_template("add_donation.jinja2")
Example #12
0
from model import db, Donor, Donation
from peewee import *

name = "Bor"

try:
    donor = Donor.get(name=name)
except DoesNotExist:
    donor = Donor.create(name=name)
Donation.create(donor=donor, value=2000)

print(donor.name)

for donation in Donation.select():
    print(donation.value, donation.donor)
Example #13
0
import random
from peewee import DoesNotExist
from passlib.hash import pbkdf2_sha256
from model import db, Donor, Donation, Admin

db.connect()
# db.execute_sql('PRAGMA foreign_keys = ON;')

# This line will allow you "upgrade" an existing database by
# dropping all existing tables from it.
db.drop_tables([Donor, Donation, Admin])
#
db.create_tables([Donor, Donation, Admin])

alice = Donor.create(name="Alice")
# alice.save()

bob = Donor.create(name="Bob")
# bob.save()

charlie = Donor.create(name="Charlie")
# charlie.save()

donors = [alice, bob, charlie]

for x in range(30):
    Donation.create(donor=random.choice(donors),
                    value=random.randint(100, 10000))

user1 = Admin.create(user="******", password=pbkdf2_sha256.hash("password"))
user2 = Admin.create(user="******", password=pbkdf2_sha256.hash("123456"))