mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Changing premium expiration tasks to not get bogged down by re-downloading all premium history beforehand.
This commit is contained in:
parent
cd485bc05d
commit
89089ddbc2
2 changed files with 32 additions and 23 deletions
|
@ -279,9 +279,12 @@ class Profile(models.Model):
|
|||
oldest_recent_payment_date = payment.payment_date
|
||||
|
||||
if oldest_recent_payment_date:
|
||||
self.premium_expire = (oldest_recent_payment_date +
|
||||
datetime.timedelta(days=365*recent_payments_count))
|
||||
self.save()
|
||||
new_premium_expire = (oldest_recent_payment_date +
|
||||
datetime.timedelta(days=365*recent_payments_count))
|
||||
# Only move premium expire forward, never earlier. Also set expiration if not premium.
|
||||
if (not self.is_premium and not self.premium_expire) or new_premium_expire > self.premium_expire:
|
||||
self.premium_expire = new_premium_expire
|
||||
self.save()
|
||||
|
||||
logging.user(self.user, "~BY~SN~FWFound ~SB~FB%s paypal~FW~SN and ~SB~FC%s stripe~FW~SN payments (~SB%s payments expire: ~SN~FB%s~FW)" % (
|
||||
len(paypal_payments), len(stripe_payments), len(payment_history), self.premium_expire))
|
||||
|
@ -647,21 +650,26 @@ NewsBlur""" % {'user': self.user.username, 'feeds': subs.count()}
|
|||
msg.send(fail_silently=True)
|
||||
|
||||
logging.user(self.user, "~BB~FM~SBSending launch social email for user: %s months, %s" % (months_ago, self.user.email))
|
||||
|
||||
def send_premium_expire_grace_period_email(self, force=False):
|
||||
if not self.user.email:
|
||||
logging.user(self.user, "~FM~SB~FRNot~FM~SN sending premium expire grace for user: %s" % (self.user))
|
||||
return
|
||||
|
||||
|
||||
def grace_period_email_sent(self, force=False):
|
||||
emails_sent = MSentEmail.objects.filter(receiver_user_id=self.user.pk,
|
||||
email_type='premium_expire_grace')
|
||||
day_ago = datetime.datetime.now() - datetime.timedelta(days=360)
|
||||
for email in emails_sent:
|
||||
if email.date_sent > day_ago and not force:
|
||||
logging.user(self.user, "~SN~FMNot sending premium expire grace email, already sent before.")
|
||||
return
|
||||
return True
|
||||
|
||||
self.premium_expire = datetime.datetime.now()
|
||||
def send_premium_expire_grace_period_email(self, force=False):
|
||||
if not self.user.email:
|
||||
logging.user(self.user, "~FM~SB~FRNot~FM~SN sending premium expire grace for user: %s" % (self.user))
|
||||
return
|
||||
|
||||
if self.grace_period_email_sent(force=force):
|
||||
return
|
||||
|
||||
if self.premium_expire < datetime.datetime.now():
|
||||
self.premium_expire = datetime.datetime.now()
|
||||
self.save()
|
||||
|
||||
delta = datetime.datetime.now() - self.last_seen_on
|
||||
|
|
|
@ -22,27 +22,28 @@ class PremiumExpire(Task):
|
|||
|
||||
def run(self, **kwargs):
|
||||
# Get expired but grace period users
|
||||
five_days_ago = datetime.datetime.now() - datetime.timedelta(days=5)
|
||||
two_days_ago = datetime.datetime.now() - datetime.timedelta(days=2)
|
||||
thirty_days_ago = datetime.datetime.now() - datetime.timedelta(days=30)
|
||||
expired_profiles = Profile.objects.filter(is_premium=True,
|
||||
premium_expire__lte=five_days_ago)
|
||||
logging.debug(" ---> %s users have expired premiums, syncing payments..." % expired_profiles.count())
|
||||
for profile in expired_profiles:
|
||||
profile.setup_premium_history()
|
||||
|
||||
expired_profiles = Profile.objects.filter(is_premium=True,
|
||||
premium_expire__lte=five_days_ago)
|
||||
premium_expire__lte=two_days_ago,
|
||||
premium_expire__gt=thirty_days_ago)
|
||||
logging.debug(" ---> %s users have expired premiums, emailing grace..." % expired_profiles.count())
|
||||
for profile in expired_profiles:
|
||||
profile.send_premium_expire_grace_period_email()
|
||||
if profile.grace_period_email_sent():
|
||||
continue
|
||||
profile.setup_premium_history()
|
||||
if profile.premium_expire < two_days_ago:
|
||||
profile.send_premium_expire_grace_period_email()
|
||||
|
||||
# Get fully expired users
|
||||
thirty_days_ago = datetime.datetime.now() - datetime.timedelta(days=30)
|
||||
expired_profiles = Profile.objects.filter(is_premium=True,
|
||||
premium_expire__lte=thirty_days_ago)
|
||||
logging.debug(" ---> %s users have expired premiums, deactivating and emailing..." % expired_profiles.count())
|
||||
for profile in expired_profiles:
|
||||
profile.send_premium_expire_email()
|
||||
profile.deactivate_premium()
|
||||
profile.setup_premium_history()
|
||||
if profile.premium_expire < thirty_days_ago:
|
||||
profile.send_premium_expire_email()
|
||||
profile.deactivate_premium()
|
||||
|
||||
|
||||
class ActivateNextNewUser(Task):
|
||||
|
|
Loading…
Add table
Reference in a new issue