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