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 remind_expire_soon(self): """reminds about soon account expiration""" mail_context = {'user': self.user, 'userplan': self, 'days': self.days_left()} send_template_email([self.user.email], 'mail/remind_expire_title.txt', 'mail/remind_expire_body.txt', mail_context, get_user_language(self.user))
def remind_expire_soon(self): """reminds about soon account expiration""" mail_context = { 'user': self.user, 'userplan': self, 'days': self.days_left() } send_template_email([self.user.email], 'mail/remind_expire_title.txt', 'mail/remind_expire_body.txt', mail_context, get_user_language(self.user))
def remind_expire_soon(self): """reminds about soon account expiration""" mail_context = Context({"user": self.user, "userplan": self, "days": self.days_left()}) send_template_email( [self.user.email], "mail/remind_expire_title.txt", "mail/remind_expire_body.txt", mail_context, get_user_language(self.user), )
def test_send_template_email_does_not_modify_language(self): """ Language is changed inside the method, but should be restored before returning or that may cause unintended side effects """ activate('pt_BR') test_lang = get_language() send_template_email(['*****@*****.**'], 'mail/change_plan_title.txt', 'mail/change_plan_body.txt', {}, 'en-us') self.assertEqual(test_lang, get_language())
def expire_account(self): """manages account expiration""" self.deactivate() accounts_logger.info("Account '%s' [id=%d] has expired" % (self.user, self.user.pk)) mail_context = Context({'user': self.user, 'userplan': self}) send_template_email([self.user.email], 'mail/expired_account_title.txt', 'mail/expired_account_body.txt', mail_context, get_user_language(self.user)) account_expired.send(sender=self, user=self.user)
def expire_account(self): """manages account expiration""" self.deactivate() accounts_logger.info("Account '{0}' [id={1}] has expired".format( self.user, self.user.pk)) mail_context = {'user': self.user, 'userplan': self} send_template_email([self.user.email], 'mail/expired_account_title.txt', 'mail/expired_account_body.txt', mail_context, get_user_language(self.user)) account_expired.send(sender=self, user=self.user)
def expire_account(self): """manages account expiration""" self.deactivate() accounts_logger.info( "Account '%s' [id=%d] has expired" % (self.buyer, self.buyer.pk)) mail_context = {'buyer': self.buyer, 'buyer_plan': self} send_template_email([self.buyer.email], 'mail/expired_account_title.txt', 'mail/expired_account_body.txt', mail_context, get_buyer_language(self.buyer)) account_expired.send(sender=self, buyer=self.buyer)
def send_invoice_by_email(self): language_code = get_user_language(self.user) if language_code is not None: translation.activate(language_code) mail_context = {'user': self.user, 'invoice_type': self.get_type_display(), 'invoice_number': self.get_full_number(), 'order': self.order.id, 'url': self.get_absolute_url(), } if language_code is not None: translation.deactivate() send_template_email([self.user.email], 'mail/invoice_created_title.txt', 'mail/invoice_created_body.txt', mail_context, language_code)
def send_invoice_by_email(self): language_code = get_user_language(self.user) if language_code is not None: translation.activate(language_code) mail_context = Context({'user': self.user, 'invoice_type' : unicode(self.get_type_display()), 'invoice_number': self.get_full_number(), 'order' : self.order.id, 'url' : self.get_absolute_url(), }) if language_code is not None: translation.deactivate() send_template_email([self.user.email], 'mail/invoice_created_title.txt', 'mail/invoice_created_body.txt', mail_context, language_code)
def send_invoice_by_email(self): if self.type in getattr(settings, 'PLANS_SEND_EMAILS_DISABLED_INVOICE_TYPES', []): return language_code = get_user_language(self.user) if language_code is not None: translation.activate(language_code) mail_context = {'user': self.user, 'invoice_type': self.get_type_display(), 'invoice_number': self.get_full_number(), 'order': self.order.id, 'order_object': self.order, 'url': self.get_absolute_url(), } if language_code is not None: translation.deactivate() send_template_email([self.user.email], 'mail/invoice_created_title.txt', 'mail/invoice_created_body.txt', mail_context, language_code)
def send_invoice_by_email(self): language_code = get_user_language(self.user) if language_code is not None: translation.activate(language_code) mail_context = Context( { "user": self.user, "invoice_type": self.get_type_display(), "invoice_number": self.get_full_number(), "order": self.order.id, "url": self.get_absolute_url(), } ) if language_code is not None: translation.deactivate() send_template_email( [self.user.email], "mail/invoice_created_title.txt", "mail/invoice_created_body.txt", mail_context, language_code, )
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