in privaterelay/management/commands/update_phone_remaining_stats.py [0:0]
def get_next_reset_date(profile: Profile) -> datetime:
# TODO: consider moving this as a property in Profile model
# assumes that profile being passed have already been checked to have
# phone subscription or a free phone user
if profile.date_phone_subscription_reset is None:
# there is a problem with the sync_phone_related_dates_on_profile
# or a new foxfooder whose date_phone_subscription_reset did not get set in
if profile.fxa:
fxa_uid = profile.fxa.uid
else:
fxa_uid = "None"
logger.error(
"phone_user_profile_dates_not_set",
extra={
"fxa_uid": fxa_uid,
"date_subscribed_phone": profile.date_phone_subscription_end,
"date_phone_subscription_start": profile.date_phone_subscription_start,
"date_phone_subscription_reset": profile.date_phone_subscription_reset,
"date_phone_subscription_end": profile.date_phone_subscription_end,
},
)
return datetime.now(UTC) - timedelta(minutes=15)
calculated_next_reset_date = profile.date_phone_subscription_reset + timedelta(
settings.MAX_DAYS_IN_MONTH
)
if profile.date_phone_subscription_end is None:
return calculated_next_reset_date
if profile.date_phone_subscription_end < calculated_next_reset_date:
# return the past or the closest next reset date
return profile.date_phone_subscription_end
return calculated_next_reset_date