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
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))
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)