Exemple #1
0
    def mark_attempting(self):
        # Optimistic locking
        affected = Donation.objects.filter(id=self.id, version=self.version).update(charge_status=self.ChargeStatus.ATTEMPTING_PAYMENT, version=self.version+1)

        if not affected:
            msg = "Tried optimistic lock of donation row with version %d, but a higher version existed. This is probably BAD. Unless somebody did an ad hoc update, there may be more than 1 instance of bill_campaignd running." % self.version
            send_admins_error_email("DONATION ERROR", msg, sys.exc_info())
            raise DonationProcessingFailed, msg
Exemple #2
0
def donate(request, handle):
    initial_amount = int(request.GET.get("amount", 0))
    initial_user = request.user if not request.user.is_anonymous() else None
    org = Org.objects.get(handle = handle)
    form = StandardDonationForm(initial_amount=initial_amount,initial_user=initial_user)

    if request.POST:
        form = StandardDonationForm(data=request.POST)
        if form.is_valid():
            donation_data = form.to_donation_data(org)
            try:
                donation = Donation.create_and_process(**donation_data)

                try:
                    #Post To Facebook
                    if form.cleaned_data.get("post_to_facebook") and initial_user:
                        fb_helpers.post_donation_to_wall(initial_user, org)
                    #Post To Stream
                    #if form.cleaned_data.get("list_name_publicly") and initial_user:
                        #FeedStream.post_new_donation(actor=initial_user, target=org, donation_id=donation.id)

                except Exception, ex:
                    logging.exception("FAILED TO SEND DONATE NOTIFICATION")
                    send_admins_error_email("FAILED TO SEND DONATE NOTIFICATION", ex.message, sys.exc_info())

                share_url = reverse('donate_share', args=[org.id])
		return HttpResponseRedirect("%s?amount=%s" % (share_url, donation.amount))

            #except NFGException, err:
            #    logging.exception("NFG ERROR PROCESSING STANDARD DONATION")
            #    if err.message.get("error_details"):
            #        form.handle_nfg_errors(err.message["error_details"])
            #    else:
            #        form.handle_unknown_error()
            except Exception, err:
                logging.exception("ERROR PROCESSING STANDARD DONATION")
                form.handle_unknown_error()