def extend_account(self, plan, pricing): """ Manages extending account after plan or pricing order :param plan: :param pricing: if pricing is None then account will be only upgraded :return: """ # Processing standard account extending procedure if self.plan != plan: self.plan = plan account_change_plan.send(sender=self, user=self.user) mail_context = Context({'user': self.user, 'userplan': self, 'plan': plan}) send_template_email([self.user.email], 'mail/change_plan_title.txt', 'mail/change_plan_body.txt', mail_context, get_user_language(self.user)) if self.expire is None: pass elif self.expire > date.today(): self.expire += timedelta(days=pricing.period) else: self.expire = date.today() + timedelta(days=pricing.period) self.save() accounts_logger.info("Account '%s' [id=%d] has been extended by %d days using plan '%s' [id=%d]" % ( self.user, self.user.pk, pricing.period, plan, plan.pk)) #mail_context = Context({'user': self.user, 'userplan': self, 'plan': plan, 'pricing': pricing}) #send_template_email([self.user.email], 'mail/extend_account_title.txt', 'mail/extend_account_body.txt', # mail_context, get_user_language(self.user)) self.clean_activation() return True
def extend_account(self, plan, pricing): """ Manages extending account after plan or pricing order :param plan: :param pricing: if pricing is None then account will be only upgraded :return: """ status = False # flag; if extending account was successful? if pricing is None: # Process a plan change request (downgrade or upgrade) # No account activation or extending at this point self.plan = plan self.save() account_change_plan.send(sender=self, user=self.user) mail_context = Context({'user': self.user, 'userplan': self, 'plan': plan}) send_template_email([self.user.email], 'mail/change_plan_title.txt', 'mail/change_plan_body.txt', mail_context, get_user_language(self.user)) accounts_logger.info( "Account '%s' [id=%d] plan changed to '%s' [id=%d]" % (self.user, self.user.pk, plan, plan.pk)) status = True else: # Processing standard account extending procedure if self.plan == plan: status = True if self.expire is None: pass elif self.expire > date.today(): self.expire += timedelta(days=pricing.period) else: self.expire = date.today() + timedelta(days=pricing.period) else: # This should not ever happen (as this case should be managed by plan change request) # but just in case we consider a case when user has a different plan if self.expire is None: status = True elif self.expire > date.today(): status = False accounts_logger.warning("Account '%s' [id=%d] plan NOT changed to '%s' [id=%d]" % ( self.user, self.user.pk, plan, plan.pk)) else: status = True account_change_plan.send(sender=self, user=self.user) self.plan = plan self.expire = date.today() + timedelta(days=pricing.period) if status: self.save() accounts_logger.info("Account '%s' [id=%d] has been extended by %d days using plan '%s' [id=%d]" % ( self.user, self.user.pk, pricing.period, plan, plan.pk)) mail_context = Context({'user': self.user, 'userplan': self, 'plan': plan, 'pricing': pricing}) send_template_email([self.user.email], 'mail/extend_account_title.txt', 'mail/extend_account_body.txt', mail_context, get_user_language(self.user)) if status: self.clean_activation() return status
def extend_account(self, plan, pricing): """ Manages extending account after plan or pricing order :param plan: :param pricing: if pricing is None then account will be only upgraded :return: """ status = False # flag; if extending account was successful? expire = self.get_plan_extended_until(plan, pricing) if pricing is None: # Process a plan change request (downgrade or upgrade) # No account activation or extending at this point self.plan = plan if self.expire is not None and not plan.planpricing_set.count(): # Assume no expiry date for plans without pricing. self.expire = None self.save() account_change_plan.send(sender=self, user=self.user) if getattr(settings, 'PLANS_SEND_EMAILS_PLAN_CHANGED', True): mail_context = { 'user': self.user, 'userplan': self, 'plan': plan } send_template_email([self.user.email], 'mail/change_plan_title.txt', 'mail/change_plan_body.txt', mail_context, get_user_language(self.user)) accounts_logger.info( "Account '%s' [id=%d] plan changed to '%s' [id=%d]" % (self.user, self.user.pk, plan, plan.pk)) status = True else: # Processing standard account extending procedure if self.plan == plan: status = True else: # This should not ever happen (as this case should be managed by plan change request) # but just in case we consider a case when user has a different plan if not self.plan.is_free() and self.expire is None: status = True elif not self.plan.is_free() and self.expire > date.today(): status = False accounts_logger.warning( "Account '%s' [id=%d] plan NOT changed to '%s' [id=%d]" % (self.user, self.user.pk, plan, plan.pk)) else: status = True account_change_plan.send(sender=self, user=self.user) self.plan = plan if status: self.expire = expire self.save() accounts_logger.info( "Account '%s' [id=%d] has been extended by %d days using plan '%s' [id=%d]" % (self.user, self.user.pk, pricing.period, plan, plan.pk)) if getattr(settings, 'PLANS_SEND_EMAILS_PLAN_EXTENDED', True): mail_context = { 'user': self.user, 'userplan': self, 'plan': plan, 'pricing': pricing } send_template_email([self.user.email], 'mail/extend_account_title.txt', 'mail/extend_account_body.txt', mail_context, get_user_language(self.user)) if status: self.clean_activation() return status