diff --git a/frontend/templates/campaign_admin.html b/frontend/templates/campaign_admin.html index 2659ee8b..f289a408 100644 --- a/frontend/templates/campaign_admin.html +++ b/frontend/templates/campaign_admin.html @@ -28,4 +28,41 @@ {% endif %} + +

Campaigns with active transactions

+{% if campaigns_with_active_transactions %} + +{% else %} +

No campaigns with active transactions

+{% endif %} + + +

Campaigns with incomplete transactions

+{% if campaigns_with_incomplete_transactions %} + +{% else %} +

No campaigns with incomplete transactions

+{% endif %} + + +

Campaigns with completed transactions

+{% if campaigns_with_completed_transactions %} + +{% else %} +

No campaigns with completed transactions

+{% endif %} + + {% endblock %} \ No newline at end of file diff --git a/frontend/views.py b/frontend/views.py index 02a45f3b..161715be 100755 --- a/frontend/views.py +++ b/frontend/views.py @@ -39,6 +39,7 @@ from regluit.frontend.forms import RightsHolderForm, UserClaimForm, LibraryThin from regluit.frontend.forms import ManageCampaignForm, DonateForm, CampaignAdminForm from regluit.payment.manager import PaymentManager from regluit.payment.parameters import TARGET_TYPE_CAMPAIGN, TARGET_TYPE_DONATION +from regluit.payment.paypal import Preapproval, IPN_PAY_STATUS_ACTIVE, IPN_PAY_STATUS_INCOMPLETE, IPN_PAY_STATUS_COMPLETED from regluit.core import goodreads from tastypie.models import ApiKey from regluit.payment.models import Transaction @@ -434,12 +435,29 @@ def campaign_admin(request): check_status_results = pm.checkStatus() except Exception, e: check_status_results = e + + # second task: pull out Campaigns with Transactions that are ACTIVE -- and hence can be executed + # Campaign.objects.filter(transaction__status='ACTIVE') + campaigns_with_active_transactions = models.Campaign.objects.filter(transaction__status=IPN_PAY_STATUS_ACTIVE) + + # third task: pull out Campaigns with Transactions that are INCOMPLETE + + campaigns_with_incomplete_transactions = models.Campaign.objects.filter(transaction__status=IPN_PAY_STATUS_INCOMPLETE) + + # 4th task: show all Campaigns with Transactions that are COMPLETED + + campaigns_with_completed_transactions = models.Campaign.objects.filter(transaction__status=IPN_PAY_STATUS_COMPLETED) + context.update({ 'form': form, - 'check_status_results':check_status_results + 'check_status_results':check_status_results, + 'campaigns_with_active_transactions': campaigns_with_active_transactions, + 'campaigns_with_incomplete_transactions': campaigns_with_incomplete_transactions, + 'campaigns_with_completed_transactions': campaigns_with_completed_transactions }) + return render(request, "campaign_admin.html", context) def supporter(request, supporter_username, template_name): diff --git a/payment/manager.py b/payment/manager.py index 923fe1cf..055c8583 100644 --- a/payment/manager.py +++ b/payment/manager.py @@ -2,7 +2,8 @@ from regluit.core.models import Campaign, Wishlist from regluit.payment.models import Transaction, Receiver, PaymentResponse from django.contrib.auth.models import User from regluit.payment.parameters import * -from regluit.payment.paypal import Pay, Execute, IPN, IPN_TYPE_PAYMENT, IPN_TYPE_PREAPPROVAL, IPN_TYPE_ADJUSTMENT, Preapproval, IPN_PAY_STATUS_COMPLETED, CancelPreapproval, PaymentDetails, PreapprovalDetails, IPN_SENDER_STATUS_COMPLETED, IPN_TXN_STATUS_COMPLETED +from regluit.payment.paypal import Pay, Execute, IPN, IPN_TYPE_PAYMENT, IPN_TYPE_PREAPPROVAL, IPN_TYPE_ADJUSTMENT, IPN_PAY_STATUS_ACTIVE +from regluit.payment.paypal import Preapproval, IPN_PAY_STATUS_COMPLETED, CancelPreapproval, PaymentDetails, PreapprovalDetails, IPN_SENDER_STATUS_COMPLETED, IPN_TXN_STATUS_COMPLETED import uuid import traceback from datetime import datetime @@ -325,12 +326,10 @@ class PaymentManager( object ): ''' # only allow active transactions to go through again, if there is an error, intervention is needed - transactions = Transaction.objects.filter(campaign=campaign, status="ACTIVE") + transactions = Transaction.objects.filter(campaign=campaign, status=IPN_PAY_STATUS_ACTIVE) for t in transactions: - # BUGBUG: Fill this in with the correct info from the campaign object - # Campaign.paypal_receiver receiver_list = [{'email':settings.PAYPAL_GLUEJAR_EMAIL, 'amount':t.amount}, {'email':campaign.paypal_receiver, 'amount':D(t.amount) * (D('1.00') - D(str(settings.GLUEJAR_COMMISSION)))}]