Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
 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))
Exemple #5
0
    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))
Exemple #6
0
    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),
        )
Exemple #7
0
 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())
Exemple #8
0
    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)
Exemple #9
0
    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)
Exemple #10
0
    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)
Exemple #11
0
    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)
Exemple #12
0
    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)
Exemple #13
0
    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)
Exemple #14
0
    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,
        )
Exemple #15
0
    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