Example #1
0
        def txn():
            key_name = cls.get_key_name(user_name)
            user = cls.get_by_key_name(key_name)
            if user:
                from kay.auth import DuplicateKeyError
                raise DuplicateKeyError(
                    _(u"This user name is already taken."
                      " Please choose another user name."))
            salt = crypto.gen_salt()
            activation_key = crypto.sha1(salt + user_name).hexdigest()
            profile_key = db.Key.from_path(cls.kind(), key_name,
                                           RegistrationProfile.kind(),
                                           activation_key)

            expiration_date = datetime.datetime.now() + \
                datetime.timedelta(seconds=settings.ACCOUNT_ACTIVATION_DURATION)
            taskqueue.add(url=url_for('_internal/expire_registration',
                                      registration_key=str(profile_key)),
                          eta=expiration_date,
                          transactional=True)
            taskqueue.add(url=url_for('_internal/send_registration_confirm',
                                      registration_key=str(profile_key)),
                          transactional=True)
            user = cls(key_name=key_name,
                       activated=False,
                       user_name=user_name,
                       password=crypto.gen_pwhash(password),
                       email=email)
            profile = RegistrationProfile(user=user,
                                          parent=user,
                                          key_name=activation_key)
            db.put([profile, user])
            return user
Example #2
0
    def txn():
      key_name = cls.get_key_name(user_name)
      user = cls.get_by_key_name(key_name)
      if user:
        from kay.auth import DuplicateKeyError
        raise DuplicateKeyError(_(u"This user name is already taken."
                                  " Please choose another user name."))
      salt = crypto.gen_salt()
      activation_key = crypto.sha1(salt+user_name).hexdigest()
      profile_key = db.Key.from_path(cls.kind(), key_name,
                                     RegistrationProfile.kind(),
                                     activation_key)

      expiration_date = datetime.datetime.now() + \
          datetime.timedelta(seconds=settings.ACCOUNT_ACTIVATION_DURATION)
      taskqueue.add(url=url_for('_internal/expire_registration',
                                registration_key=str(profile_key)),
                    eta=expiration_date, transactional=True)
      taskqueue.add(url=url_for('_internal/send_registration_confirm',
                                registration_key=str(profile_key)),
                    transactional=True)
      user = cls(key_name=key_name, activated=False, user_name=user_name,
                 password=crypto.gen_pwhash(password), email=email)
      profile = RegistrationProfile(user=user, parent=user,
                                    key_name=activation_key)
      db.put([profile, user])
      return user
Example #3
0
 def get(self, activation_key):
   account = RegistrationProfile.activate_user(activation_key)
   context = {'account': account,
              'expiration_duration': settings.ACCOUNT_ACTIVATION_DURATION}
   for key, value in self.extra_context.items():
     context[key] = callable(value) and value() or value
   return render_to_response(self.template_name, context)
Example #4
0
 def get(self, activation_key):
     account = RegistrationProfile.activate_user(activation_key)
     context = {
         'account': account,
         'expiration_duration': settings.ACCOUNT_ACTIVATION_DURATION
     }
     for key, value in self.extra_context.items():
         context[key] = callable(value) and value() or value
     return render_to_response(self.template_name, context)