def activation_key_expired(self): """get whether the activation key of this profile has expired Determine whether this ``RegistrationProfiel``'s activation key has expired, returning a boolean -- ``True`` if the key has expired. Key expiration is determined by a two-step process: 1. If the inspection status is not ``'accepted'``, the key is set to ``None``. In this case, this method returns ``False`` because these profiles are not treated yet or rejected by inspector. 2. Otherwise, the date the user signed up (which automatically updated in registration acceptance) is incremented by the number of days specified in the setting ``ACCOUNT_ACTIVATION_DAYS`` (which should be the number of days after acceptance during which a user is allowed to activate their account); if the result is less than or equal to the current date, the key has expired and this method return ``True``. """ if self._status != 'accepted': return False expiration_date = datetime.timedelta( days=settings.ACCOUNT_ACTIVATION_DAYS) expired = self.user.date_joined + expiration_date <= datetime_now() return expired
def _set_status(self, value): """set inspection status of this profile Setting status to ``'accepted'`` will generate activation key and update ``date_joined`` attribute to now of associated ``User`` Setting status not to ``'accepted'`` will remove activation key of this profile. """ self._status = value # Automatically generate activation key for accepted profile if value == 'accepted' and not self.activation_key: username = self.user.username self.activation_key = generate_activation_key(username) # update user's date_joined self.user.date_joined = datetime_now() self.user.save() elif value != 'accepted' and self.activation_key: self.activation_key = None