コード例 #1
0
ファイル: widgets_dao.py プロジェクト: AppScale/UserInfuser
def add_notifier(acc_ref):
  logging.error("Had to add a Notifier widget to an account " + str(acc_ref.key().name()))
  new_notifier = Notifier(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_notifier, acc_ref.key().name())
  acc_ref.notifierWidget = new_notifier
  accounts_dao.save(acc_ref)
  return new_notifier
コード例 #2
0
ファイル: widgets_dao.py プロジェクト: AppScale/UserInfuser
def add_rank(acc_ref):
  logging.error("Had to add a Rank widget to an account " + str(acc_ref.key().name()))
  new_rank= Rank(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_rank, acc_ref.key().name())
  acc_ref.rankWidget = new_rank
  accounts_dao.save(acc_ref)
  return new_rank
コード例 #3
0
ファイル: widgets_dao.py プロジェクト: AppScale/UserInfuser
def add_milestones(acc_ref):
  logging.error("Had to add a Milestones widget to an account " + str(acc_ref.key().name()))
  new_milestones = Milestones(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_milestones, acc_ref.key().name())
  acc_ref.milestonesWidget = new_milestones
  accounts_dao.save(acc_ref)
  return new_milestones
コード例 #4
0
ファイル: widgets_dao.py プロジェクト: AppScale/UserInfuser
def add_leader(acc_ref):
  logging.error("Had to add a Leader widget to an account " + str(acc_ref.key().name()))
  new_leader= Leaderboard(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_leader, acc_ref.key().name())
  acc_ref.leaderWidget = new_leader
  accounts_dao.save(acc_ref)
  return new_leader
コード例 #5
0
ファイル: widgets_dao.py プロジェクト: utkarshx/UserInfuser
def add_notifier(acc_ref):
  logging.error("Had to add a Notifier widget to an account " + str(acc_ref.key().name()))
  new_notifier = Notifier(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_notifier, acc_ref.key().name())
  acc_ref.notifierWidget = new_notifier
  accounts_dao.save(acc_ref)
  return new_notifier
コード例 #6
0
ファイル: widgets_dao.py プロジェクト: utkarshx/UserInfuser
def create_widget_for_account_by_email(widget_name, email):
  """
  Creates a new widget for the account, will return widget object if success, else it will return None
  """
  new_widget = None
  property_name = None
  if widget_name == "TrophyCase":
    new_widget = TrophyCase(key_name=email)
    property_name = "trophyWidget"
  elif widget_name == "Rank":
    new_widget = Rank(key_name=email)
    property_name = "rankWidget"
  elif widget_name == "Points":
    new_widget = Points(key_name=email)
    property_name = "pointsWidget"
  elif widget_name == "Notifier":
    new_widget = Notifier(key_name=email)
    property_name = "notifierWidget"
  elif widget_name == "Milestones":
    new_widget = Milestones(key_name=email)
    property_name = "milestoneWidget"
  elif widget_name == "Leaderboard":
    new_widget = Leaderboard(key_name=email)
    property_name = "leaderWidget"
    
  if new_widget!= None:
    memcache_db.save_entity(new_widget, email)
    update_fields = { property_name : new_widget }
    memcache_db.update_fields(email, "Accounts", update_fields)
  else:
    logging.info("Unable to create widget because widget type unknown: " + widget_name)
    
  return new_widget
コード例 #7
0
ファイル: widgets_dao.py プロジェクト: AppScale/UserInfuser
def create_widget_for_account_by_email(widget_name, email):
  """
  Creates a new widget for the account, will return widget object if success, else it will return None
  """
  new_widget = None
  property_name = None
  if widget_name == "TrophyCase":
    new_widget = TrophyCase(key_name=email)
    property_name = "trophyWidget"
  elif widget_name == "Rank":
    new_widget = Rank(key_name=email)
    property_name = "rankWidget"
  elif widget_name == "Points":
    new_widget = Points(key_name=email)
    property_name = "pointsWidget"
  elif widget_name == "Notifier":
    new_widget = Notifier(key_name=email)
    property_name = "notifierWidget"
  elif widget_name == "Milestones":
    new_widget = Milestones(key_name=email)
    property_name = "milestoneWidget"
  elif widget_name == "Leaderboard":
    new_widget = Leaderboard(key_name=email)
    property_name = "leaderWidget"
    
  if new_widget!= None:
    memcache_db.save_entity(new_widget, email)
    update_fields = { property_name : new_widget }
    memcache_db.update_fields(email, "Accounts", update_fields)
  else:
    logging.info("Unable to create widget because widget type unknown: " + widget_name)
    
  return new_widget
コード例 #8
0
ファイル: widgets_dao.py プロジェクト: utkarshx/UserInfuser
def add_milestones(acc_ref):
  logging.error("Had to add a Milestones widget to an account " + str(acc_ref.key().name()))
  new_milestones = Milestones(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_milestones, acc_ref.key().name())
  acc_ref.milestonesWidget = new_milestones
  accounts_dao.save(acc_ref)
  return new_milestones
コード例 #9
0
ファイル: widgets_dao.py プロジェクト: utkarshx/UserInfuser
def add_points(acc_ref):
  logging.error("Had to add a Points widget to an account " + str(acc_ref.key().name()))
  new_points= Points(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_points, acc_ref.key().name())
  acc_ref.pointsWidget = new_points
  accounts_dao.save(acc_ref)
  return new_points
コード例 #10
0
ファイル: widgets_dao.py プロジェクト: AppScale/UserInfuser
def add_points(acc_ref):
  logging.error("Had to add a Points widget to an account " + str(acc_ref.key().name()))
  new_points= Points(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_points, acc_ref.key().name())
  acc_ref.pointsWidget = new_points
  accounts_dao.save(acc_ref)
  return new_points
コード例 #11
0
ファイル: widgets_dao.py プロジェクト: utkarshx/UserInfuser
def add_trophy_case(acc_ref):
  logging.error("Had to add a Trophy widget to an account " + str(acc_ref.key().name()))
  new_trophy_case= TrophyCase(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_trophy_case, acc_ref.key().name())
  acc_ref.trophyWidget = new_trophy_case
  accounts_dao.save(acc_ref)
  return new_trophy_case
コード例 #12
0
ファイル: widgets_dao.py プロジェクト: utkarshx/UserInfuser
def add_leader(acc_ref):
  logging.error("Had to add a Leader widget to an account " + str(acc_ref.key().name()))
  new_leader= Leaderboard(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_leader, acc_ref.key().name())
  acc_ref.leaderWidget = new_leader
  accounts_dao.save(acc_ref)
  return new_leader
コード例 #13
0
ファイル: widgets_dao.py プロジェクト: AppScale/UserInfuser
def add_trophy_case(acc_ref):
  logging.error("Had to add a Trophy widget to an account " + str(acc_ref.key().name()))
  new_trophy_case= TrophyCase(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_trophy_case, acc_ref.key().name())
  acc_ref.trophyWidget = new_trophy_case
  accounts_dao.save(acc_ref)
  return new_trophy_case
コード例 #14
0
ファイル: widgets_dao.py プロジェクト: utkarshx/UserInfuser
def add_rank(acc_ref):
  logging.error("Had to add a Rank widget to an account " + str(acc_ref.key().name()))
  new_rank= Rank(key_name=acc_ref.key().name())
  memcache_db.save_entity(new_rank, acc_ref.key().name())
  acc_ref.rankWidget = new_rank
  accounts_dao.save(acc_ref)
  return new_rank
コード例 #15
0
def create_badge_image(badge_key, perm, acc, imgbuf, img_type):
    badge_img = BadgeImage(key_name=badge_key,
                           permissions=perm,
                           creator=acc,
                           image=imgbuf,
                           imgType=img_type)
    memcache_db.save_entity(badge_img, badge_key)
    return badge_img
コード例 #16
0
ファイル: badges_dao.py プロジェクト: AkilDixon/UserInfuser
def create_badge_image(badge_key, perm, acc, imgbuf, img_type):
  badge_img = BadgeImage(key_name=badge_key,
                        permissions = perm,
                        creator=acc,
                        image=imgbuf,
                        imgType = img_type) 
  memcache_db.save_entity(badge_img, badge_key)
  return badge_img
コード例 #17
0
def get_encrypt_secret():
    secret = memcache_db.get_entity(constants.ENCRYPTION_KEYNAME, "PassPhrase")
    if not secret:
        phrase = gen_random(8)  #must be 8 characters long
        ent = PassPhrase(key_name=constants.ENCRYPTION_KEYNAME, secret=phrase)
        memcache_db.save_entity(ent, constants.ENCRYPTION_KEYNAME)
        return phrase
    else:
        return secret.secret
コード例 #18
0
def get_aes_encrypt_secret():  
  secret = memcache_db.get_entity(constants.AES_ENCRYPTION_KEYNAME, "PassPhrase")
  if not secret: 
    phrase = gen_random(16) # must be 16 chars long
    ent = PassPhrase(key_name=constants.AES_ENCRYPTION_KEYNAME, secret=phrase)
    memcache_db.save_entity(ent, constants.AES_ENCRYPTION_KEYNAME)
    return phrase
  else:
    return secret.secret
コード例 #19
0
def get_update_secret():
  secret = memcache_db.get_entity(constants.UPDATE.SECRET_KEYNAME, "PassPhrase")
  if not secret: 
    phrase = gen_random(16)
    ent = PassPhrase(key_name=constants.UPDATE.SECRET_KEYNAME, secret=phrase)
    memcache_db.save_entity(ent, constants.UPDATE.SECRET_KEYNAME)
    return phrase
  else:
    return secret.secret
コード例 #20
0
def get_update_secret():
    secret = memcache_db.get_entity(constants.UPDATE.SECRET_KEYNAME,
                                    "PassPhrase")
    if not secret:
        phrase = gen_random(16)
        ent = PassPhrase(key_name=constants.UPDATE.SECRET_KEYNAME,
                         secret=phrase)
        memcache_db.save_entity(ent, constants.UPDATE.SECRET_KEYNAME)
        return phrase
    else:
        return secret.secret
コード例 #21
0
ファイル: badges_dao.py プロジェクト: pdaniel-frk/UserInfuser
def create_badge_type(
    badge_key,
    badge_name,
    badge_des,
    account,
    badge_theme,
    img_type,
    imgbuf=None,
    blob_info=None,
    perm="private",
    btype="free",
    stype="blob",
    is_enabled="yes",
):
    """
  Storage is either using a BadgeImage or through the blobstore api for 
  faster and cheaper serving of images
  """
    blob_key = None
    storage_type = "blob"
    badge_image = None
    download_link = ""
    if imgbuf:
        storage_type = "db"
        badge_image = create_badge_image(badge_key, perm, account, imgbuf, img_type)
        download_link = get_full_link("badge/d?bk=" + badge_key)
    elif blob_info:
        storage_type = "blob"
        blob_key = blob_info.key()
        download_link = images.get_serving_url(str(blob_key))
        logging.info("Badge serving url:" + str(download_link))
    else:
        logging.error("Create badge type error: No image to save for badge type")
        raise

    badge = Badges(
        key_name=badge_key,
        name=badge_name,
        altText=badge_des,
        description=badge_des,
        setType=btype,
        isEnabled=is_enabled,
        creator=account,
        permissions=perm,
        storageType=storage_type,
        imageKey=badge_image,
        blobKey=blob_key,
        downloadLink=download_link,
        theme=badge_theme,
    )
    # Store it as a badge image
    memcache_db.save_entity(badge, badge_key)
    return badge
コード例 #22
0
def create_badge_type(badge_key,
                      badge_name,
                      badge_des,
                      account,
                      badge_theme,
                      img_type,
                      imgbuf=None,
                      blob_info=None,
                      perm="private",
                      btype="free",
                      stype="blob",
                      is_enabled="yes"):
    """
  Storage is either using a BadgeImage or through the blobstore api for 
  faster and cheaper serving of images
  """
    blob_key = None
    storage_type = "blob"
    badge_image = None
    download_link = ""
    if imgbuf:
        storage_type = "db"
        badge_image = create_badge_image(badge_key, perm, account, imgbuf,
                                         img_type)
        download_link = get_full_link("badge/d?bk=" + badge_key)
    elif blob_info:
        storage_type = "blob"
        blob_key = blob_info.key()
        download_link = images.get_serving_url(str(blob_key))
    else:
        logging.error(
            "Create badge type error: No image to save for badge type")
        raise

    badge = Badges(key_name=badge_key,
                   name=badge_name,
                   altText=badge_des,
                   description=badge_des,
                   setType=btype,
                   isEnabled=is_enabled,
                   creator=account,
                   permissions=perm,
                   storageType=storage_type,
                   imageKey=badge_image,
                   blobKey=blob_key,
                   downloadLink=download_link,
                   theme=badge_theme)
    # Store it as a badge image
    memcache_db.save_entity(badge, badge_key)
    return badge
コード例 #23
0
ファイル: users_dao.py プロジェクト: utkarshx/UserInfuser
def create_new_user(account_id, user_id):
    """
  Create a new user entity and save
  Look up account with account_id and use in reference when creating new user 
  """
    account_entity = memcache_db.get_entity(account_id, "Accounts")

    user_key = get_user_key(account_id, user_id)
    new_user = Users(key_name=user_key,
                     userid=user_id,
                     isEnabled="yes",
                     accountRef=account_entity)

    try:
        memcache_db.save_entity(new_user, user_key)
    except:
        logging.error("Error saving new user entity")
        return
コード例 #24
0
ファイル: users_dao.py プロジェクト: AppScale/UserInfuser
def create_new_user(account_id, user_id):
  """
  Create a new user entity and save
  Look up account with account_id and use in reference when creating new user 
  """
  account_entity = memcache_db.get_entity(account_id, "Accounts")
  
  user_key= get_user_key(account_id, user_id)
  new_user = Users(key_name=user_key,
                   userid=user_id,
                   isEnabled="yes",
                   accountRef=account_entity)
  
  try:
    memcache_db.save_entity(new_user, user_key)
  except:
    logging.error("Error saving new user entity")
    return  
コード例 #25
0
def create_badge_instance(badge_instance_key,
                          badge_ref,
                          user_ref,
                          isawarded,
                          points,
                          points_needed,
                          perm,
                          link,
                          reason,
                          expiration=None):
    if isawarded == "yes":
        date = datetime.date.today()
        datet = datetime.datetime.now()
    else:
        date = None
        datet = None
    if date:
        new_badge_instance = BadgeInstance(key_name=badge_instance_key,
                                           badgeRef=badge_ref,
                                           userRef=user_ref,
                                           awarded=isawarded,
                                           pointsEarned=points,
                                           pointsRequired=points_needed,
                                           permissions=perm,
                                           downloadLink=link,
                                           reason=reason,
                                           awardDate=date,
                                           awardDateTime=datet)
    else:
        new_badge_instance = BadgeInstance(key_name=badge_instance_key,
                                           badgeRef=badge_ref,
                                           userRef=user_ref,
                                           awarded=isawarded,
                                           pointsEarned=points,
                                           pointsRequired=points_needed,
                                           permissions=perm,
                                           downloadLink=link,
                                           reason=reason)

    memcache_db.save_entity(new_badge_instance, badge_instance_key)

    return new_badge_instance
コード例 #26
0
ファイル: badges_dao.py プロジェクト: AkilDixon/UserInfuser
def create_badge_instance(badge_instance_key, 
                          badge_ref, 
                          user_ref,
                          isawarded, 
                          points, 
                          points_needed, 
                          perm, 
                          link,
                          reason,
                          expiration=None):
  if isawarded == "yes":
    date = datetime.date.today()
    datet = datetime.datetime.now()
  else:
    date = None
    datet = None
  if date:
    new_badge_instance = BadgeInstance(key_name=badge_instance_key,
                                       badgeRef=badge_ref,
                                       userRef=user_ref,
                                       awarded=isawarded,
                                       pointsEarned=points,
                                       pointsRequired=points_needed,
                                       permissions=perm,
                                       downloadLink=link,
                                       reason=reason,
                                       awardDate = date,
                                       awardDateTime = datet)
  else:
    new_badge_instance = BadgeInstance(key_name=badge_instance_key,
                                       badgeRef=badge_ref,
                                       userRef=user_ref,
                                       awarded=isawarded,
                                       pointsEarned=points,
                                       pointsRequired=points_needed,
                                       permissions=perm,
                                       downloadLink=link,
                                       reason=reason)

  memcache_db.save_entity(new_badge_instance, badge_instance_key)
              
  return new_badge_instance
コード例 #27
0
ファイル: test.py プロジェクト: jshankhour1990/userinfuser
    def test1(self):
        key = "*****@*****.**"
        ent_type = "Accounts"
        trophy_case_widget = TrophyCase(key_name=key)
        points_widget = Points(key_name=key)
        rank_widget = Rank(key_name=key)
        newacc = Accounts(
            key_name=key,
            password="******",
            email=key,
            isEnabled="enabled",
            accountType="bronze",
            paymentType="free",
            cookieKey="xxx",
            apiKey="xxx",
            trophyWidget=trophy_case_widget,
            pointsWidget=points_widget,
            rankWidget=rank_widget,
        )
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, key)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.email != key:
            return "Error getting same account. Subtest 1"

        # purge from memcache and get from db
        memcache.delete(key=key, namespace=ent_type)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.email != key:
            return "Error getting same account from DB (no cache). Subtest 2"

        # Set and get new user name
        diction = {"email": "*****@*****.**"}
        ret2 = memcache_db.update_fields(key, ent_type, diction)
        ret2 = sameent.put()
        if ret != ret2:
            self.response.out.write("Error getting key name")
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.email != "*****@*****.**":
            return "Error getting same account after altering entity. Subtest 3"

        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            return "Error deleting entity. Subtest 4"

        return "Success"
コード例 #28
0
ファイル: test.py プロジェクト: gunshor/UserInfuser
    def test1(self):
        key = "*****@*****.**"
        ent_type = "Accounts"
        trophy_case_widget = TrophyCase(key_name=key)
        points_widget = Points(key_name=key)
        rank_widget = Rank(key_name=key)
        newacc = Accounts(key_name=key,
                          password="******",
                          email=key,
                          isEnabled="enabled",
                          accountType="bronze",
                          paymentType="free",
                          cookieKey="xxx",
                          apiKey="xxx",
                          trophyWidget=trophy_case_widget,
                          pointsWidget=points_widget,
                          rankWidget=rank_widget)
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, key)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.email != key:
            return "Error getting same account. Subtest 1"

        # purge from memcache and get from db
        memcache.delete(key=key, namespace=ent_type)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.email != key:
            return "Error getting same account from DB (no cache). Subtest 2"

        # Set and get new user name
        diction = {"email": "*****@*****.**"}
        ret2 = memcache_db.update_fields(key, ent_type, diction)
        ret2 = sameent.put()
        if ret != ret2:
            self.response.out.write("Error getting key name")
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.email != "*****@*****.**":
            return "Error getting same account after altering entity. Subtest 3"

        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            return "Error deleting entity. Subtest 4"

        return "Success"
コード例 #29
0
ファイル: users_dao.py プロジェクト: utkarshx/UserInfuser
def get_or_create_user(account_id, user_id, acc_ref):
    """
  Create the user if it doesnt exist
  """
    user_ref = get_user(account_id, user_id)
    if not user_ref:
        # insert a new user, but lacking optional fields
        user_key = get_user_key(account_id, user_id)
        new_user = Users(key_name=user_key,
                         userid=user_id,
                         isEnabled="yes",
                         accountRef=acc_ref)
        try:
            memcache_db.save_entity(new_user, user_key)
        except:
            logging.error("Error saving user with key %s, userid %s for account %s"%\
                   (user_key, user_id, account_id))
            return None
        user_ref = get_user(account_id, user_id)
        if not user_ref:
            logging.error("Error getting user with key %s, userid %s for account %s"%\
                 (user_key, user_id, account_id))
            return None
    return user_ref
コード例 #30
0
ファイル: users_dao.py プロジェクト: AppScale/UserInfuser
def get_or_create_user(account_id, user_id, acc_ref):
  """
  Create the user if it doesnt exist
  """
  user_ref = get_user(account_id, user_id)
  if not user_ref:
    # insert a new user, but lacking optional fields
    user_key= get_user_key(account_id, user_id)
    new_user = Users(key_name=user_key,
                     userid=user_id,
                     isEnabled="yes",
                     accountRef=acc_ref)
    try:
      memcache_db.save_entity(new_user, user_key)
    except:
      logging.error("Error saving user with key %s, userid %s for account %s"%\
             (user_key, user_id, account_id))
      return None
    user_ref = get_user(account_id, user_id)
    if not user_ref:
      logging.error("Error getting user with key %s, userid %s for account %s"%\
           (user_key, user_id, account_id))
      return None
  return user_ref
コード例 #31
0
ファイル: users_dao.py プロジェクト: utkarshx/UserInfuser
def save_user(user_ref, user_key):
    return memcache_db.save_entity(user_ref, user_key)
コード例 #32
0
ファイル: accounts_dao.py プロジェクト: zkenstein/userinfuser
def create_account(email,
                   password,
                   enable=False,
                   account_type="bronze",
                   payment_type="free"):
    """
  Creates an account with all the other needed dependencies properly initialized.
  """
    """
  Required:
  email = db.EmailProperty(required=True)
  password = db.StringProperty(required=True);
  isEnabled = db.StringProperty(required=True, choices=ACCOUNT_STATUS.RANGE_OF_VALUES)
  accountType = db.StringProperty(required=True, choices=set(ACCOUNT_TYPES)) 
  paymentType = db.StringProperty(required=True,choices=set(PAYMENT_TYPES))
  cookieKey = db.StringProperty(required=True)
  apiKey = db.StringProperty(required=True)
  trophyWidget = db.ReferenceProperty(required=True, reference_class=TrophyCase)
  pointsWidget = db.ReferenceProperty(required=True, reference_class=Points)
  rankWidget = db.ReferenceProperty(required=True, reference_class=Rank)
  """

    new_trophy_case = TrophyCase(key_name=email)
    memcache_db.save_entity(new_trophy_case, email)

    new_rank = Rank(key_name=email)
    memcache_db.save_entity(new_rank, email)

    new_points = Points(key_name=email)
    memcache_db.save_entity(new_points, email)

    new_notifier = Notifier(key_name=email)
    memcache_db.save_entity(new_notifier, email)

    new_leader = Leaderboard(key_name=email)
    memcache_db.save_entity(new_leader, email)

    new_milestones = Milestones(key_name=email)
    memcache_db.save_entity(new_milestones, email)
    """ Generate an API key """
    api_key = str(uuid.uuid4())
    """ Hash the password """
    hashed_password = hashlib.sha1(password).hexdigest()

    enable_account = ACCOUNT_STATUS.PENDING_CREATE
    if enable:
        enable_account = ACCOUNT_STATUS.ENABLED

    newacc = Accounts(key_name=email,
                      email=email,
                      password=hashed_password,
                      isEnabled=enable_account,
                      accountType=account_type,
                      paymentType=payment_type,
                      apiKey=api_key,
                      cookieKey="xxxxxxxxxxxxxx",
                      trophyWidget=new_trophy_case,
                      pointsWidget=new_points,
                      rankWidget=new_rank,
                      notifierWidget=new_notifier,
                      leaderWidget=new_leader,
                      milestoneWidget=new_milestones)

    try:
        memcache_db.save_entity(newacc, email)
    except:
        logging.error("Failed to create account")

    users_dao.create_new_user(email, constants.ANONYMOUS_USER)

    return newacc
コード例 #33
0
ファイル: accounts_dao.py プロジェクト: zkenstein/userinfuser
def save(acc_ref):
    memcache_db.save_entity(acc_ref, acc_ref.key().name())
コード例 #34
0
  def post(self):
    isLocal = os.environ['SERVER_SOFTWARE'].startswith('Dev')
    if not isLocal:
      return
    secret = self.request.get('secret')
    if secret != TOPSECRET:
      bad_args()  
      return
    api_key = self.request.get('apikey')
    account_id = self.request.get('accountid')
    badge_id = self.request.get('badgeid')
    badge_theme = self.request.get('theme')
    if not badge_theme or not badge_id or not account_id or not api_key:
      ret = bad_args()
      self.response.out.write(ret)
      return
    acc = accounts_dao.create_account(account_id, "xxx000xxx", enable=True)

    from serverside.entities import memcache_db
    acc.apiKey = "ABCDEFGHI"
    memcache_db.save_entity(acc, account_id)
    # remote paths are used because the SDK cannot fetch from itself 
    # because it is single threaded and would cause deadlock
    badge_list = ["http://cdn2.iconfinder.com/data/icons/crystalproject/128x128/apps/keditbookmarks.png",
                  "http://cdn4.iconfinder.com/data/icons/Merry_Christmas_by_jj_maxer/golden%20star.png",
                  "http://cdn1.iconfinder.com/data/icons/CrystalClear/128x128/actions/bookmark.png",
                  "http://cdn4.iconfinder.com/data/icons/token/Token,%20128x128,%20PNG/Star-Favorites.png",
                  "http://cdn4.iconfinder.com/data/icons/supermario/PNG/Star.png",
                  "http://cdn5.iconfinder.com/data/icons/SOPHISTIQUE/graphics/png/128/star.png",
                  "http://cdn3.iconfinder.com/data/icons/humano2/128x128/actions/bookmark-new.png",
                  "http://cdn2.iconfinder.com/data/icons/web2/Icons/Favorite_128x128.png",
                  "http://cdn5.iconfinder.com/data/icons/water_gaming_pack/128/star_wars_battlefront.png",
                  "http://cdn2.iconfinder.com/data/icons/spaceinvaders/blackhole.png"]
    # Create ten badges
    for ii in range(0,10):
      newbadge = badge_list[ii]

      try:
        result = urlfetch.fetch(url=newbadge)
      except:
        error("Is one of the badges no longer available? Check %s"%newbadge)
        return
 
      imgbuf = result.content
      if  len(imgbuf) == 0:
        error("One of the downloads did not work! url:%s"%newbadge)
        return
      badge_key = badges_dao.create_badge_key(account_id, badge_theme, str(ii), "private")
      # Create the file
      file_name = files.blobstore.create(mime_type='application/octet-stream')

      # Open the file and write to it
      with files.open(file_name, 'a') as f:
        f.write(imgbuf)

      # Finalize the file. Do this before attempting to read it.
      files.finalize(file_name)

      # Get the file's blob key
      blob_key = files.blobstore.get_blob_key(file_name)
      blob_info = blobstore.BlobInfo.get(blob_key)

      # TODO test with different types of images
      badges_dao.create_badge_type(badge_key,
                      str(ii),
                      "badge description",
                      acc,
                      badge_theme,
                      "png",
                      blob_info=blob_info)
      # End of for loop
    self.response.out.write(success_ret())
    return        
コード例 #35
0
ファイル: test.py プロジェクト: gunshor/UserInfuser
    def test4(self):
        account_key = "[email protected]"
        trophy_case_widget = TrophyCase(key_name=account_key)
        points_widget = Points(key_name=account_key)
        rank_widget = Rank(key_name=account_key)
        newacc = Accounts(key_name=account_key,
                          password="******",
                          email="[email protected]",
                          isEnabled="enabled",
                          accountType="bronze",
                          paymentType="free",
                          apiKey="xxx",
                          cookieKey="xxx",
                          trophyWidget=trophy_case_widget,
                          pointsWidget=points_widget,
                          rankWidget=rank_widget)
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass

        # Save an account
        ret = memcache_db.save_entity(newacc, account_key)

        user_key = "testuser1"
        newuser = Users(key_name=user_key,
                        userid=user_key,
                        isEnabled="yes",
                        accountRef=newacc,
                        tags=user_key)
        try:
            memcache_db.delete_entity(newacc, user_key)
        except Exception:
            pass
        # Save a user
        ret = memcache_db.save_entity(newacc, user_key)

        # Create a Badge Type
        badge_key = "testbadge1"
        badgetype = Badges(key_name=badge_key,
                           name="badge1",
                           description=badge_key,
                           altText="a really cool badge",
                           setType="free",
                           isEnabled="yes",
                           creator=newacc,
                           permissions="private",
                           storageType="blob",
                           blobKey="xxxx")
        try:
            memcache_db.delete_entity(badgetype, badge_key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(badgetype, badge_key)

        key = "testbadgeinstance1"
        ent_type = "BadgeInstance"
        badgeinstance = BadgeInstance(key_name=key,
                                      awarded="no",
                                      badgeRef=badgetype,
                                      userRef=newuser,
                                      pointRequired=10,
                                      pointsEarned=0,
                                      permissions="private")
        try:
            memcache_db.delete_entity(badgeinstance, key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(badgeinstance, key)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.awarded != "no":
            return "Error getting same entity. Subtest 1"

        # purge from memcache and get from db
        memcache.delete(key=key, namespace=ent_type)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.awarded != "no":
            return "Error getting same entity from DB (no cache). Subtest 2"

        # Set and get new user name
        diction = {"pointsRequired": 11, "awarded": "no"}
        inc_diction = {"pointsEarned": 5}
        ret2 = memcache_db.update_fields(key, ent_type, diction, inc_diction)
        ret2 = sameent.put()
        if ret != ret2:
            self.response.out.write("Error getting key name")
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.pointsRequired!= 11 \
              or sameent.pointsEarned != 5:
            return "Error getting same entity after altering entity. Subtest 3"

        # Cleanup
        try:
            memcache_db.delete_entity(badgeinstance, key)
        except Exception:
            return "Error deleting entity. Subtest 4"
        try:
            memcache_db.delete_entity(newacc, account_key)
        except Exception:
            return "Error deleting entity. Subtest 4"
        try:
            memcache_db.delete_entity(badgetype, badge_key)
        except Exception:
            return "Error deleting entity. Subtest 4"
        try:
            memcache_db.delete_entity(newuser, user_key)
        except Exception:
            return "Error deleting entity. Subtest 4"

        return "Success"
コード例 #36
0
ファイル: test.py プロジェクト: gunshor/UserInfuser
    def test3(self):
        account_key = "[email protected]"
        trophy_case_widget = TrophyCase(key_name=account_key)
        points_widget = Points(key_name=account_key)
        rank_widget = Rank(key_name=account_key)
        newacc = Accounts(key_name=account_key,
                          password="******",
                          email="[email protected]",
                          isEnabled="enabled",
                          accountType="bronze",
                          paymentType="free",
                          apiKey="xxx",
                          cookieKey="xxx",
                          trophyWidget=trophy_case_widget,
                          pointsWidget=points_widget,
                          rankWidget=rank_widget)
        try:
            memcache_db.delete_entity(newacc, account_key)
        except Exception:
            pass

        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, account_key)

        key = "testuser1"
        ent_type = "Users"
        newacc = Users(key_name=key,
                       userid=key,
                       isEnabled="yes",
                       accountRef=newacc,
                       tags=key)
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, key)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.tags != key:
            return "Error getting same entity. Subtest 1"

        # purge from memcache and get from db
        memcache.delete(key=key, namespace=ent_type)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.tags != key:
            return "Error getting same entity from DB (no cache). Subtest 2"

        # Set and get new user name
        diction = {"tags": "goodbye:hello"}
        ret2 = memcache_db.update_fields(key, ent_type, diction)
        ret2 = sameent.put()
        if ret != ret2:
            self.response.out.write("Error getting key name")
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.tags != "goodbye:hello":
            return "Error getting same entity after altering entity. Subtest 3"

        try:
            memcache_db.delete_entity(newacc, account_key)
            memcache_db.delete_entity(sameent, key)
        except Exception:
            return "Error deleting entity. Subtest 4"

        return "Success"
コード例 #37
0
ファイル: accounts_dao.py プロジェクト: AppScale/UserInfuser
def create_account(email, 
                   password, 
                   enable=False,
                   account_type="bronze",
                   payment_type="free"):
  """
  Creates an account with all the other needed dependencies properly initialized.
  """
  
  
  """
  Required:
  email = db.EmailProperty(required=True)
  password = db.StringProperty(required=True);
  isEnabled = db.StringProperty(required=True, choices=ACCOUNT_STATUS.RANGE_OF_VALUES)
  accountType = db.StringProperty(required=True, choices=set(ACCOUNT_TYPES)) 
  paymentType = db.StringProperty(required=True,choices=set(PAYMENT_TYPES))
  cookieKey = db.StringProperty(required=True)
  apiKey = db.StringProperty(required=True)
  trophyWidget = db.ReferenceProperty(required=True, reference_class=TrophyCase)
  pointsWidget = db.ReferenceProperty(required=True, reference_class=Points)
  rankWidget = db.ReferenceProperty(required=True, reference_class=Rank)
  """
  
  new_trophy_case = TrophyCase(key_name=email)
  memcache_db.save_entity(new_trophy_case, email)

  new_rank = Rank(key_name=email)
  memcache_db.save_entity(new_rank, email)

  new_points = Points(key_name=email)
  memcache_db.save_entity(new_points, email)

  new_notifier = Notifier(key_name=email)
  memcache_db.save_entity(new_notifier, email)
 
  new_leader = Leaderboard(key_name=email)
  memcache_db.save_entity(new_leader, email)
  
  new_milestones = Milestones(key_name=email)
  memcache_db.save_entity(new_milestones, email)
  
  """ Generate an API key """
  api_key = str(uuid.uuid4())
  
  """ Hash the password """
  hashed_password = hashlib.sha1(password).hexdigest()
  
  enable_account = ACCOUNT_STATUS.PENDING_CREATE
  if enable:
    enable_account = ACCOUNT_STATUS.ENABLED
  
  newacc = Accounts(key_name = email,
                      email = email,
                      password = hashed_password,
                      isEnabled = enable_account,
                      accountType = account_type,
                      paymentType = payment_type,
                      apiKey = api_key,
                      cookieKey = "xxxxxxxxxxxxxx",
                      trophyWidget = new_trophy_case,
                      pointsWidget = new_points,
                      rankWidget = new_rank,
                      notifierWidget = new_notifier,
                      leaderWidget = new_leader,
                      milestoneWidget = new_milestones)
  
  try:
    memcache_db.save_entity(newacc, email)
  except:
    logging.error("Failed to create account")
 
  users_dao.create_new_user(email, constants.ANONYMOUS_USER)
 
  return newacc
コード例 #38
0
ファイル: test.py プロジェクト: jshankhour1990/userinfuser
    def test4(self):
        account_key = "[email protected]"
        trophy_case_widget = TrophyCase(key_name=account_key)
        points_widget = Points(key_name=account_key)
        rank_widget = Rank(key_name=account_key)
        newacc = Accounts(
            key_name=account_key,
            password="******",
            email="[email protected]",
            isEnabled="enabled",
            accountType="bronze",
            paymentType="free",
            apiKey="xxx",
            cookieKey="xxx",
            trophyWidget=trophy_case_widget,
            pointsWidget=points_widget,
            rankWidget=rank_widget,
        )
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass

        # Save an account
        ret = memcache_db.save_entity(newacc, account_key)

        user_key = "testuser1"
        newuser = Users(key_name=user_key, userid=user_key, isEnabled="yes", accountRef=newacc, tags=user_key)
        try:
            memcache_db.delete_entity(newacc, user_key)
        except Exception:
            pass
        # Save a user
        ret = memcache_db.save_entity(newacc, user_key)

        # Create a Badge Type
        badge_key = "testbadge1"
        badgetype = Badges(
            key_name=badge_key,
            name="badge1",
            description=badge_key,
            altText="a really cool badge",
            setType="free",
            isEnabled="yes",
            creator=newacc,
            permissions="private",
            storageType="blob",
            blobKey="xxxx",
        )
        try:
            memcache_db.delete_entity(badgetype, badge_key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(badgetype, badge_key)

        key = "testbadgeinstance1"
        ent_type = "BadgeInstance"
        badgeinstance = BadgeInstance(
            key_name=key,
            awarded="no",
            badgeRef=badgetype,
            userRef=newuser,
            pointRequired=10,
            pointsEarned=0,
            permissions="private",
        )
        try:
            memcache_db.delete_entity(badgeinstance, key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(badgeinstance, key)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.awarded != "no":
            return "Error getting same entity. Subtest 1"

        # purge from memcache and get from db
        memcache.delete(key=key, namespace=ent_type)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.awarded != "no":
            return "Error getting same entity from DB (no cache). Subtest 2"

        # Set and get new user name
        diction = {"pointsRequired": 11, "awarded": "no"}
        inc_diction = {"pointsEarned": 5}
        ret2 = memcache_db.update_fields(key, ent_type, diction, inc_diction)
        ret2 = sameent.put()
        if ret != ret2:
            self.response.out.write("Error getting key name")
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.pointsRequired != 11 or sameent.pointsEarned != 5:
            return "Error getting same entity after altering entity. Subtest 3"

        # Cleanup
        try:
            memcache_db.delete_entity(badgeinstance, key)
        except Exception:
            return "Error deleting entity. Subtest 4"
        try:
            memcache_db.delete_entity(newacc, account_key)
        except Exception:
            return "Error deleting entity. Subtest 4"
        try:
            memcache_db.delete_entity(badgetype, badge_key)
        except Exception:
            return "Error deleting entity. Subtest 4"
        try:
            memcache_db.delete_entity(newuser, user_key)
        except Exception:
            return "Error deleting entity. Subtest 4"

        return "Success"
コード例 #39
0
ファイル: accounts_dao.py プロジェクト: AppScale/UserInfuser
def save(acc_ref):
  memcache_db.save_entity(acc_ref, acc_ref.key().name())
コード例 #40
0
ファイル: test.py プロジェクト: jshankhour1990/userinfuser
    def test3(self):
        account_key = "[email protected]"
        trophy_case_widget = TrophyCase(key_name=account_key)
        points_widget = Points(key_name=account_key)
        rank_widget = Rank(key_name=account_key)
        newacc = Accounts(
            key_name=account_key,
            password="******",
            email="[email protected]",
            isEnabled="enabled",
            accountType="bronze",
            paymentType="free",
            apiKey="xxx",
            cookieKey="xxx",
            trophyWidget=trophy_case_widget,
            pointsWidget=points_widget,
            rankWidget=rank_widget,
        )
        try:
            memcache_db.delete_entity(newacc, account_key)
        except Exception:
            pass

        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, account_key)

        key = "testuser1"
        ent_type = "Users"
        newacc = Users(key_name=key, userid=key, isEnabled="yes", accountRef=newacc, tags=key)
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, key)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.tags != key:
            return "Error getting same entity. Subtest 1"

        # purge from memcache and get from db
        memcache.delete(key=key, namespace=ent_type)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.tags != key:
            return "Error getting same entity from DB (no cache). Subtest 2"

        # Set and get new user name
        diction = {"tags": "goodbye:hello"}
        ret2 = memcache_db.update_fields(key, ent_type, diction)
        ret2 = sameent.put()
        if ret != ret2:
            self.response.out.write("Error getting key name")
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.tags != "goodbye:hello":
            return "Error getting same entity after altering entity. Subtest 3"

        try:
            memcache_db.delete_entity(newacc, account_key)
            memcache_db.delete_entity(sameent, key)
        except Exception:
            return "Error deleting entity. Subtest 4"

        return "Success"
コード例 #41
0
ファイル: users_dao.py プロジェクト: AppScale/UserInfuser
def save_user(user_ref, user_key):
  return memcache_db.save_entity(user_ref, user_key)
コード例 #42
0
ファイル: test.py プロジェクト: gunshor/UserInfuser
    def test2(self):
        account_key = "raj"
        trophy_case_widget = TrophyCase(key_name=account_key)
        points_widget = Points(key_name=account_key)
        rank_widget = Rank(key_name=account_key)
        newacc = Accounts(key_name=account_key,
                          password="******",
                          email="[email protected]",
                          isEnabled="enabled",
                          accountType="bronze",
                          paymentType="free",
                          apiKey="xxx",
                          cookieKey="xxx",
                          trophyWidget=trophy_case_widget,
                          pointsWidget=points_widget,
                          rankWidget=rank_widget)
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass

        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, account_key)

        key = "testbadge1"
        ent_type = "Badges"
        newacc = Badges(key_name=key,
                        name="badge1",
                        description=key,
                        altText="a really cool badge",
                        setType="free",
                        isEnabled="yes",
                        creator=newacc,
                        permissions="private",
                        blobKey="xxxx",
                        storageType="blob")
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, key)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.description != key:
            return "Error getting same account. Subtest 1"

        # purge from memcache and get from db
        memcache.delete(key=key, namespace=ent_type)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.description != key:
            return "Error getting same account from DB (no cache). Subtest 2"

        # Set and get new user name
        diction = {"isEnabled": "no", "permissions": "public"}
        ret2 = memcache_db.update_fields(key, ent_type, diction)
        ret2 = sameent.put()
        if ret != ret2:
            self.response.out.write("Error getting key name")
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.isEnabled != "no" or sameent.permissions != "public":
            return "Error getting same account after altering entity. Subtest 3"

        try:
            memcache_db.delete_entity(sameent, key)
        except Exception:
            return "Error deleting entity. Subtest 4"

        try:
            memcache_db.delete_entity(newacc, account_key)
        except Exception:
            return "Error deleting account. Subtest 5"

        return "Success"
コード例 #43
0
ファイル: test.py プロジェクト: jshankhour1990/userinfuser
    def test2(self):
        account_key = "raj"
        trophy_case_widget = TrophyCase(key_name=account_key)
        points_widget = Points(key_name=account_key)
        rank_widget = Rank(key_name=account_key)
        newacc = Accounts(
            key_name=account_key,
            password="******",
            email="[email protected]",
            isEnabled="enabled",
            accountType="bronze",
            paymentType="free",
            apiKey="xxx",
            cookieKey="xxx",
            trophyWidget=trophy_case_widget,
            pointsWidget=points_widget,
            rankWidget=rank_widget,
        )
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass

        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, account_key)

        key = "testbadge1"
        ent_type = "Badges"
        newacc = Badges(
            key_name=key,
            name="badge1",
            description=key,
            altText="a really cool badge",
            setType="free",
            isEnabled="yes",
            creator=newacc,
            permissions="private",
            blobKey="xxxx",
            storageType="blob",
        )
        try:
            memcache_db.delete_entity(newacc, key)
        except Exception:
            pass
        # Save and get saved ent
        ret = memcache_db.save_entity(newacc, key)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.description != key:
            return "Error getting same account. Subtest 1"

        # purge from memcache and get from db
        memcache.delete(key=key, namespace=ent_type)
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.description != key:
            return "Error getting same account from DB (no cache). Subtest 2"

        # Set and get new user name
        diction = {"isEnabled": "no", "permissions": "public"}
        ret2 = memcache_db.update_fields(key, ent_type, diction)
        ret2 = sameent.put()
        if ret != ret2:
            self.response.out.write("Error getting key name")
        sameent = memcache_db.get_entity(key, ent_type)
        if sameent.isEnabled != "no" or sameent.permissions != "public":
            return "Error getting same account after altering entity. Subtest 3"

        try:
            memcache_db.delete_entity(sameent, key)
        except Exception:
            return "Error deleting entity. Subtest 4"

        try:
            memcache_db.delete_entity(newacc, account_key)
        except Exception:
            return "Error deleting account. Subtest 5"

        return "Success"