Exemple #1
0
def all():
    try:
        donor_name = request.args['donor']
        donations = Donation.select().join(Donor).where(Donor.name == donor_name)
    except KeyError:
        donations = Donation.select()
    return render_template('donations.jinja2', donations=donations)
def all_donation():
    message = request.args.get('user')
    if message:
        donor = Donor.select().where(Donor.name == message).get()
        donations = Donation.select().where(Donation.donor == donor)
        name = donor.name.title()
    else:
        donations = Donation.select()
        name = "All"
    return render_template('donations.jinja2',
                           title='show all',
                           name=name,
                           donations=donations)
Exemple #3
0
def all():
    if request.args.get('donor') != '' and request.args.get('donor') is not None:
        donations = Donation.select().where(Donation.donor == request.args.get('donor'))
    else:
        donations = Donation.select()
    donors = Donor.select()
    return render_template(
        'donations.jinja2',
        donations=donations,
        donors=donors,
        request=request,
        username=session['username'] if 'username' in session.keys() else ''
    )
Exemple #4
0
def all():
    """
    Display a list of all the donations
    :return: The all donations page
    """
    if request.method == 'POST':
        donor = Donor.select().where(Donor.name == request.form['donor_name']).get()
        print("Donor ID ", donor.id)
        donations = Donation.select().where(Donation.donor_id == donor.id)
        print("Dontation", donations)
        return render_template('donations.jinja2', donations=donations)

    donations = Donation.select()
    print("All donations ", donations)
    return render_template('donations.jinja2', donations=donations)
Exemple #5
0
def report():
    donations = Donation.select(
        Donation.donor,
        fn.Count(Donation.value).alias('count'),
        fn.Sum(Donation.value).alias('total'),
        fn.Avg(Donation.value).alias('average')).group_by(Donation.donor)
    return render_template('report.jinja2', donations=donations)
Exemple #6
0
def get_donor(donor):
    """
    print all records for a specfic donor
    """
    # downselect data to only records matching specified donor
    donations = Donation.select().join(Donor).where(Donor.name == donor)
    return render_template('donations.jinja2', donations=donations)
Exemple #7
0
def show_stats():

    d = dict()

    donor_sums = dict()

    donors = Donor.select()

    debug = ""

    for x in donors:
        d[x.name] = 0
        donor_sums[x.name] = 0

        # oddly, this does not work
        # donation = Donation.select().where(Donation.donor.name == "Alice")
        # debug += str(donation.count())

    donations = Donation.select()
    for donation in donations:
        # debug += str(donation.donor.name)
        d[donation.donor.name] += 1
        donor_sums[donation.donor.name] += int(donation.value)

    return render_template('stats.jinja2',
                           totals=d,
                           debug=debug,
                           donor_sums=donor_sums)
Exemple #8
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')
def new_donation():

    if "donor-name" not in session:
        return redirect(url_for("login"))

    if request.method == "POST":
        try:
            donor = Donor.select().where(
                Donor.name == request.form['name-input']).get()
        except Donor.DoesNotExist:
            return render_template("create.jinja2",
                                   error="donor not in records")

        try:
            value = request.form['value-input']
            if not value or not value.isnumeric():
                raise ValueError()
        except ValueError:
            return render_template(
                "create.jinja2",
                error="donation amount missing or not a number")

        if donor.name == session['donor-name']:
            new_donation = Donation(donor=donor, value=value)
            new_donation.save()
            session.pop("donor-name", None)
            return redirect(url_for("all"))
        else:
            return render_template("create.jinja2", error="please login first")

    else:
        return render_template('create.jinja2', donations=Donation.select())
Exemple #10
0
def single_donor(name):
    donations = Donation.select().join(Donor).where(Donor.name == name)
    #donations = Donation.select().where(Donation.donor.name == 'Bob')

    return render_template('individual_donations.jinja2',
                           donations=donations,
                           name=name)
Exemple #11
0
def one_donor(name):
    """ show only a single donor's donations """
    donations = Donation.select(Donation, Donor)\
                        .join(Donor) \
                        .where(Donor.name == name)

    return render_template('donations.jinja2', donations=donations)
Exemple #12
0
def create():

    if 'username' not in session:
        return redirect(url_for('login'))

    if request.method == 'POST':

        try:
            n = request.form['name']
            v = request.form['donation']
            n = Donor(name=n)
            n.save()
            Donation(donor=n, value=v).save()

            return redirect(url_for('all_donations'))

        except:
            n = request.form['name']
            #print("exception", n, v)
            return render_template('lookup.jinja2',
                                   donor=n,
                                   donations=Donation.select())

    else:
        return render_template('create.jinja2')
Exemple #13
0
def view():
    try:
        donor = Donor.get(name=request.args.get('name'))
    except DoesNotExist:
        return render_template('view.jinja2', error="Donor does not exist")

    donations = Donation.select().where(Donation.donor == donor)
    return render_template('donations.jinja2', donations=donations)
Exemple #14
0
def get_donor(name):
    if str(name) == 'all':
        redirect(url_for('all'))

    else:
        donor = Donor.select().where(Donor.name==name).get()
        donations = Donation.select().where(Donation.donor==donor)
    return render_template('donations.jinja2',
                           donations=donations)
Exemple #15
0
def summary():

    summary_dict = {}
    donations = Donation.select()
    for donation in donations:
        summary_dict.setdefault(donation.donor.name, 0)
        summary_dict[donation.donor.name] += donation.value

    return render_template('summary.jinja2', summary=summary_dict)
Exemple #16
0
def viewemail(donor):
    total = 0
    count = 0
    donations = Donation.select().join(Donor).where(Donor.name == donor)
    for donation in donations:
        total += donation.value
        count += 1
    return render_template('viewemail.jinja2', donor=donor, total=total,
                           count=count)
Exemple #17
0
def select_single():
    if request.method == 'POST':
        donor = Donor.select().where(Donor.name == request.form['name']).get()
        donations = Donation.select().join(Donor).where(
            Donor.name == donor.name)
        return render_template('view_single.jinja2',
                               donor=donor,
                               donations=donations)
    else:
        return render_template('select_single.jinja2', donors=Donor.select())
Exemple #18
0
def get_donation_by_donor(donor):
    """ Displays all donation records by donor name

    :param donor String: the donor name case-sensitive

    :return: donations by donor.  If donor does not exists, empty page is
             displayed
    """
    donations = Donation.select().join(Donor).where(Donor.name == donor)
    return render_template('donations.jinja2', donations=donations)
Exemple #19
0
def single_donor_info():
    name = request.args.get("name", None)
    if not name:
        return render_template('single_donor.jinja2')
    try:
        donor = Donor.select().where(Donor.name == name).get()
    except Donor.DoesNotExist:
        return render_template('single_donor.jinja2', error=f"Donor {name} doesn't exist!!!")
    donations = Donation.select().where(Donation.donor == donor.id)

    return render_template('donations.jinja2', donations=donations)
Exemple #20
0
def retrieve():
    if request.method == 'POST':
        user = User.select().where(User.name == request.form['name']).get()

    name = request.args.get('name', None)

    if name is None:
        return render_template('retrieve.jinja2')
    else:
        donations = Donation.select().join(Donor).where(Donor.name == name)
        return render_template('retrieve.jinja2', donations=donations)
def thank_you():
    if request.method == 'POST':
        donor = Donor.select().where(Donor.name == request.form['name']).get()
        donation = [
            donation for donation in Donation.select()
            if donation.donor_id == donor.id
        ][-1]
        return render_template('personalized_thank_you.jinja2',
                               donor=donor,
                               donation=donation)
    else:
        return render_template('generate_thank_you.jinja2')
Exemple #22
0
def donate():
    # make a donation and redirect to donor page
    if request.method == 'POST':
        donor = Donor(name=request.form['name'])
        donor.save()

        amount = Donation(donor=donor, value=request.form['amount'])
        amount.save()

        return redirect(url_for('all'))
    else:
        return render_template('donate.jinja2', donations=Donation.select())
Exemple #23
0
def individual(person):
    """
    Gets a list of just Alice's, Bob's, or Charlie's donations and orders the value by descending
    :Donor.name: <peewee.CharField object at 0x0000020E3A26E278>
    :param person: Alice, Bob, Charlie
    :donations: <peewee.ModelSelect object at 0x0000020E3A53B128>
    :return:'<html>\n<head>\n<title>Mailroom</title>\n</head>\n<body>\n\t<h1>Donations</h1>\n
    \t<h2>Donations</h2>\n\t\n<ul>\n    \n <li><b>Bob</b>: 1941</li>\n    \n
    """
    donations = Donation.select().join(Donor).where(
        Donor.name == person).order_by(Donation.value.desc())
    return render_template('donations.jinja2', donations=donations)
Exemple #24
0
def donor(name):
    try:
        donated = {"name": name, "sum": 0}
        record = Donor.select().where(Donor.name == name).get()
        na = int(record.id)
        query = Donation.select().where(Donation.donor == na)
        s = []
        for q in query:
            s.append(q.value)
        donated["sum"] = str(sum(s))
        return render_template('donor.jinja2', donated=donated)
    except:
        return render_template('error.jinja2')
Exemple #25
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')
Exemple #26
0
def view_single():
    error = None
    if request.method == 'POST':
        query = Donor.select().where(Donor.name == request.form['name'])
        if query.exists():
            donor = query.get()
            donations = Donation.select().where(Donation.donor == donor)
            return render_template('view_single.jinja2',
                                   donations=donations,
                                   donor_name=donor.name)
        else:
            error = f"No donor named {request.form['name']} found"
    return render_template('view_single.jinja2', error=error)
def all_donors():
    if request.method == 'POST':
        donor = Donor.select().where(
            Donor.name == request.form['donor_name']).get()
        donations = [
            donation for donation in Donation.select()
            if donation.donor_id == donor.id
        ]
        return render_template('donor_info.jinja2',
                               donor=donor,
                               donations=donations)
    else:
        donors = Donor.select()
        return render_template('all_donors.jinja2', donors=donors)
Exemple #28
0
def donation_by_donor():
    if request.method == "POST":
        try:
            donor = Donor.select().where(
                Donor.name == request.form['donor']).get()
            donations = Donation.select().join(Donor).where(
                Donor.name == request.form['donor'])
            return render_template('donor.jinja2', donations=donations)
        except Donor.DoesNotExist:
            error_msg = f'Donor {request.form["donor"]} does not exist'
            return render_template('donor.jinja2', error=error_msg)

    else:
        return render_template('donor.jinja2')
Exemple #29
0
def donation_by_donor():
    filter, error = None, None
    if request.method == 'POST':
        try:
            name = request.form['name']
            donor = Donor.select().where(
                Donor.name == name.capitalize()).first()
            filter = Donation.select().where(Donation.donor == donor.id)
            return render_template('donations.jinja2', donations=filter)
        except AttributeError as e:
            error = f"User {name} cannot be found, please verify entry"
    return render_template('donations_by_donor.jinja2',
                           donations=filter,
                           error=error)
Exemple #30
0
def view():
    name = request.args.get('name', None)

    if name is None:
        return render_template('view.jinja2')

    try:
        donor = Donor.get(Donor.name == name)
        donations = Donation.select().where(Donation.donor == donor)
        return render_template('view.jinja2',
                               donations=donations,
                               donor_name=donor.name)
    except Donor.DoesNotExist:
        return render_template('view.jinja2',
                               error="!!!ERROR - Donor not in database!!!")