コード例 #1
0
def createProfile(
    user_key, program_key, profile_properties, models=types.MELANGE_MODELS):
  """Creates a new profile entity based on the supplied properties.

  Args:
    user_key: User key for the profile to register.
    program: Program key.
    profile_properties: A dict mapping profile properties to their values.
    models: instance of types.Models that represent appropriate models.

  Returns:
    RichBool whose value is set to True if profile has been successfully
    created. In that case, extra part points to the newly created profile
    entity. Otherwise, RichBool whose value is set to False and extra part is
    a string that represents the reason why the action could not be completed.
  """
  # check if a profile entity for the user and the program already exists.
  profile_key = getProfileKey(
      program_model.getSponsorId(program_key),
      program_model.getProgramId(program_key),
      user_key.id(), models=models)

  if profile_key.get():
    return rich_bool.RichBool(False, PROFILE_EXISTS)
  else:
    try:
      program_key = ndb.Key.from_old_key(program_key)
      profile = models.ndb_profile_model(
          key=profile_key, program=program_key, **profile_properties)
      profile.put()
      return rich_bool.RichBool(True, profile)
    except datastore_errors.BadValueError as e:
      return rich_bool.RichBool(False, str(e))
コード例 #2
0
ファイル: request_data.py プロジェクト: rhyolight/nupic.son
  def ndb_profile(self):
    """Returns the ndb_profile property."""
    if not self._isSet(self._ndb_profile):
      if not self.ndb_user or not self.program:
        self._ndb_profile = None
      else:
        sponsor_id = program_model.getSponsorId(self.program.key())
        program_id = program_model.getProgramId(self.program.key())
        user_id = self.ndb_user.user_id

        self._ndb_profile = profile_logic.getProfileKey(
            sponsor_id, program_id, user_id, models=self.models).get()
    return self._ndb_profile