From 742657fa6437847d64e23f61d29477cc0652c449 Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Fri, 20 Dec 2013 12:45:28 -0800 Subject: [PATCH] New algorithm for figuring out how long to renew. --- apps/profile/models.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/profile/models.py b/apps/profile/models.py index e892261c9..7bb05995b 100644 --- a/apps/profile/models.py +++ b/apps/profile/models.py @@ -242,16 +242,21 @@ class Profile(models.Model): payment_provider='stripe') print " ---> Found %s stripe_payments" % len(stripe_payments) - # Calculate last payment date + # Calculate payments in last year, then add together payment_history = PaymentHistory.objects.filter(user=self.user) - most_recent_payment_date = None + last_year = datetime.datetime.now() - datetime.timedelta(days=364) + recent_payments_count = 0 + oldest_recent_payment_date = None for payment in payment_history: - if not most_recent_payment_date or payment.payment_date > most_recent_payment_date: - most_recent_payment_date = payment.payment_date + if payment.payment_date > last_year: + recent_payments_count += 1 + if payment.payment_date < oldest_recent_payment_date: + oldest_recent_payment_date = payment.payment_date print " ---> %s payments" % len(payment_history) - if most_recent_payment_date: - self.premium_expire = most_recent_payment_date + datetime.timedelta(days=365) + if oldest_recent_payment_date: + self.premium_expire = (oldest_recent_payment_date + + datetime.timedelta(days=365*recent_payments_count)) self.save() def refund_premium(self, partial=False):