Ejemplo n.º 1
0
def create():
    amount = request.form.get('amount')
    
    image_id = request.form.get('image_id')
    image_user_id = request.form.get('image_user_id')
    
    nonce_from_the_client = request.form.get("nonce")
    
    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce_from_the_client,
        "options": {
        "submit_for_settlement": True
        }
    })
    
    # breakpoint
      
    if result.is_success:
        flash("Successfully donated !", "success")
        donation = Donation(username=current_user.id, image=image_id, amount=amount)
        donation.save()
        return  redirect(f'images/{image_user_id}/images')
    
    else:
        flash("Error has occured, please try again", "danger")
        return render_template(url_for('donations.new'))
Ejemplo n.º 2
0
def create_donation(id):
    nonce_from_the_client = request.form["this-input"]
    amount = request.form.get('this-amount')
    gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce_from_the_client,
        "options": {
            "submit_for_settlement": True
        }
    })
    Donation(amount=amount, image=id, user=current_user.username).save()

    image = Image.get_by_id(id)
    user = User.get_or_none(User.id == image.user_id)
    message = Mail(
        from_email='*****@*****.**',
        to_emails=user.email,
        subject='Donation Notification',
        html_content='@' + current_user.username + ' donated' +
        f' ${amount} to the following image below!<br><img src="{ image.upload_image_url }" />'
    )
    try:
        sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
        response = sg.send(message)
        print(response.status_code)
        print(response.body)
        print(response.headers)
    except Exception as e:
        print(str(e))
    return redirect(url_for('home'))
Ejemplo n.º 3
0
	def post(self):
		action = self.request.get("action")
		if action == "newdonation":
			user = UserData.current()
			group_id = self.request.get("group")
			title = self.request.get("title")
			body = self.request.get("body")
			# logging.info(repr(body))
			body = body.replace("\r\n", "<br />")
			tmp = self.request.get("specs")
			logging.info(repr(tmp))
			# logging.info()
			specs = """<ul>"""
			for spec in tmp.split("\r\n"):
				# logging.info(spec)
				if spec != "":
					specs += """<li>%s</li>""" % spec
			specs += """</ul>"""
			logging.info(specs)
			donation = Donation.create_donation(user=user,
				group=db.Key.from_path("Group", group_id),
				specs = str(specs),
				title=title,
				body=body)

			if donation is None:
				self.redirect('/group/%s' % group_id)
				return

			self.redirect('/donation/%s' % donation.key().id())
			return

		if action == "newplea":
			user = UserData.current()
			donationid = self.request.get("donationid")
			donation = Donation.get_by_id(int(donationid))
			title = self.request.get("title")
			body = self.request.get("body")
			plea = Plea.new_plea(user=user,
				donation=donation,
				title=title,
				body=body)

			self.redirect('/donation/%s' % donationid)
			return

		self.redirect('/donations/')
Ejemplo n.º 4
0
	def post(self):
		filter = self.request.get("filter", "")
		if filter == "":
			self.render("donationsearch.html", results=None)
			return
		logging.info("filter = '%s'" % filter)
		results = Donation.search(filter)
		return self.render("donationsearch.html", results=results)
Ejemplo n.º 5
0
	def get(self):
		donation_id = self.request.get("donationid", "")
		if donation_id == "":
			self.redirect('/donations/')
			return

		donation = Donation.get_by_id(int(donation_id))
		if donation is None:
			self.redirect('/donations/')
			return

		owner = False
		user = UserData.current()
		if user is not None:
			if user.user_id == donation.created_by.user_id:
				logging.info("owner!")
				owner = True

		action = self.request.get("action")
		if action == "deletedonation":
			donation.delete()

		elif action == "deleteplea":
			id = self.request.get("id", "")
			if id == "":
				self.redirect('/donations/')
				return
			
			# user = UserData.current().user_id
			# if user != donation.created_by.user_id or user == plea.user.user_id):
			# 	self.redirect('/donation/%s' % donation_id)

			delete_model("Plea", int(id))
			self.redirect('/donation/%s' % donation_id)
			donation.update_plea_count()
			return
		elif action == "acceptplea":
			pleaid = self.request.get("pleaid", "")
			if pleaid == "":
				return self.redirect('/donations/')				
			# user = UserData.current()

			donation.accept_plea(pleaid)

			# inform pleas that donation is closed

			# self.redirect('/donation/%s' % donation_id)
			return self.render("donationview.html", donation=donation, owner=owner)
		elif action == "closedonation":
			if not donation.close_donation():
				return self.redirect('/donations/')
			
			return self.render("donationview.html", donation=donation, owner=owner)
			
		logging.info("test2")
		return self.redirect('/donations/')
Ejemplo n.º 6
0
def create(image_id):
    nonce = request.form.get('payment_method_nonce')
    if not nonce:
        flash('invalid credit card details', 'warning')
        return redirect(url_for('users.index'))

    image = Image.get_or_none(Image.id == image_id)

    if not image:
        flash('No image found with the provided id', 'waning')
        return redirect(url_for('users.index'))

    amount = request.form.get('amount')

    if not amount:
        flash('No donation amount provided', 'warning')
        return redirect(url_for('users.index'))

    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": nonce,
        # "device_data": device_data_from_the_client,
        "options": {
            "submit_for_settlement": True
        }
    })

    if not result.is_success:
        flash('Unable to complete transaction', 'warning')
        return redirect(request.referrer)

    donation = Donation(amount=amount,
                        image_id=image.id,
                        user_id=current_user.id)

    if not donation.save():
        flash('Donation successful but error creating record', 'warning')
        return redirect(url_for('users.index'))

    flash(f'Donation successful. ${amount} donated', 'success')
    user = User.select().join(Image).where(Image.id == image_id)
    send_simple_message(user[0].email)
    return redirect(url_for('users.index'))
Ejemplo n.º 7
0
def create(image_id):
    amount = request.form.get('amount')
    payment_nonce = request.form.get('payment_nonce')
    result = gateway.transaction.sale({
        "amount": amount,
        "payment_method_nonce": payment_nonce,
        "options": {
            "submit_for_settlement": True
        }
    })
    if not result.is_success:
        flash(u'dono did not work out.', 'warning')
        return redirect(request.referrer)

    dono = Donation(amount=amount, image_id=image_id)
    if dono.save():
        user = User.select().join(Image).where(Image.id == image_id)
        send_simple_message(user[0].email)
        flash(f'successfully donated RM{amount}', 'info')
        return redirect(url_for('users.index'))
Ejemplo n.º 8
0
	def get(self, id):
		donation = Donation.get_by_id(int(id))
		if donation is None:
			self.redirect('/')

		owner = False
		user = UserData.current()
		if user is not None:
			if user.user_id == donation.created_by.user_id:
				owner = True
		self.render("donationview.html", donation=donation, login_url="/donation/%s" % id, owner=owner)
 def total_donations(self):
     from models.donations import Donation
     total = 0
     for donation in Donation.select().where(Donation.image_id == self.id):
         total = total + donation.amount
     return round(total)
Ejemplo n.º 10
0
	def get(self):
		donations = Donation.all().filter("active = ", True).fetch(100)
		self.render("donationlist.html",donations=donations)