def create_user(name, email, user_id, key=None):
    """
    Takes an optional key and a name, email, and user_id to create a user
    If key is not provided, one will be created from the user_id
    """
    if not name:
        raise ValueError("name is required")
    if not email:
        raise ValueError("email is required")
    if not user_id:
        raise ValueError("user_id is required")
    if not key:
        # Make our own dang key!
        key = User.build_key(user_id)

    kwargs = {
        'name': name,
        'email': email,
        'user_id': user_id
    }
    user = User(key=key, **kwargs)

    user.put()

    return user
Exemple #2
0
 def get_superadmin_index_data(self):
     paid_survey_users, all_quiz_attempts, paid_quiz_attempts = yield (
         User.get_paid_survey_users().fetch_async(),
         QuizAttempt.get_all_attempts().fetch_async(),
         QuizAttempt.get_non_trial_attempts().fetch_async()
     )
     all_users = yield ndb.get_multi_async([User.build_key(attempt.user_id) for attempt in all_quiz_attempts])
     raise ndb.Return((paid_survey_users, all_quiz_attempts, all_users, paid_quiz_attempts))
Exemple #3
0
 def get_superadmin_index_data(self):
     paid_survey_users, all_quiz_attempts, paid_quiz_attempts = yield (
         User.get_paid_survey_users().fetch_async(),
         QuizAttempt.get_all_attempts().fetch_async(),
         QuizAttempt.get_non_trial_attempts().fetch_async()
     )
     all_users = []
     quiz_attempt_dicts = []
     for attempt in all_quiz_attempts:
         user = User.build_key(attempt.user_id).get()
         quiz_attempt_dicts.append({
             'attempt': attempt,
             'user': user
         })
         all_users.append(user)
     raise ndb.Return((paid_survey_users, quiz_attempt_dicts, all_users, paid_quiz_attempts))
def get_or_create_user(name, email, user_id):
    """
    Gets the user from the datastore, or creates them (with a domain method)
     if they don't exist
    """
    if not name:
        raise ValueError("name is required")
    if not email:
        raise ValueError("email is required")
    if not user_id:
        raise ValueError("user_id is required")

    key = User.build_key(user_id)

    user = key.get()

    if not user:
        user = create_user(name, email, user_id, key=key)

    return user
 def test_build_key_returns_key(self):
     key = User.build_key(self.user_id)
     self.assertIsInstance(key, ndb.Key)
     self.assertEqual(self.user_id, key.id())
 def test_build_key_requires_user_id(self):
     with self.assertRaises(ValueError):
         User.build_key(None)