def change_email(self, email): """ Changes the email address for a user. A user needs to verify this new email address before it becomes active. By storing the new email address in a temporary field -- ``temporary_email`` -- we are able to set this email address after the user has verified it by clicking on the verification URI in the email. This email gets send out by ``send_verification_email``. :param email: The new email address that the user wants to use. """ self.email_unconfirmed = email salt, hash = generate_sha1(self.username) self.email_confirmation_key = hash self.email_confirmation_key_created = get_datetime_now() self.save() # Send email for activation self.send_confirmation_email() return self
def activation_key_expired(self): """ Checks if activation key is expired. Returns ``True`` when the ``activation_key`` of the user is expired and ``False`` if the key is still valid. The key is expired when it's set to the value defined in ``ACCOUNTS_ACTIVATED`` or ``activation_key_created`` is beyond the amount of days defined in ``ACCOUNTS_ACTIVATION_DAYS``. """ expiration_days = datetime.timedelta(days=accounts_settings.ACCOUNTS_ACTIVATION_DAYS) expiration_date = self.user.date_joined + expiration_days if self.activation_key == accounts_settings.ACCOUNTS_ACTIVATED: return True if get_datetime_now() >= expiration_date: return True return False