def create_from_ipn(sender, **kwargs): from hicap.membership.models import Maker ipn_obj = sender try: m = Maker.objects.get(email=getattr(ipn_obj, 'payer_email', None)) except Maker.DoesNotExist: email = getattr(ipn_obj, 'payer_email', None) username = email m = Maker( username = email, email = email, first_name = getattr(ipn_obj, 'first_name', 'First Name'), last_name = getattr(ipn_obj, 'last_name', 'Last Name') ) m.save() amount = decimal.Decimal(getattr(ipn_obj, 'payment_amount', '0.00')) txn_id = getattr(ipn_obj, 'txn_id', None) tier = TIER_ELITE if (amount >= 50) else TIER_STANDARD p = MembershipPayment( maker = m, payment_method = PAYPAL, payment_created = datetime.now(), payment_amount = amount, payment_note = "Imported from paypal ipn", payment_identifier = txn_id, tier = tier, cycle_start = datetime.now(), num_cycle = 1, ) p.save() print p
def admin_payment_report_ajax(request, report_date=None): if report_date is None: report_date = datetime.now() month_start = date(report_date.year, report_date.month, 1) if report_date.month >= 12: month_end = date(report_date.year+1, 1, 1) else: month_end = date(report_date.year, report_date.month+1, 1) total_month_dues = MembershipPayment.monthly_sum(month_start, month_end) total_month_donations = Donation.monthly_sum(month_start, month_end) active_members = Maker.active_members(report_date) makers = Maker.objects.all() payments = list(MembershipPayment.objects.all()) donations = list(Donation.objects.all()) context = { 'report_date': int(time.mktime(report_date.timetuple())), 'title': "Report ({date})".format(date = report_date.strftime("%b %d, %Y")), 'active_members': active_members, 'total_in_system': len(makers), 'total_month_dues': total_month_dues, 'total_month_donations': total_month_donations, 'payments': payments, 'donations': donations, } return HttpResponse(json.dumps(context, cls=CustomEncoder), mimetype="application/json")
def make_payment(obj): txn_id = obj.get('TRANSACTIONID') email = obj.get('EMAIL') amount = decimal.Decimal(obj.get('AMT', '0.00')) if amount <= 0: return if obj.get('STATUS') != 'Completed': return if email is None: print "NO EMAIL" print obj return try: p = MembershipPayment.objects.get(payment_identifier=txn_id) print "skipping" return except MembershipPayment.DoesNotExist: pass try: m = Maker.objects.get(email=email) except Maker.DoesNotExist: m = Maker( username = email, email = email, first_name = obj.get('NAME'), ) m.save() tier = TIER_ELITE if (amount >= 50) else TIER_STANDARD p = MembershipPayment( maker = m, payment_method = PAYPAL, payment_created = datetime.utcnow(), payment_amount = amount, payment_note = "Imported from paypal CLI", payment_identifier = txn_id, tier = tier, cycle_start = from_paypal_timestamp(obj.get('TIMESTAMP')), num_cycle = 1, ) p.save() print p
def admin_member_report(request, report_date=None): if report_date is None: report_date = datetime.now() month_start = date(report_date.year, report_date.month, 1) if report_date.month >= 12: month_end = date(report_date.year+1, 1, 1) else: month_end = date(report_date.year, report_date.month+1, 1) active_members = Maker.active_members(report_date) makers = Maker.objects.all() total_month_dues = MembershipPayment.monthly_sum(month_start, month_end) total_month_donations = Donation.monthly_sum(month_start, month_end) context = { 'report_date': report_date, 'title': "Report ({date})".format(date = report_date.strftime("%b %d, %Y")), 'active_members': active_members, 'total_in_system': len(makers), 'total_month_dues': total_month_dues, 'total_month_donations': total_month_donations, } return render_to_response("admin/membership/report.html", context, context_instance=RequestContext(request))